yum-mirror/slang

Making it easier to work with shaders

git clone https://git.yummers.dev/yum-mirror/slang

pdeayton-nvFix GLSL memory layout qualifiers not applied to uniform buffers or cbuffers (#7740)299eb0c88

master
1.2 KiB39 linesraw
1//TEST:SIMPLE(filecheck=CHECK): -allow-glsl -target spirv-asm
2
3RWStructuredBuffer<uint> result;
4
5// Test GLSL uniform block with scalar layout qualifier
6// CHECK: SLANG_ParameterGroup_Data_uniform_natural
7// CHECK: OpMemberDecorate %SLANG_ParameterGroup_Data_uniform_natural 0 Offset 0
8// CHECK: OpMemberDecorate %SLANG_ParameterGroup_Data_uniform_natural 1 Offset 4
9layout(scalar) uniform Data_uniform {
10    uint a;
11    uint3 b;
12};
13
14// Test HLSL cbuffer with scalar layout qualifier  
15// CHECK: SLANG_ParameterGroup_Data_cbuffer_natural
16// CHECK: OpMemberDecorate %SLANG_ParameterGroup_Data_cbuffer_natural 0 Offset 0
17// CHECK: OpMemberDecorate %SLANG_ParameterGroup_Data_cbuffer_natural 1 Offset 4
18layout(scalar) cbuffer Data_cbuffer {
19    uint c;
20    uint3 d;
21};
22
23// Reference: ScalarDataLayout should work correctly
24struct Data {
25    uint e;
26    uint3 f;
27};
28ConstantBuffer<Data, ScalarDataLayout> Data_ConstantBufferScalarDataLayout;
29
30[shader("compute")]
31[numthreads(1,1,1)]
32void computeMain(uint3 threadId : SV_DispatchThreadID)
33{
34    uint index = threadId.x;
35    result[index] = 
36        a + b.x +
37        c + d.y +
38        Data_ConstantBufferScalarDataLayout.e + Data_ConstantBufferScalarDataLayout.f.z;
39}