Signed-off-by: Chris Forbes <chr...@ijw.co.nz> --- tests/all.py | 6 +++ .../layer-gs-no-write.shader_test | 51 ++++++++++++++++++++++ .../layer-no-gs.shader_test | 37 ++++++++++++++++ .../viewport-gs-no-write.shader_test | 51 ++++++++++++++++++++++ .../viewport-no-gs.shader_test | 37 ++++++++++++++++ 5 files changed, 182 insertions(+) create mode 100644 tests/spec/arb_fragment_layer_viewport/layer-gs-no-write.shader_test create mode 100644 tests/spec/arb_fragment_layer_viewport/layer-no-gs.shader_test create mode 100644 tests/spec/arb_fragment_layer_viewport/viewport-gs-no-write.shader_test create mode 100644 tests/spec/arb_fragment_layer_viewport/viewport-no-gs.shader_test
diff --git a/tests/all.py b/tests/all.py index f9f1125..39fca0e 100644 --- a/tests/all.py +++ b/tests/all.py @@ -1569,6 +1569,12 @@ import_glsl_parser_tests(arb_fragment_coord_conventions, 'arb_fragment_coord_conventions'), ['compiler']) +arb_fragment_layer_viewport = {} +spec['ARB_fragment_layer_viewport'] = arb_fragment_layer_viewport +add_shader_test_dir(arb_fragment_layer_viewport, + os.path.join(testsDir, 'spec', 'arb_fragment_layer_viewport'), + recursive=True) + ati_fragment_shader = {} spec['ATI_fragment_shader'] = ati_fragment_shader add_plain_test(ati_fragment_shader, 'ati-fs-bad-delete') diff --git a/tests/spec/arb_fragment_layer_viewport/layer-gs-no-write.shader_test b/tests/spec/arb_fragment_layer_viewport/layer-gs-no-write.shader_test new file mode 100644 index 0000000..37de834 --- /dev/null +++ b/tests/spec/arb_fragment_layer_viewport/layer-gs-no-write.shader_test @@ -0,0 +1,51 @@ +[require] +GLSL >= 1.50 +GL_ARB_fragment_layer_viewport + +# +# If the geometry stage makes no static assignment to gl_Layer, +# the fragment stage will read zero. +# +# This test covers the case where a GS is present, but does not write gl_Layer. +# + +[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; + +void main() +{ + for (int i = 0; i < 3; i++) { + gl_Position = gl_in[i].gl_Position; + EmitVertex(); + } +} + +[fragment shader] +#version 150 +#extension GL_ARB_fragment_layer_viewport: require + +void main() +{ + if (gl_Layer == 0) + 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 +draw rect -1 -1 2 2 +probe all rgb 0.0 1.0 0.0 diff --git a/tests/spec/arb_fragment_layer_viewport/layer-no-gs.shader_test b/tests/spec/arb_fragment_layer_viewport/layer-no-gs.shader_test new file mode 100644 index 0000000..504e954 --- /dev/null +++ b/tests/spec/arb_fragment_layer_viewport/layer-no-gs.shader_test @@ -0,0 +1,37 @@ +[require] +GLSL >= 1.50 +GL_ARB_fragment_layer_viewport + +# +# If the geometry stage makes no static assignment to gl_Layer, +# the fragment stage will read zero. +# +# This test covers the case where there is no GS present at all. +# + +[vertex shader] +#version 150 +in vec4 piglit_vertex; + +void main() +{ + gl_Position = piglit_vertex; +} + +[fragment shader] +#version 150 +#extension GL_ARB_fragment_layer_viewport: require + +void main() +{ + if (gl_Layer == 0) + 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 +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-no-write.shader_test b/tests/spec/arb_fragment_layer_viewport/viewport-gs-no-write.shader_test new file mode 100644 index 0000000..6902195 --- /dev/null +++ b/tests/spec/arb_fragment_layer_viewport/viewport-gs-no-write.shader_test @@ -0,0 +1,51 @@ +[require] +GLSL >= 1.50 +GL_ARB_fragment_layer_viewport + +# +# If the geometry stage makes no static assignment to gl_ViewportIndex, +# the fragment stage will read zero. +# +# This test covers the case where a GS is present, but does not write gl_ViewportIndex. +# + +[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; + +void main() +{ + for (int i = 0; i < 3; i++) { + gl_Position = gl_in[i].gl_Position; + EmitVertex(); + } +} + +[fragment shader] +#version 150 +#extension GL_ARB_fragment_layer_viewport: require + +void main() +{ + if (gl_ViewportIndex == 0) + 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 +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-no-gs.shader_test b/tests/spec/arb_fragment_layer_viewport/viewport-no-gs.shader_test new file mode 100644 index 0000000..4ac5e09 --- /dev/null +++ b/tests/spec/arb_fragment_layer_viewport/viewport-no-gs.shader_test @@ -0,0 +1,37 @@ +[require] +GLSL >= 1.50 +GL_ARB_fragment_layer_viewport + +# +# If the geometry stage makes no static assignment to gl_ViewportIndex, +# the fragment stage will read zero. +# +# This test covers the case where there is no GS present at all. +# + +[vertex shader] +#version 150 +in vec4 piglit_vertex; + +void main() +{ + gl_Position = piglit_vertex; +} + +[fragment shader] +#version 150 +#extension GL_ARB_fragment_layer_viewport: require + +void main() +{ + if (gl_ViewportIndex == 0) + 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 +draw rect -1 -1 2 2 +probe all rgb 0.0 1.0 0.0 -- 2.0.0 _______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/piglit