[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