yum-mirror/slang

Making it easier to work with shaders

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

ArielG-NVImplement `-fvk-use-dx-layout` (#4912)e1c6fecd9

master
1.1 KiB52 linesraw
1// For some reason CI fails this compute test by not loading data correctly
2//IGNORE_TEST(compute, vulkan):COMPARE_COMPUTE_EX(filecheck-buffer=CHECK):-vk -compute -xslang -fvk-use-dx-layout
3//TEST:SIMPLE(filecheck=SPIRV): -target spirv -entry computeMain -stage compute -fvk-use-dx-layout
4
5//TEST_INPUT: set Test.v0 = 1;
6//TEST_INPUT: set Test.v1 = {2,3};
7//TEST_INPUT: set Test.v2 = 4;
8
9struct Int_wrapper
10{
11//SPIRV: Offset 0
12    uint v0;
13//SPIRV: Offset 4
14    uint v1;
15};
16
17cbuffer Test
18{
19//SPIRV: Offset 0
20    uint v0;
21
22//SPIRV: Offset 16
23// struct's always start on a new register
24    Int_wrapper v1;
25//SPIRV: Offset 24
26// Non-struct can pack with a partially filled register
27    uint v2;
28};
29
30//TEST_INPUT:ubuffer(data=[0 0 0 0 0], stride=4):out,name outputBuffer
31RWStructuredBuffer<int> outputBuffer;
32
33[shader("compute")]
34[numthreads(2, 2, 1)]
35void computeMain()
36{
37    // CHECK: 64
38
39    outputBuffer[1] = v0;
40    outputBuffer[2] = v1.v0;
41    outputBuffer[3] = v1.v1;
42    outputBuffer[4] = v2;
43    
44    
45
46    outputBuffer[0] = (true
47            && v0 == 1
48            && v1.v0 == 2
49            && v1.v1 == 3
50            && v2 == 4
51        ) ? 100 : 0;
52}