yum-mirror/slang

Making it easier to work with shaders

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

Yong HeFix inlining pass. (#2506)0b05fe33c

master
1.1 KiB60 linesraw
1// general-inline.slang
2
3//TEST(compute):COMPARE_COMPUTE: -shaderobj
4//TEST(compute):COMPARE_COMPUTE: -vk -shaderobj
5//DISABLE_TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj
6
7[ForceInline]
8int test(int r)
9{
10    int result = 0;
11    for (int i = 0; i < 2; i++)
12    {
13        for (int j = 0; j < 3; j++)
14        {
15            result++;
16            if (r == 0)
17            {
18                return result;
19            }
20        }
21        if (r == 1)
22            return result;
23    }
24    return result;
25}
26
27[ForceInline]
28void testVoid(int r, out int result)
29{
30    result = 0;
31    for (int i = 0; i < 2; i++)
32    {
33        for (int j = 0; j < 3; j++)
34        {
35            result++;
36            if (r == 0)
37            {
38                return;
39            }
40        }
41        if (r == 1)
42            return;
43    }
44    return;
45}
46
47//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=outputBuffer
48RWStructuredBuffer<int> outputBuffer;
49
50[numthreads(1, 1, 1)]
51void computeMain(uint3 dispatchThreadID: SV_DispatchThreadID)
52{
53    outputBuffer[0] = test(0);
54    outputBuffer[1] = test(1);
55    outputBuffer[2] = test(2);
56
57    int rs;
58    testVoid(2, rs);
59    outputBuffer[3] = rs;
60}