[Piglit] [PATCH] Add a test for instanced GS inputs.

Kenneth Graunke kenneth at whitecape.org
Sun May 8 12:33:49 UTC 2016


All of our other tests for instanced geometry shaders don't actually
read input variables.  This is currently broken with the i965 driver's
INTEL_SCALAR_GS=1 backend; I have patches to fix it.
---
 .../execution/instanced-inputs.shader_test         | 60 ++++++++++++++++++++++
 1 file changed, 60 insertions(+)
 create mode 100644 tests/spec/arb_gpu_shader5/execution/instanced-inputs.shader_test

diff --git a/tests/spec/arb_gpu_shader5/execution/instanced-inputs.shader_test b/tests/spec/arb_gpu_shader5/execution/instanced-inputs.shader_test
new file mode 100644
index 0000000..eceb6c3
--- /dev/null
+++ b/tests/spec/arb_gpu_shader5/execution/instanced-inputs.shader_test
@@ -0,0 +1,60 @@
+[require]
+GL >= 2.0
+GLSL >= 1.50
+
+[vertex shader]
+in vec4 vertex;
+out vec4 vertex_to_gs;
+
+void main()
+{
+    vertex_to_gs = vertex;
+}
+
+[geometry shader]
+#extension GL_ARB_gpu_shader5 : require
+layout(triangles) in;
+layout(triangle_strip, max_vertices = 3) out;
+layout(invocations = 4) in;
+
+in vec4 vertex_to_gs[3];
+
+void main()
+{
+    vec2 offset;
+    if (gl_InvocationID == 0)
+        offset.xy = vec2(-0.5, -0.5);
+    else if (gl_InvocationID == 1)
+        offset.xy = vec2( 0.5, -0.5);
+    else if (gl_InvocationID == 2)
+        offset.xy = vec2(-0.5,  0.5);
+    else if (gl_InvocationID == 3)
+        offset.xy = vec2( 0.5,  0.5);
+
+    for (int i = 0; i < 3; i++) {
+        gl_Position = vertex_to_gs[i];
+        gl_Position.xy += offset;
+        EmitVertex();
+    }
+}
+
+[fragment shader]
+void main()
+{
+    gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0);
+}
+
+[vertex data]
+vertex/float/2
+-0.5 -0.5
+ 0.5 -0.5
+-0.5  0.0
+ 0.5  0.0
+-0.5  0.5
+ 0.5  0.5
+
+[test]
+clear color 0.0 0.0 0.0 0.0
+clear
+draw arrays GL_TRIANGLE_STRIP 0 6
+probe all rgba 0.0 1.0 0.0 1.0
-- 
2.8.2



More information about the Piglit mailing list