yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
00bd481e0
master
1// direct-spirv-control-flow-2.slang 2 3//TESTD:SIMPLE:-target spirv -entry computeMain -stage compute 4//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -output-using-type 5 6// Test direct SPIR-V emit on control flows. 7 8//TEST_INPUT:set resultBuffer = out ubuffer(data=[0 0 0 0], stride=4) 9RWStructuredBuffer<uint> resultBuffer; 10 11uint test(uint p) 12{ 13 int result = 0; 14 for (int i = 0; i < 5; i++) 15 { 16 result += i*2; 17 } 18 switch (p) 19 { 20 case 0: 21 result = result - 1; 22 break; 23 case 1: 24 result = result + 1; 25 break; 26 default: 27 result = result * 2; 28 break; 29 } 30 if (p > 2) 31 { 32 switch (p) 33 { 34 case 3: 35 result++; 36 break; 37 } 38 } 39 return result; 40} 41 42[numthreads(4,1,1)] 43void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) 44{ 45 uint threadId = dispatchThreadID.x; 46 uint result = test(threadId); 47 resultBuffer[threadId] = result; 48}