yum-mirror/slang

Making it easier to work with shaders

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

James Helferty (NVIDIA)render-test: Change D3D12 default to sm_6_5 (#8320)f02b08490

master
4.4 KiB139 linesraw
1//TEST:SIMPLE(filecheck=SPIRV): -target spirv -emit-spirv-directly -profile cs_6_2 -entry computeMain -line-directive-mode none -fvk-use-dx-layout
2//TEST(compute):COMPARE_COMPUTE_EX(filecheck-buffer=BUFFER):-slang -compute -dx12 -Xslang... -Xdxc -fvk-use-dx-layout -Xdxc -enable-16bit-types -X. -output-using-type
3//TEST(compute):COMPARE_COMPUTE_EX(filecheck-buffer=BUFFER):-slang -compute -vk -emit-spirv-directly -Xslang... -fvk-use-dx-layout -X. -output-using-type
4//TEST(compute):COMPARE_COMPUTE_EX(filecheck-buffer=BUFFER):-cuda -compute -output-using-type
5//TEST:REFLECTION(filecheck=REFLECT):-stage compute -entry computeMain -target spirv -profile cs_6_2 -no-codegen -line-directive-mode none -fvk-use-dx-layout
6
7// dxc: -T cs_6_2 -E computeMain -spirv -fvk-use-dx-layout -enable-16bit-types
8
9//TEST_INPUT:ubuffer(stride=4, count=24):out,name=outputBuffer
10RWStructuredBuffer<float> outputBuffer;
11
12//TEST_INPUT:set Constants.v0=1.0
13//TEST_INPUT:set Constants.v1={2.0,3.0,4.0}
14//TEST_INPUT:set Constants.v2=0x4500
15//TEST_INPUT:set Constants.v3={0x4600,0x4700,0x4800}
16//TEST_INPUT:set Constants.v4=0x4880
17//TEST_INPUT:set Constants.v5={0x4900,0x4980,0x4a00}
18//TEST_INPUT:set Constants.v6=0x4a80
19//TEST_INPUT:set Constants.v7={0x4b00,0x4b80,0x4c00,0x4c40}
20//TEST_INPUT:set Constants.v8={0x4c80,0x4cc0,0x4d00}
21//TEST_INPUT:set Constants.v9=0x4d40
22//TEST_INPUT:set Constants.v10={22.0,23.0,24.0}
23
24
25// Checks cbuffer packing rule cases involving 3-element vectors.
26// HLSL aligns at the element size, while GLSL std140 and std430
27// align to the size of a 4-element vector of the element type.
28// Checks cases that are not compatible with std140 and std430.
29
30cbuffer Constants
31{
32    // float3 v1 should be packed in with float v0.
33    float v0;
34    float3 v1;
35
36    // v2,v3,v4,v5 should all be packed together
37    float16_t v2;
38    vector<float16_t, 3> v3;
39    float16_t v4;
40    vector<float16_t, 3> v5;
41
42    float16_t v6;
43    vector<float16_t, 4> v7;
44    vector<float16_t, 3> v8;
45
46    // There should be a 2-byte gap between v4 and v5.
47    float16_t v9;
48    float3 v10;
49};
50
51// SPIRV: OpMemberDecorate {{.*}} 0 Offset 0
52// SPIRV: OpMemberDecorate {{.*}} 1 Offset 4
53// SPIRV: OpMemberDecorate {{.*}} 2 Offset 16
54// SPIRV: OpMemberDecorate {{.*}} 3 Offset 18
55// SPIRV: OpMemberDecorate {{.*}} 4 Offset 24
56// SPIRV: OpMemberDecorate {{.*}} 5 Offset 26
57// SPIRV: OpMemberDecorate {{.*}} 6 Offset 32
58// SPIRV: OpMemberDecorate {{.*}} 7 Offset 34
59// SPIRV: OpMemberDecorate {{.*}} 8 Offset 42
60// SPIRV: OpMemberDecorate {{.*}} 9 Offset 48
61// SPIRV: OpMemberDecorate {{.*}} 10 Offset 52
62
63// REFLECT: "name": "v0",
64// REFLECT: "offset": 0
65// REFLECT: "name": "v1",
66// REFLECT: "offset": 4
67// REFLECT: "name": "v2",
68// REFLECT: "offset": 16
69// REFLECT: "name": "v3",
70// REFLECT: "offset": 18
71// REFLECT: "name": "v4",
72// REFLECT: "offset": 24
73// REFLECT: "name": "v5",
74// REFLECT: "offset": 26
75// REFLECT: "name": "v6",
76// REFLECT: "offset": 32
77// REFLECT: "name": "v7",
78// REFLECT: "offset": 34
79// REFLECT: "name": "v8",
80// REFLECT: "offset": 42
81// REFLECT: "name": "v9",
82// REFLECT: "offset": 48
83// REFLECT: "name": "v10",
84// REFLECT: "offset": 52
85
86[numthreads(1, 1, 1)]
87void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID)
88{
89    int i = 0;
90    outputBuffer[i++] = v0;
91    outputBuffer[i++] = v1.x;
92    outputBuffer[i++] = v1.y;
93    outputBuffer[i++] = v1.z;
94    outputBuffer[i++] = v2;
95    outputBuffer[i++] = v3.x;
96    outputBuffer[i++] = v3.y;
97    outputBuffer[i++] = v3.z;
98    outputBuffer[i++] = v4;
99    outputBuffer[i++] = v5.x;
100    outputBuffer[i++] = v5.y;
101    outputBuffer[i++] = v5.z;
102    outputBuffer[i++] = v6;
103    outputBuffer[i++] = v7.x;
104    outputBuffer[i++] = v7.y;
105    outputBuffer[i++] = v7.z;
106    outputBuffer[i++] = v7.w;
107    outputBuffer[i++] = v8.x;
108    outputBuffer[i++] = v8.y;
109    outputBuffer[i++] = v8.z;
110    outputBuffer[i++] = v9;
111    outputBuffer[i++] = v10.x;
112    outputBuffer[i++] = v10.y;
113    outputBuffer[i++] = v10.z;
114
115    // BUFFER: 1
116    // BUFFER-NEXT: 2
117    // BUFFER-NEXT: 3
118    // BUFFER-NEXT: 4
119    // BUFFER-NEXT: 5
120    // BUFFER-NEXT: 6
121    // BUFFER-NEXT: 7
122    // BUFFER-NEXT: 8
123    // BUFFER-NEXT: 9
124    // BUFFER-NEXT: 10
125    // BUFFER-NEXT: 11
126    // BUFFER-NEXT: 12
127    // BUFFER-NEXT: 13
128    // BUFFER-NEXT: 14
129    // BUFFER-NEXT: 15
130    // BUFFER-NEXT: 16
131    // BUFFER-NEXT: 17
132    // BUFFER-NEXT: 18
133    // BUFFER-NEXT: 19
134    // BUFFER-NEXT: 20
135    // BUFFER-NEXT: 21
136    // BUFFER-NEXT: 22
137    // BUFFER-NEXT: 23
138    // BUFFER-NEXT: 24
139}