diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/glsl/layout-scalar-qualifier.slang | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/tests/glsl/layout-scalar-qualifier.slang b/tests/glsl/layout-scalar-qualifier.slang new file mode 100644 index 000000000..ac7b34d8b --- /dev/null +++ b/tests/glsl/layout-scalar-qualifier.slang @@ -0,0 +1,39 @@ +//TEST:SIMPLE(filecheck=CHECK): -allow-glsl -target spirv-asm + +RWStructuredBuffer<uint> result; + +// Test GLSL uniform block with scalar layout qualifier +// CHECK: SLANG_ParameterGroup_Data_uniform_natural +// CHECK: OpMemberDecorate %SLANG_ParameterGroup_Data_uniform_natural 0 Offset 0 +// CHECK: OpMemberDecorate %SLANG_ParameterGroup_Data_uniform_natural 1 Offset 4 +layout(scalar) uniform Data_uniform { + uint a; + uint3 b; +}; + +// Test HLSL cbuffer with scalar layout qualifier +// CHECK: SLANG_ParameterGroup_Data_cbuffer_natural +// CHECK: OpMemberDecorate %SLANG_ParameterGroup_Data_cbuffer_natural 0 Offset 0 +// CHECK: OpMemberDecorate %SLANG_ParameterGroup_Data_cbuffer_natural 1 Offset 4 +layout(scalar) cbuffer Data_cbuffer { + uint c; + uint3 d; +}; + +// Reference: ScalarDataLayout should work correctly +struct Data { + uint e; + uint3 f; +}; +ConstantBuffer<Data, ScalarDataLayout> Data_ConstantBufferScalarDataLayout; + +[shader("compute")] +[numthreads(1,1,1)] +void computeMain(uint3 threadId : SV_DispatchThreadID) +{ + uint index = threadId.x; + result[index] = + a + b.x + + c + d.y + + Data_ConstantBufferScalarDataLayout.e + Data_ConstantBufferScalarDataLayout.f.z; +}
\ No newline at end of file |
