yum-mirror/slang

Making it easier to work with shaders

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

Julius IkkalaFix tuple AST & IR layout size queries (#7502)a58675b16

master
1.3 KiB48 linesraw
1//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-cpu -compute -shaderobj
2//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-slang -compute -shaderobj
3//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-slang -compute -dx12 -shaderobj
4//TEST(compute, vulkan):COMPARE_COMPUTE(filecheck-buffer=CHECK):-vk -compute -shaderobj
5//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-cuda -compute -shaderobj
6
7//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0], stride=4):out,name outputBuffer
8
9RWStructuredBuffer<int> outputBuffer;
10
11struct Thing<each T>
12{
13    int val;
14    Tuple<expand each T> tuple;
15};
16
17int tupleSize1<T>(T vals)
18{
19    return sizeof(Tuple<T>);
20}
21
22int tupleSize2<each T>(T vals)
23{
24    return sizeof(Tuple<expand each T>);
25}
26
27int tupleSize3<each T>(T vals)
28{
29    return sizeof(Tuple<int, expand each T>);
30}
31
32int tupleSize4<each T>(T vals)
33{
34    return sizeof(Thing<expand each T>);
35}
36
37[numthreads(1, 1, 1)]
38void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID)
39{
40    outputBuffer[0] = tupleSize2(); // CHECK: 0
41    outputBuffer[1] = tupleSize3(); // CHECK-NEXT: 4
42    outputBuffer[2] = tupleSize4(); // CHECK-NEXT: 4
43
44    outputBuffer[3] = tupleSize1(1); // CHECK-NEXT: 4
45    outputBuffer[4] = tupleSize2(1,2); // CHECK-NEXT: 8
46    outputBuffer[5] = tupleSize3(1,2,3); // CHECK-NEXT: 10
47    outputBuffer[6] = tupleSize4(1,2,3,4); // CHECK-NEXT: 14
48}