yum-mirror/slang

Making it easier to work with shaders

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

Julius IkkalaAdd IREnumType to distinguish enums from ints and each other (#6973)6f6103c4d

master
983 B58 linesraw
1//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK): -vk
2//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK): -dx12
3//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK): -cpu
4
5// CHECK: 1
6// CHECK-NEXT: 0
7// CHECK-NEXT: 2
8// CHECK-NEXT: 3
9
10//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=outputBuffer
11RWStructuredBuffer<int> outputBuffer;
12
13interface IThing
14{
15    void writeInfo(int i);
16}
17
18enum FirstEnum
19{
20    A,
21    B
22};
23
24enum SecondEnum
25{
26    C,
27    D=3
28};
29
30extension FirstEnum: IThing
31{
32    void writeInfo(int i)
33    {
34        outputBuffer[i] = 1;
35        outputBuffer[i+1] = this;
36    }
37}
38
39extension SecondEnum: IThing
40{
41    void writeInfo(int i)
42    {
43        outputBuffer[i] = 2;
44        outputBuffer[i+1] = this;
45    }
46}
47
48void indirectionFunc<T: IThing>(T val, int i)
49{
50    val.writeInfo(i);
51}
52
53[numthreads(1, 1, 1)]
54void computeMain(int3 dispatchThreadID: SV_DispatchThreadID)
55{
56    indirectionFunc(FirstEnum.A, 0);
57    indirectionFunc(SecondEnum.D, 2);
58}