summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2024-03-08 15:13:08 -0800
committerGitHub <noreply@github.com>2024-03-08 15:13:08 -0800
commit6f8a20688e0c4b989db152b4d06aeab04fac0567 (patch)
treedef602768da1b1ef1606bc1d5116eb44832f8332 /tests
parent5afe9709aab2ceb499e3ba279ebce4b311037837 (diff)
[SPIRV] fix code gen for `SV_Coverage`. (#3718)
* [SPIRV] fix code gen for `SV_Coverage`. * Fix #3714, #3699. * Fix.
Diffstat (limited to 'tests')
-rw-r--r--tests/cross-compile/sv-coverage.slang2
-rw-r--r--tests/spirv/flat-builtin.slang12
-rw-r--r--tests/spirv/primitive-id.slang23
3 files changed, 37 insertions, 0 deletions
diff --git a/tests/cross-compile/sv-coverage.slang b/tests/cross-compile/sv-coverage.slang
index 3bae3ea8a..b61530e7b 100644
--- a/tests/cross-compile/sv-coverage.slang
+++ b/tests/cross-compile/sv-coverage.slang
@@ -1,6 +1,7 @@
// sv-coverage.slang
//TEST:CROSS_COMPILE:-target spirv-assembly -entry main -stage fragment
+//TEST:SIMPLE(filecheck=CHECK):-target spirv -entry main -stage fragment -emit-spirv-directly
float4 main(
in float4 color : COLOR,
@@ -8,6 +9,7 @@ float4 main(
out uint outputCoverage : SV_Coverage)
: SV_Target
{
+ // CHECK: %gl_SampleMask = OpVariable %_ptr_Input__arr_int_int_1 Input
outputCoverage = inputCoverage ^ 1;
return color;
}
diff --git a/tests/spirv/flat-builtin.slang b/tests/spirv/flat-builtin.slang
new file mode 100644
index 000000000..927c6d045
--- /dev/null
+++ b/tests/spirv/flat-builtin.slang
@@ -0,0 +1,12 @@
+//TEST:SIMPLE(filecheck=CHECK):-target spirv -emit-spirv-directly -entry main -stage fragment
+struct PerPrimitive {
+ int primitive_id : SV_PrimitiveID;
+ int layer : SV_RenderTargetArrayIndex;
+};
+
+// CHECK: OpDecorate %gl_PrimitiveID Flat
+// CHECK: OpDecorate %gl_Layer Flat
+[shader("fragment")]
+uint main(PerPrimitive data) : SV_Target {
+ return data.primitive_id + data.layer;
+} \ No newline at end of file
diff --git a/tests/spirv/primitive-id.slang b/tests/spirv/primitive-id.slang
new file mode 100644
index 000000000..8c354200b
--- /dev/null
+++ b/tests/spirv/primitive-id.slang
@@ -0,0 +1,23 @@
+//TEST:SIMPLE(filecheck=CHECK): -target spirv -emit-spirv-directly -entry main -stage mesh
+struct PerVertex {
+ float4 pos : SV_Position;
+};
+
+struct PerPrimitive {
+ uint32_t primitive_id : SV_PrimitiveID;
+ uint32_t layer : SV_RenderTargetArrayIndex;
+};
+
+// CHECK: %gl_PrimitiveID = OpVariable %_ptr_Output__arr_int_int_1 Output
+
+[shader("mesh")]
+[numthreads(1, 1, 1)]
+[outputtopology("triangle")]
+void main(out vertices PerVertex vertices[3], out indices uint3 triangles[1], out primitives PerPrimitive primitive_data[1]) {
+ SetMeshOutputCounts(3, 1);
+
+ vertices[0].pos = vertices[1].pos = vertices[2].pos = 0;
+ triangles[0] = uint3(0, 1, 2);
+ primitive_data[0].primitive_id = 0;
+ primitive_data[0].layer = 0;
+} \ No newline at end of file