summaryrefslogtreecommitdiff
path: root/tests/spirv/sv-vulkan-instance-vertex-id.slang
diff options
context:
space:
mode:
authorDarren Wihandi <65404740+fairywreath@users.noreply.github.com>2025-05-19 14:21:25 -0400
committerGitHub <noreply@github.com>2025-05-19 11:21:25 -0700
commit634e3960c2bc322bbd51fccc7ff395d9f24e35dc (patch)
treed7cc501d74a1e4e5fb7fa7d5dcf6c6d515603678 /tests/spirv/sv-vulkan-instance-vertex-id.slang
parent31d80c767865d360afba39e5248ab709c587792f (diff)
Map `SV_VertexID` to `gl_VertexIndex-gl_BaseVertex`, add `SV_Vulkan*ID` semantics (#7150)
* Map SV_VertexID to `gl_VertexIndex - gl_BaseVertex`, provide SV_Vulkan* SV semantics * Fix docs * Regenerate toc * Fix affected pointer-2 test * Add tests --------- Co-authored-by: Yong He <yonghe@outlook.com>
Diffstat (limited to 'tests/spirv/sv-vulkan-instance-vertex-id.slang')
-rw-r--r--tests/spirv/sv-vulkan-instance-vertex-id.slang42
1 files changed, 42 insertions, 0 deletions
diff --git a/tests/spirv/sv-vulkan-instance-vertex-id.slang b/tests/spirv/sv-vulkan-instance-vertex-id.slang
new file mode 100644
index 000000000..c8654c857
--- /dev/null
+++ b/tests/spirv/sv-vulkan-instance-vertex-id.slang
@@ -0,0 +1,42 @@
+//TEST:SIMPLE(filecheck=SPIRV): -entry main -stage vertex -target spirv -emit-spirv-directly
+//TEST:SIMPLE(filecheck=GLSL): -entry main -stage vertex -target glsl
+//TEST:SIMPLE(filecheck=METAL): -entry main -stage vertex -target metal
+//TEST:SIMPLE(filecheck=WGSL): -entry main -stage vertex -target wgsl
+
+struct VSInput
+{
+ uint vertexID : SV_VulkanVertexID;
+ uint instanceID : SV_VulkanInstanceID;
+};
+
+struct VSOutput
+{
+ float4 position : SV_POSITION;
+};
+
+[shader("vertex")]
+VSOutput main(VSInput input)
+{
+ VSOutput output;
+ output.position = float4(input.vertexID + input.instanceID);
+
+ // SPIRV-DAG: BuiltIn InstanceIndex
+ // SPIRV-DAG: BuiltIn VertexIndex
+ // SPIRV-NOT: BuiltIn BaseInstance
+ // SPIRV-NOT: BuiltIn BaseVertex
+
+ // GLSL-NOT: GL_ARB_shader_draw_parameters
+ // GLSL-DAG: gl_VertexIndex
+ // GLSL-NOT: gl_BaseVertex
+ // GLSL-DAG: gl_InstanceIndex
+ // GLSL-NOT: gl_BaseInstance
+
+ // METAL-DAG: vertex_id
+ // METAL-DAG: instance_id
+
+ // WGSL-DAG: vertex_index
+ // WGSL-DAG: instance_index
+
+ return output;
+}
+