yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
04e7327a2
master
1//TEST:SIMPLE(filecheck=CHECK): -target spirv -fvk-use-entrypoint-name -enable-experimental-passes 2 3// This test checks that spirv-opt is running SROA (scalar replacement of aggregates) to 4// hoist out all member variables of a struct. If this sucsessfully runs, we should not see 5// any `OpCompositeConstruct` of our `%Data` struct. 6// Note: SROA will only run for 100 elements if spirv-opt does not manually set the spirv-opt `scalar-replacement` option 7 8//CHECK-NOT: OpCompositeConstruct %Data 9struct Data 10{ 11 uint data0; 12 uint data1; 13 uint data2; 14}; 15 16static Data globalVar; 17ByteAddressBuffer bab; 18RWStructuredBuffer<uint> outputBuffer; 19 20struct Payload_t 21{ 22 uint dataOut; 23}; 24 25[shader("anyhit")] 26void main1(inout Payload_t payload) 27{ 28 globalVar = bab.Load<Data>(0); 29 payload.dataOut = globalVar.data0; 30} 31 32[shader("anyhit")] 33void main2(inout Payload_t payload) 34{ 35 globalVar = bab.Load<Data>(0); 36 payload.dataOut = globalVar.data0; 37}