yum-mirror/slang

Making it easier to work with shaders

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

Ellie HermaszewskaSPIR-V WIP (#3064)00bd481e0

master
979 B48 linesraw
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}