87de951105
When the name of an alias global variable collides with a global declaration, MSL would emit inconsistent names, sometimes with the naming fix, sometimes without, because names were being tracked in two separate meta blocks. Fix this by always redirecting parameter naming to the original base variable as necessary.
32 lines
746 B
Plaintext
32 lines
746 B
Plaintext
#pragma clang diagnostic ignored "-Wmissing-prototypes"
|
|
|
|
#include <metal_stdlib>
|
|
#include <simd/simd.h>
|
|
|
|
using namespace metal;
|
|
|
|
struct ssbo
|
|
{
|
|
uint _data[1];
|
|
};
|
|
|
|
void Load(thread const uint& size, const device ssbo& ssbo_1)
|
|
{
|
|
int byteAddrTemp = int(size >> uint(2));
|
|
uint4 data = uint4(ssbo_1._data[byteAddrTemp], ssbo_1._data[byteAddrTemp + 1], ssbo_1._data[byteAddrTemp + 2], ssbo_1._data[byteAddrTemp + 3]);
|
|
}
|
|
|
|
void _main(thread const uint3& id, const device ssbo& ssbo_1)
|
|
{
|
|
uint param = 4u;
|
|
Load(param, ssbo_1);
|
|
}
|
|
|
|
kernel void main0(const device ssbo& ssbo_1 [[buffer(1)]], uint3 gl_GlobalInvocationID [[thread_position_in_grid]])
|
|
{
|
|
uint3 id = gl_GlobalInvocationID;
|
|
uint3 param = id;
|
|
_main(param, ssbo_1);
|
|
}
|
|
|