With no layered fb and unconfigured viewports, the values of
gl_Layer/gl_ViewportIndex shouldn't matter for rendering. Make sure that
they're being passed through correctly from GS to FS.

Signed-off-by: Ilia Mirkin <[email protected]>
---

These apply on top of ChrisF's series.

 .../layer-gs-write-simple.shader_test              | 70 +++++++++++++++++++++
 .../viewport-gs-write-simple.shader_test           | 72 ++++++++++++++++++++++
 2 files changed, 142 insertions(+)
 create mode 100644 
tests/spec/arb_fragment_layer_viewport/layer-gs-write-simple.shader_test
 create mode 100644 
tests/spec/arb_fragment_layer_viewport/viewport-gs-write-simple.shader_test

diff --git 
a/tests/spec/arb_fragment_layer_viewport/layer-gs-write-simple.shader_test 
b/tests/spec/arb_fragment_layer_viewport/layer-gs-write-simple.shader_test
new file mode 100644
index 0000000..1d27dde
--- /dev/null
+++ b/tests/spec/arb_fragment_layer_viewport/layer-gs-write-simple.shader_test
@@ -0,0 +1,70 @@
+[require]
+GLSL >= 1.50
+GL_ARB_fragment_layer_viewport
+
+[vertex shader]
+#version 150
+in vec4 piglit_vertex;
+
+void main()
+{
+       gl_Position = piglit_vertex;
+}
+
+[geometry shader]
+#version 150
+
+layout(triangles) in;
+layout(triangle_strip, max_vertices=3) out;
+uniform int layer;
+
+void main()
+{
+       for (int i = 0; i < 3; i++) {
+               gl_Position = gl_in[i].gl_Position;
+               gl_Layer = layer;
+               EmitVertex();
+       }
+}
+
+[fragment shader]
+#version 150
+#extension GL_ARB_fragment_layer_viewport: require
+
+uniform int layer;
+
+void main()
+{
+       if (gl_Layer == layer)
+               gl_FragColor = vec4(0,1,0,0);
+       else
+               gl_FragColor = vec4(1,0,0,0);
+}
+
+[test]
+clear color 0.0 0.0 0.0 0.0
+
+clear
+uniform int layer 0
+draw rect -1 -1 2 2
+probe all rgb 0.0 1.0 0.0
+
+clear
+uniform int layer 1
+draw rect -1 -1 2 2
+probe all rgb 0.0 1.0 0.0
+
+clear
+uniform int layer 10
+draw rect -1 -1 2 2
+probe all rgb 0.0 1.0 0.0
+
+clear
+uniform int layer 100
+draw rect -1 -1 2 2
+probe all rgb 0.0 1.0 0.0
+
+clear
+uniform int layer -1
+draw rect -1 -1 2 2
+probe all rgb 0.0 1.0 0.0
diff --git 
a/tests/spec/arb_fragment_layer_viewport/viewport-gs-write-simple.shader_test 
b/tests/spec/arb_fragment_layer_viewport/viewport-gs-write-simple.shader_test
new file mode 100644
index 0000000..06abd96
--- /dev/null
+++ 
b/tests/spec/arb_fragment_layer_viewport/viewport-gs-write-simple.shader_test
@@ -0,0 +1,72 @@
+[require]
+GLSL >= 1.50
+GL_ARB_fragment_layer_viewport
+GL_ARB_viewport_array
+
+[vertex shader]
+#version 150
+in vec4 piglit_vertex;
+
+void main()
+{
+       gl_Position = piglit_vertex;
+}
+
+[geometry shader]
+#version 150
+#extension GL_ARB_viewport_array: enable
+
+layout(triangles) in;
+layout(triangle_strip, max_vertices=3) out;
+uniform int viewport;
+
+void main()
+{
+       for (int i = 0; i < 3; i++) {
+               gl_Position = gl_in[i].gl_Position;
+               gl_ViewportIndex = viewport;
+               EmitVertex();
+       }
+}
+
+[fragment shader]
+#version 150
+#extension GL_ARB_fragment_layer_viewport: require
+
+uniform int viewport;
+
+void main()
+{
+       if (gl_ViewportIndex == viewport)
+               gl_FragColor = vec4(0,1,0,0);
+       else
+               gl_FragColor = vec4(1,0,0,0);
+}
+
+[test]
+clear color 0.0 0.0 0.0 0.0
+
+clear
+uniform int viewport 0
+draw rect -1 -1 2 2
+probe all rgb 0.0 1.0 0.0
+
+clear
+uniform int viewport 1
+draw rect -1 -1 2 2
+probe all rgb 0.0 1.0 0.0
+
+clear
+uniform int viewport 10
+draw rect -1 -1 2 2
+probe all rgb 0.0 1.0 0.0
+
+clear
+uniform int viewport 100
+draw rect -1 -1 2 2
+probe all rgb 0.0 1.0 0.0
+
+clear
+uniform int viewport -1
+draw rect -1 -1 2 2
+probe all rgb 0.0 1.0 0.0
-- 
1.8.5.5

_______________________________________________
Piglit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to