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
3.8 KiB116 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 -profile cs_6_2 -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 -profile cs_6_2 -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//TEST_INPUT:ubuffer(stride=4, count=17):out,name=outputBuffer
8RWStructuredBuffer<float> outputBuffer;
9
10//TEST_INPUT:set Constants.v0={1.0,2.0,3.0}
11//TEST_INPUT:set Constants.v1=4.0
12//TEST_INPUT:set Constants.v2=5.0
13//TEST_INPUT:set Constants.v3[0]={6.0,7.0,8.0}
14//TEST_INPUT:set Constants.v3[1]={9.0,10.0,11.0}
15//TEST_INPUT:set Constants.v4=12.0
16//TEST_INPUT:set Constants.v5=13.0
17//TEST_INPUT:set Constants.v6[0]={14.0,15.0,16.0}
18//TEST_INPUT:set Constants.v7=17.0
19
20// Checks cbuffer packing rule cases involving 3-element vectors.
21// HLSL aligns at the element size, while GLSL std140 and std430
22// align to the size of a 4-element vector of the element type.
23// Checks cases that are compatible with std140 and std430.
24
25cbuffer Constants
26{
27    // float v1 should be packed in with float3 v0
28    float3 v0;
29    float v1;
30
31    // float3[2] v3 should be aligned to next 16 byte boundary,
32    // and not packed in with float v2.
33    float v2;
34    float3 v3[2];
35
36    // float v4 should be packed in with last float3 from v3.
37    float v4;
38
39    // float3[1] v6 should be aligned to next 16 byte boundary
40    // and not packed in with float v5.
41    float v5;
42    float3 v6[1];
43
44    // float v7 should be packed in with float3 from v6.
45    float v7;
46};
47
48// For spirv, check that the offsets are correct.
49// SPIRV: OpMemberDecorate {{.*}} 0 Offset 0
50// SPIRV: OpMemberDecorate {{.*}} 1 Offset 12
51// SPIRV: OpMemberDecorate {{.*}} 2 Offset 16
52// SPIRV: OpMemberDecorate {{.*}} 3 Offset 32
53// SPIRV: OpMemberDecorate {{.*}} 4 Offset 60
54// SPIRV: OpMemberDecorate {{.*}} 5 Offset 64
55// SPIRV: OpMemberDecorate {{.*}} 6 Offset 80
56// SPIRV: OpMemberDecorate {{.*}} 7 Offset 92
57
58// REFLECT: "name": "v0",
59// REFLECT: "offset": 0
60// REFLECT: "name": "v1",
61// REFLECT: "offset": 12
62// REFLECT: "name": "v2",
63// REFLECT: "offset": 16
64// REFLECT: "name": "v3",
65// REFLECT: "offset": 32
66// REFLECT: "name": "v4",
67// REFLECT: "offset": 60
68// REFLECT: "name": "v5",
69// REFLECT: "offset": 64
70// REFLECT: "name": "v6",
71// REFLECT: "offset": 80
72// REFLECT: "name": "v7",
73// REFLECT: "offset": 92
74
75[numthreads(1, 1, 1)]
76void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID)
77{
78    int i = 0;
79    outputBuffer[i++] = v0.x;
80    outputBuffer[i++] = v0.y;
81    outputBuffer[i++] = v0.z;
82    outputBuffer[i++] = v1;
83    outputBuffer[i++] = v2;
84    outputBuffer[i++] = v3[0].x;
85    outputBuffer[i++] = v3[0].y;
86    outputBuffer[i++] = v3[0].z;
87    outputBuffer[i++] = v3[1].x;
88    outputBuffer[i++] = v3[1].y;
89    outputBuffer[i++] = v3[1].z;
90    outputBuffer[i++] = v4;
91    outputBuffer[i++] = v5;
92    outputBuffer[i++] = v6[0].x;
93    outputBuffer[i++] = v6[0].y;
94    outputBuffer[i++] = v6[0].z;
95    outputBuffer[i++] = v7;
96
97    // BUFFER: 1
98    // BUFFER-NEXT: 2
99    // BUFFER-NEXT: 3
100    // BUFFER-NEXT: 4
101    // BUFFER-NEXT: 5
102    // BUFFER-NEXT: 6
103    // BUFFER-NEXT: 7
104    // BUFFER-NEXT: 8
105    // BUFFER-NEXT: 9
106    // BUFFER-NEXT: 10
107    // BUFFER-NEXT: 11
108    // BUFFER-NEXT: 12
109    // BUFFER-NEXT: 13
110    // BUFFER-NEXT: 14
111    // BUFFER-NEXT: 15
112    // BUFFER-NEXT: 16
113    // BUFFER-NEXT: 17
114
115}
116