[Piglit] [PATCH] gs: Test primitive ID input.
Paul Berry
stereotype441 at gmail.com
Fri Aug 9 11:59:48 PDT 2013
---
.../execution/geometry/primitive-id-in.shader_test | 79 ++++++++++++++++++++++
1 file changed, 79 insertions(+)
create mode 100644 tests/spec/glsl-1.50/execution/geometry/primitive-id-in.shader_test
diff --git a/tests/spec/glsl-1.50/execution/geometry/primitive-id-in.shader_test b/tests/spec/glsl-1.50/execution/geometry/primitive-id-in.shader_test
new file mode 100644
index 0000000..89eb431
--- /dev/null
+++ b/tests/spec/glsl-1.50/execution/geometry/primitive-id-in.shader_test
@@ -0,0 +1,79 @@
+# Check proper functioning of the gl_PrimitiveIDIn geometry shader
+# input.
+
+[require]
+GLSL >= 1.50
+
+[vertex shader]
+#version 150
+
+in vec4 vertex;
+out int vertex_id_to_gs;
+out vec4 vertex_to_gs;
+
+void main()
+{
+ vertex_to_gs = vertex;
+ vertex_id_to_gs = gl_VertexID;
+}
+
+[geometry shader]
+#version 150
+
+layout(triangles) in;
+layout(triangle_strip, max_vertices = 3) out;
+in vec4 vertex_to_gs[3];
+in int vertex_id_to_gs[3];
+out vec4 color;
+
+void main()
+{
+ /* We draw a triangle fan containing of 6 vertices, so the
+ * relationship between the primitive ID and the input vertex IDs
+ * should be:
+ *
+ * Primitive ID Vertex ID's
+ * 0 0 1 2
+ * 1 0 2 3
+ * 2 0 3 4
+ * 3 0 4 5
+ *
+ * To avoid relying on the order in which vertices appear within
+ * each triangle, compute the maximum of the input vertex IDs, and
+ * subtract 2 from it. That is the expected primitive ID.
+ */
+ int expected_primitive_id =
+ max(max(vertex_id_to_gs[0], vertex_id_to_gs[1]), vertex_id_to_gs[2]) - 2;
+ bool ok = expected_primitive_id == gl_PrimitiveIDIn;
+
+ for (int i = 0; i < 3; i++) {
+ gl_Position = vertex_to_gs[i];
+ color = ok ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 0.0, 0.0, 1.0);
+ EmitVertex();
+ }
+}
+
+[fragment shader]
+#version 150
+
+in vec4 color;
+
+void main()
+{
+ gl_FragColor = color;
+}
+
+[vertex data]
+vertex/float/2
+-1.0 -1.0
+-1.0 1.0
+ 0.0 1.0
+ 1.0 1.0
+ 1.0 0.0
+ 1.0 -1.0
+
+[test]
+clear color 0.0 0.0 0.0 0.0
+clear
+draw arrays GL_TRIANGLE_FAN 0 6
+probe all rgba 0.0 1.0 0.0 1.0
--
1.8.3.4
More information about the Piglit
mailing list