[Piglit] [PATCH 3/4] arb_fragment_layer_viewport: Add tests for not-written cases

Ilia Mirkin imirkin at alum.mit.edu
Sun Jun 22 14:13:34 PDT 2014


On Sun, Jun 22, 2014 at 1:25 AM, Chris Forbes <chrisf at ijw.co.nz> wrote:
> Signed-off-by: Chris Forbes <chrisf at 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;
> +}

This is the same as having

[vertex shader passthrough]

right?

Either way,

Reviewed-by: Ilia Mirkin <imirkin at alum.mit.edu>

> +
> +[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 at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/piglit


More information about the Piglit mailing list