yum-mirror/slang

Making it easier to work with shaders

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

kaizhangNVImplement default initializer list for C-Style type member (#7079)3072cfea9

master
1.4 KiB50 linesraw
1//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=BUFFER):-shaderobj -vk
2//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=BUFFER):-shaderobj -mtl
3//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=BUFFER):-cpu -compute -entry computeMain
4
5//TEST_INPUT:ubuffer(data=[9 9 9 9 9 9 9 9 9 9 9 9], stride=4):out,name=outputBuffer
6RWStructuredBuffer<int> outputBuffer;
7
8void test<let TSize : uint>()
9{
10    // Test array initialization with generic size
11    int array[TSize] = {};
12
13    // BUFFER: 0
14    outputBuffer[0] = array[0];
15    // BUFFER-NEXT: 0
16    outputBuffer[1] = array[1];
17    // BUFFER-NEXT: 0
18    outputBuffer[2] = array[2];
19    // BUFFER-NEXT: 3
20    outputBuffer[3] = array.getCount();
21
22    vector<int, TSize> vec = {};
23
24    // BUFFER-NEXT: 0
25    outputBuffer[4] = vec[0];
26    // BUFFER-NEXT: 0
27    outputBuffer[5] = vec[1];
28    // BUFFER-NEXT: 0
29    outputBuffer[6] = vec[2];
30    // BUFFER-NEXT: 3
31    outputBuffer[7] = vec.getCount();
32
33    matrix<float, TSize, TSize-1> mat = {};
34
35    // BUFFER-NEXT: 0
36    outputBuffer[8] = (int)mat[0][0];
37    // BUFFER-NEXT: 0
38    outputBuffer[9] = (int)mat[1][1];
39    // BUFFER-NEXT: 0
40    outputBuffer[10] = (int)mat[2][1];
41    // BUFFER-NEXT: 3
42    outputBuffer[11] = mat.getCount();  // this is a bad name, getCount() is actually get the number of row.
43}
44
45[shader("compute")]
46[numthreads(1, 1, 1)]
47void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID)
48{
49    test<3>();
50}