ByteAddressBuffer ssbo : register(t1); static uint3 gl_GlobalInvocationID; struct SPIRV_Cross_Input { uint3 gl_GlobalInvocationID : SV_DispatchThreadID; }; void Load(uint size) { int byteAddrTemp = int(size >> uint(2)); uint4 data = uint4(ssbo.Load(byteAddrTemp * 4 + 0), ssbo.Load((byteAddrTemp + 1) * 4 + 0), ssbo.Load((byteAddrTemp + 2) * 4 + 0), ssbo.Load((byteAddrTemp + 3) * 4 + 0)); } void _main(uint3 id) { uint param = 4u; Load(param); } void comp_main() { uint3 id = gl_GlobalInvocationID; uint3 param = id; _main(param); } [numthreads(1, 1, 1)] void main(SPIRV_Cross_Input stage_input) { gl_GlobalInvocationID = stage_input.gl_GlobalInvocationID; comp_main(); }