yum-mirror/slang

Making it easier to work with shaders

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

skallweitNVenable more metal tests (#4326)712ce653d

master
1015 B48 linesraw
1// multi-level-break-switch.slang
2
3//TEST(compute):COMPARE_COMPUTE: -shaderobj
4//DISABLE_TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj
5
6int test(int t, int r)
7{
8    int result = 0;
9outter:
10    switch (t)
11    {
12    case 0:
13    case 1:
14    jLoop:
15        for (int j = 0; j < 3; j++)
16        {
17            switch (r)
18            {
19            case 0:
20                break outter;
21            case 1:
22                break jLoop;
23            default:
24            {
25                result++;
26                break;
27            }
28            }
29        }
30        result++;
31        break;
32    case 2:
33        return 100;
34    }
35    return result;
36}
37
38//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=outputBuffer
39RWStructuredBuffer<int> outputBuffer;
40
41[numthreads(1, 1, 1)]
42void computeMain(int3 dispatchThreadID: SV_DispatchThreadID)
43{
44    outputBuffer[0] = test(dispatchThreadID.x, 0);
45    outputBuffer[1] = test(dispatchThreadID.x, 1);
46    outputBuffer[2] = test(dispatchThreadID.x, 2);
47    outputBuffer[3] = 0;
48}