[Piglit] [PATCH] vulkan/shader_draw_parameters: Add a test for gl_BaseVertex

Neil Roberts nroberts at igalia.com
Thu Nov 8 12:29:31 UTC 2018


gl_BaseVertex has slightly different semantics under Vulkan and GL so
this is worth testing.
---
 .../base-vertex.vk_shader_test                | 66 +++++++++++++++++++
 1 file changed, 66 insertions(+)
 create mode 100644 tests/vulkan/shader_draw_parameters/base-vertex.vk_shader_test

diff --git a/tests/vulkan/shader_draw_parameters/base-vertex.vk_shader_test b/tests/vulkan/shader_draw_parameters/base-vertex.vk_shader_test
new file mode 100644
index 000000000..c4c8c3e32
--- /dev/null
+++ b/tests/vulkan/shader_draw_parameters/base-vertex.vk_shader_test
@@ -0,0 +1,66 @@
+# Tests that gl_BaseVertex is firstVertex for non-indexed calls or
+# vertexOffset for indexed ones.
+
+[require]
+framebuffer R32G32B32A32_SFLOAT
+VK_KHR_shader_draw_parameters
+
+[vertex shader]
+#version 450
+#extension GL_ARB_shader_draw_parameters: require
+
+layout(location = 0) in vec4 piglit_vertex;
+layout(location = 0) out vec4 color;
+
+layout(std140, push_constant) uniform block {
+        uint expected_base_vertex;
+};
+
+void
+main()
+{
+        if (gl_BaseVertexARB == expected_base_vertex)
+	        color = vec4(0.0, 1.0, 0.0, 1.0);
+        else
+	        color = vec4(1.0, gl_BaseVertexARB / 255.0, 0.0, 1.0);
+
+        gl_Position = piglit_vertex;
+}
+
+[fragment shader]
+#version 450
+
+layout(location = 0) in vec4 color_in;
+layout(location = 0) out vec4 color_out;
+
+void
+main()
+{
+        color_out = color_in;
+}
+
+[indices]
+0 1 2 3
+
+[vertex data]
+0/R32G32_SFLOAT
+-1 -1
+-1 -1
+-1 -1
+-1 -1
+-1 -1
+1  -1
+-1 1
+1  1
+
+[test]
+clear color 0.8 0.0 0.0 0.0
+clear
+
+uniform uint 0 4
+
+draw arrays GL_TRIANGLE_STRIP 4 4
+probe all rgba 0.0 1.0 0.0 1.0
+
+draw arrays indexed GL_TRIANGLE_STRIP 4 4
+probe all rgba 0.0 1.0 0.0 1.0
-- 
2.17.1



More information about the Piglit mailing list