yum-mirror/slang

Making it easier to work with shaders

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

Darren WihandiAddress structured buffer `GetDimensions` issues for WGSL, GLSL and SPIRV (#7010)da951e06e

master
1.4 KiB50 linesraw
1//TEST(compute):COMPARE_COMPUTE_EX(filecheck-buffer=CHECK):-vk -compute -shaderobj
2//TEST(compute):COMPARE_COMPUTE_EX(filecheck-buffer=CHECK):-d3d12 -compute -shaderobj
3//TEST(compute):COMPARE_COMPUTE_EX(filecheck-buffer=CHECK):-wgpu -compute -shaderobj
4
5//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
6RWStructuredBuffer<int> outputBuffer;
7
8//TEST_INPUT:ubuffer(data=[7 2 9 53], stride=4):name buffer0
9RWStructuredBuffer<int> buffer0;
10
11//TEST_INPUT:ubuffer(data=[23 2], stride=4):name buffer1
12RWStructuredBuffer<int> buffer1;
13
14//TEST_INPUT:ubuffer(data=[-10 17 9 4 2 0], stride=4):name buffer2
15RWStructuredBuffer<float> buffer2;
16
17//TEST_INPUT:ubuffer(data=[-10 17 9 4 2 0], stride=4):name buffer3
18RWStructuredBuffer<float> buffer3;
19
20[shader("compute")]
21[numthreads(4, 1, 1)]
22void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID)
23{
24    int index = int(dispatchThreadID.x);
25    uint count = 0;
26    uint stride = 0;
27
28    if (index == 0)
29    {
30        // CHECK: 4
31        buffer0.GetDimensions(count, stride);
32    }
33    else if (index == 1)
34    {
35        // CHECK: 4
36        buffer1.GetDimensions(count, stride);
37    }
38    else if (index == 2)
39    {
40        // CHECK: 4
41        buffer2.GetDimensions(count, stride);
42    }
43    else if (index == 3)
44    {
45        // CHECK: 4
46        buffer3.GetDimensions(count, stride);
47    }
48
49    outputBuffer[index] = int(stride);
50}