[Piglit] [PATCH 2/2] OES_shader_io_blocks: Test the redactions relative to GLSL 4.4

Ilia Mirkin imirkin at alum.mit.edu
Thu May 12 01:50:14 UTC 2016


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

On Wed, May 11, 2016 at 9:27 PM, Ian Romanick <idr at freedesktop.org> wrote:
> From: Ian Romanick <ian.d.romanick at intel.com>
>
> This covers most of the differences enumerated by issue #1.  The
> following items are not tested:
>
>     * double-precision scalars and vectors
>     * matching across shader stages with different qualifiers (other
>       than precision and "in"/"out").
>     * References allowing or assuming more than one shader object per
>       pipeline stage.
>
> I don't think it's particuarly necessary to test the first or third
> items, and I'm not really sure what the second item means.
>
> Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
> ---
>  .../compiler/layout-component.vert                 | 42 +++++++++++++++
>  .../compiler/layout-depth_any.frag                 | 39 ++++++++++++++
>  .../compiler/layout-depth_greater.frag             | 39 ++++++++++++++
>  .../compiler/layout-depth_less.frag                | 39 ++++++++++++++
>  .../compiler/layout-depth_unchanged.frag           | 39 ++++++++++++++
>  .../compiler/layout-gl_ClipDistance.frag           | 43 ++++++++++++++++
>  .../compiler/layout-gl_ClipDistance.vert           | 44 ++++++++++++++++
>  .../compiler/layout-gl_PerFragment.frag            | 43 ++++++++++++++++
>  .../compiler/layout-location-aliasing.vert         | 60 ++++++++++++++++++++++
>  .../compiler/layout-output-index.frag              | 39 ++++++++++++++
>  10 files changed, 427 insertions(+)
>  create mode 100644 tests/spec/oes_shader_io_blocks/compiler/layout-component.vert
>  create mode 100644 tests/spec/oes_shader_io_blocks/compiler/layout-depth_any.frag
>  create mode 100644 tests/spec/oes_shader_io_blocks/compiler/layout-depth_greater.frag
>  create mode 100644 tests/spec/oes_shader_io_blocks/compiler/layout-depth_less.frag
>  create mode 100644 tests/spec/oes_shader_io_blocks/compiler/layout-depth_unchanged.frag
>  create mode 100644 tests/spec/oes_shader_io_blocks/compiler/layout-gl_ClipDistance.frag
>  create mode 100644 tests/spec/oes_shader_io_blocks/compiler/layout-gl_ClipDistance.vert
>  create mode 100644 tests/spec/oes_shader_io_blocks/compiler/layout-gl_PerFragment.frag
>  create mode 100644 tests/spec/oes_shader_io_blocks/compiler/layout-location-aliasing.vert
>  create mode 100644 tests/spec/oes_shader_io_blocks/compiler/layout-output-index.frag
>
> diff --git a/tests/spec/oes_shader_io_blocks/compiler/layout-component.vert b/tests/spec/oes_shader_io_blocks/compiler/layout-component.vert
> new file mode 100644
> index 0000000..d85f724
> --- /dev/null
> +++ b/tests/spec/oes_shader_io_blocks/compiler/layout-component.vert
> @@ -0,0 +1,42 @@
> +/* [config]
> + * expect_result: fail
> + * glsl_version: 3.10 es
> + * require_extensions: GL_OES_shader_io_blocks
> + * [end config]
> + *
> + * The GL_OES_shader_io_blocks spec says:
> + *
> + * "Issues
> + *
> + *      (1) What functionality was removed from interface blocks relative to
> + *          GL 4.4?
> + *
> + *        - Interactions with features not supported by the underlying
> + *          ES 3.1 API and Shading Language, including:
> + *            * gl_ClipDistance shader inputs and outputs.
> + *            * "component" layout
> + *            * location aliasing
> + *            * fragment shader output "index" layout
> + *            * fragment shader gl_FragDepth layout "depth*" qualifiers
> + *            * double-precision scalars and vectors
> + *            * matching across shader stages with different qualifiers (other
> + *              than precision and "in"/"out").
> + *            * References allowing or assuming more than one shader object per
> + *              pipeline stage.
> + *            * gl_PerFragment is not added (only exists in compatibility
> + *              profile)."
> + */
> +
> +#version 310 es
> +#extension GL_OES_shader_io_blocks: require
> +precision highp float;
> +
> +out vertex {
> +    layout(location=0, component=3) float x;
> +};
> +
> +void main(void)
> +{
> +    gl_Position = vec4(0);
> +    x = 3.14;
> +}
> diff --git a/tests/spec/oes_shader_io_blocks/compiler/layout-depth_any.frag b/tests/spec/oes_shader_io_blocks/compiler/layout-depth_any.frag
> new file mode 100644
> index 0000000..5c846d4
> --- /dev/null
> +++ b/tests/spec/oes_shader_io_blocks/compiler/layout-depth_any.frag
> @@ -0,0 +1,39 @@
> +/* [config]
> + * expect_result: fail
> + * glsl_version: 3.10 es
> + * require_extensions: GL_OES_shader_io_blocks
> + * [end config]
> + *
> + * The GL_OES_shader_io_blocks spec says:
> + *
> + * "Issues
> + *
> + *      (1) What functionality was removed from interface blocks relative to
> + *          GL 4.4?
> + *
> + *        - Interactions with features not supported by the underlying
> + *          ES 3.1 API and Shading Language, including:
> + *            * gl_ClipDistance shader inputs and outputs.
> + *            * "component" layout
> + *            * location aliasing
> + *            * fragment shader output "index" layout
> + *            * fragment shader gl_FragDepth layout "depth*" qualifiers
> + *            * double-precision scalars and vectors
> + *            * matching across shader stages with different qualifiers (other
> + *              than precision and "in"/"out").
> + *            * References allowing or assuming more than one shader object per
> + *              pipeline stage.
> + *            * gl_PerFragment is not added (only exists in compatibility
> + *              profile)."
> + */
> +
> +#version 310 es
> +#extension GL_OES_shader_io_blocks: require
> +precision highp float;
> +
> +layout(depth_any) out float gl_FragDepth;
> +
> +void main(void)
> +{
> +    c = vec4(0);
> +}
> diff --git a/tests/spec/oes_shader_io_blocks/compiler/layout-depth_greater.frag b/tests/spec/oes_shader_io_blocks/compiler/layout-depth_greater.frag
> new file mode 100644
> index 0000000..fca2cc4
> --- /dev/null
> +++ b/tests/spec/oes_shader_io_blocks/compiler/layout-depth_greater.frag
> @@ -0,0 +1,39 @@
> +/* [config]
> + * expect_result: fail
> + * glsl_version: 3.10 es
> + * require_extensions: GL_OES_shader_io_blocks
> + * [end config]
> + *
> + * The GL_OES_shader_io_blocks spec says:
> + *
> + * "Issues
> + *
> + *      (1) What functionality was removed from interface blocks relative to
> + *          GL 4.4?
> + *
> + *        - Interactions with features not supported by the underlying
> + *          ES 3.1 API and Shading Language, including:
> + *            * gl_ClipDistance shader inputs and outputs.
> + *            * "component" layout
> + *            * location aliasing
> + *            * fragment shader output "index" layout
> + *            * fragment shader gl_FragDepth layout "depth*" qualifiers
> + *            * double-precision scalars and vectors
> + *            * matching across shader stages with different qualifiers (other
> + *              than precision and "in"/"out").
> + *            * References allowing or assuming more than one shader object per
> + *              pipeline stage.
> + *            * gl_PerFragment is not added (only exists in compatibility
> + *              profile)."
> + */
> +
> +#version 310 es
> +#extension GL_OES_shader_io_blocks: require
> +precision highp float;
> +
> +layout(depth_greater) out float gl_FragDepth;
> +
> +void main(void)
> +{
> +    c = vec4(0);
> +}
> diff --git a/tests/spec/oes_shader_io_blocks/compiler/layout-depth_less.frag b/tests/spec/oes_shader_io_blocks/compiler/layout-depth_less.frag
> new file mode 100644
> index 0000000..004b812
> --- /dev/null
> +++ b/tests/spec/oes_shader_io_blocks/compiler/layout-depth_less.frag
> @@ -0,0 +1,39 @@
> +/* [config]
> + * expect_result: fail
> + * glsl_version: 3.10 es
> + * require_extensions: GL_OES_shader_io_blocks
> + * [end config]
> + *
> + * The GL_OES_shader_io_blocks spec says:
> + *
> + * "Issues
> + *
> + *      (1) What functionality was removed from interface blocks relative to
> + *          GL 4.4?
> + *
> + *        - Interactions with features not supported by the underlying
> + *          ES 3.1 API and Shading Language, including:
> + *            * gl_ClipDistance shader inputs and outputs.
> + *            * "component" layout
> + *            * location aliasing
> + *            * fragment shader output "index" layout
> + *            * fragment shader gl_FragDepth layout "depth*" qualifiers
> + *            * double-precision scalars and vectors
> + *            * matching across shader stages with different qualifiers (other
> + *              than precision and "in"/"out").
> + *            * References allowing or assuming more than one shader object per
> + *              pipeline stage.
> + *            * gl_PerFragment is not added (only exists in compatibility
> + *              profile)."
> + */
> +
> +#version 310 es
> +#extension GL_OES_shader_io_blocks: require
> +precision highp float;
> +
> +layout(depth_less) out float gl_FragDepth;
> +
> +void main(void)
> +{
> +    c = vec4(0);
> +}
> diff --git a/tests/spec/oes_shader_io_blocks/compiler/layout-depth_unchanged.frag b/tests/spec/oes_shader_io_blocks/compiler/layout-depth_unchanged.frag
> new file mode 100644
> index 0000000..078218e
> --- /dev/null
> +++ b/tests/spec/oes_shader_io_blocks/compiler/layout-depth_unchanged.frag
> @@ -0,0 +1,39 @@
> +/* [config]
> + * expect_result: fail
> + * glsl_version: 3.10 es
> + * require_extensions: GL_OES_shader_io_blocks
> + * [end config]
> + *
> + * The GL_OES_shader_io_blocks spec says:
> + *
> + * "Issues
> + *
> + *      (1) What functionality was removed from interface blocks relative to
> + *          GL 4.4?
> + *
> + *        - Interactions with features not supported by the underlying
> + *          ES 3.1 API and Shading Language, including:
> + *            * gl_ClipDistance shader inputs and outputs.
> + *            * "component" layout
> + *            * location aliasing
> + *            * fragment shader output "index" layout
> + *            * fragment shader gl_FragDepth layout "depth*" qualifiers
> + *            * double-precision scalars and vectors
> + *            * matching across shader stages with different qualifiers (other
> + *              than precision and "in"/"out").
> + *            * References allowing or assuming more than one shader object per
> + *              pipeline stage.
> + *            * gl_PerFragment is not added (only exists in compatibility
> + *              profile)."
> + */
> +
> +#version 310 es
> +#extension GL_OES_shader_io_blocks: require
> +precision highp float;
> +
> +layout(depth_unchanged) out float gl_FragDepth;
> +
> +void main(void)
> +{
> +    c = vec4(0);
> +}
> diff --git a/tests/spec/oes_shader_io_blocks/compiler/layout-gl_ClipDistance.frag b/tests/spec/oes_shader_io_blocks/compiler/layout-gl_ClipDistance.frag
> new file mode 100644
> index 0000000..a6683b6
> --- /dev/null
> +++ b/tests/spec/oes_shader_io_blocks/compiler/layout-gl_ClipDistance.frag
> @@ -0,0 +1,43 @@
> +/* [config]
> + * expect_result: fail
> + * glsl_version: 3.10 es
> + * require_extensions: GL_OES_shader_io_blocks
> + * [end config]
> + *
> + * The GL_OES_shader_io_blocks spec says:
> + *
> + * "Issues
> + *
> + *      (1) What functionality was removed from interface blocks relative to
> + *          GL 4.4?
> + *
> + *        - Interactions with features not supported by the underlying
> + *          ES 3.1 API and Shading Language, including:
> + *            * gl_ClipDistance shader inputs and outputs.
> + *            * "component" layout
> + *            * location aliasing
> + *            * fragment shader output "index" layout
> + *            * fragment shader gl_FragDepth layout "depth*" qualifiers
> + *            * double-precision scalars and vectors
> + *            * matching across shader stages with different qualifiers (other
> + *              than precision and "in"/"out").
> + *            * References allowing or assuming more than one shader object per
> + *              pipeline stage.
> + *            * gl_PerFragment is not added (only exists in compatibility
> + *              profile)."
> + */
> +
> +#version 310 es
> +#extension GL_OES_shader_io_blocks: require
> +precision highp float;
> +
> +in float gl_ClipDistance[2];
> +
> +out vec4 c;
> +
> +void main(void)
> +{
> +    c = vec4(gl_ClipDistance[0],
> +             gl_ClipDistance[1],
> +             0.0, 1.0);
> +}
> diff --git a/tests/spec/oes_shader_io_blocks/compiler/layout-gl_ClipDistance.vert b/tests/spec/oes_shader_io_blocks/compiler/layout-gl_ClipDistance.vert
> new file mode 100644
> index 0000000..ada8b10
> --- /dev/null
> +++ b/tests/spec/oes_shader_io_blocks/compiler/layout-gl_ClipDistance.vert
> @@ -0,0 +1,44 @@
> +/* [config]
> + * expect_result: fail
> + * glsl_version: 3.10 es
> + * require_extensions: GL_OES_shader_io_blocks
> + * [end config]
> + *
> + * The GL_OES_shader_io_blocks spec says:
> + *
> + * "Issues
> + *
> + *      (1) What functionality was removed from interface blocks relative to
> + *          GL 4.4?
> + *
> + *        - Interactions with features not supported by the underlying
> + *          ES 3.1 API and Shading Language, including:
> + *            * gl_ClipDistance shader inputs and outputs.
> + *            * "component" layout
> + *            * location aliasing
> + *            * fragment shader output "index" layout
> + *            * fragment shader gl_FragDepth layout "depth*" qualifiers
> + *            * double-precision scalars and vectors
> + *            * matching across shader stages with different qualifiers (other
> + *              than precision and "in"/"out").
> + *            * References allowing or assuming more than one shader object per
> + *              pipeline stage.
> + *            * gl_PerFragment is not added (only exists in compatibility
> + *              profile)."
> + */
> +
> +#version 310 es
> +#extension GL_OES_shader_io_blocks: require
> +precision highp float;
> +
> +out gl_PerVertex {
> +    vec4 gl_Position;
> +    float gl_ClipDistance[2];
> +};
> +
> +void main(void)
> +{
> +    gl_Position = vec4(0);
> +    gl_ClipDistance[0] = 0.5;
> +    gl_ClipDistance[1] = 0.5;
> +}
> diff --git a/tests/spec/oes_shader_io_blocks/compiler/layout-gl_PerFragment.frag b/tests/spec/oes_shader_io_blocks/compiler/layout-gl_PerFragment.frag
> new file mode 100644
> index 0000000..c9033cc
> --- /dev/null
> +++ b/tests/spec/oes_shader_io_blocks/compiler/layout-gl_PerFragment.frag
> @@ -0,0 +1,43 @@
> +/* [config]
> + * expect_result: fail
> + * glsl_version: 3.10 es
> + * require_extensions: GL_OES_shader_io_blocks
> + * [end config]
> + *
> + * The GL_OES_shader_io_blocks spec says:
> + *
> + * "Issues
> + *
> + *      (1) What functionality was removed from interface blocks relative to
> + *          GL 4.4?
> + *
> + *        - Interactions with features not supported by the underlying
> + *          ES 3.1 API and Shading Language, including:
> + *            * gl_ClipDistance shader inputs and outputs.
> + *            * "component" layout
> + *            * location aliasing
> + *            * fragment shader output "index" layout
> + *            * fragment shader gl_FragDepth layout "depth*" qualifiers
> + *            * double-precision scalars and vectors
> + *            * matching across shader stages with different qualifiers (other
> + *              than precision and "in"/"out").
> + *            * References allowing or assuming more than one shader object per
> + *              pipeline stage.
> + *            * gl_PerFragment is not added (only exists in compatibility
> + *              profile).
> + */
> +
> +#version 310 es
> +#extension GL_OES_shader_io_blocks: require
> +precision highp float;
> +
> +in gl_PerFragment {
> +   vec4 gl_Color;
> +};
> +
> +out vec4 c;
> +
> +void main(void)
> +{
> +    c = vec4(0);
> +}
> diff --git a/tests/spec/oes_shader_io_blocks/compiler/layout-location-aliasing.vert b/tests/spec/oes_shader_io_blocks/compiler/layout-location-aliasing.vert
> new file mode 100644
> index 0000000..02f7d44
> --- /dev/null
> +++ b/tests/spec/oes_shader_io_blocks/compiler/layout-location-aliasing.vert
> @@ -0,0 +1,60 @@
> +/* [config]
> + * expect_result: fail
> + * glsl_version: 3.10 es
> + * require_extensions: GL_OES_shader_io_blocks
> + * [end config]
> + *
> + * The GL_OES_shader_io_blocks spec says:
> + *
> + * "Issues
> + *
> + *      (1) What functionality was removed from interface blocks relative to
> + *          GL 4.4?
> + *
> + *        - Interactions with features not supported by the underlying
> + *          ES 3.1 API and Shading Language, including:
> + *            * gl_ClipDistance shader inputs and outputs.
> + *            * "component" layout
> + *            * location aliasing
> + *            * fragment shader output "index" layout
> + *            * fragment shader gl_FragDepth layout "depth*" qualifiers
> + *            * double-precision scalars and vectors
> + *            * matching across shader stages with different qualifiers (other
> + *              than precision and "in"/"out").
> + *            * References allowing or assuming more than one shader object per
> + *              pipeline stage.
> + *            * gl_PerFragment is not added (only exists in compatibility
> + *              profile)."
> + */
> +
> +#version 310 es
> +#extension GL_OES_shader_io_blocks: require
> +precision highp float;
> +
> +layout(location=4) out vertex {
> +     vec4 a;
> +     vec4 b;
> +     vec4 c;
> +     layout(location=0) vec4 d;
> +     vec4 e;
> +     vec4 f;
> +     vec4 g; // error - location 4 already occupied
> +};
> +
> +uniform bool flag;
> +
> +void main(void)
> +{
> +    gl_Position = vec4(0);
> +
> +    if (flag)
> +        g = vec4(1);
> +    else
> +        a = vec4(2);
> +
> +    b = vec4(3);
> +    c = vec4(4);
> +    d = vec4(5);
> +    e = vec4(6);
> +    f = vec4(7);
> +}
> diff --git a/tests/spec/oes_shader_io_blocks/compiler/layout-output-index.frag b/tests/spec/oes_shader_io_blocks/compiler/layout-output-index.frag
> new file mode 100644
> index 0000000..b0906fd
> --- /dev/null
> +++ b/tests/spec/oes_shader_io_blocks/compiler/layout-output-index.frag
> @@ -0,0 +1,39 @@
> +/* [config]
> + * expect_result: fail
> + * glsl_version: 3.10 es
> + * require_extensions: GL_OES_shader_io_blocks
> + * [end config]
> + *
> + * The GL_OES_shader_io_blocks spec says:
> + *
> + * "Issues
> + *
> + *      (1) What functionality was removed from interface blocks relative to
> + *          GL 4.4?
> + *
> + *        - Interactions with features not supported by the underlying
> + *          ES 3.1 API and Shading Language, including:
> + *            * gl_ClipDistance shader inputs and outputs.
> + *            * "component" layout
> + *            * location aliasing
> + *            * fragment shader output "index" layout
> + *            * fragment shader gl_FragDepth layout "depth*" qualifiers
> + *            * double-precision scalars and vectors
> + *            * matching across shader stages with different qualifiers (other
> + *              than precision and "in"/"out").
> + *            * References allowing or assuming more than one shader object per
> + *              pipeline stage.
> + *            * gl_PerFragment is not added (only exists in compatibility
> + *              profile)."
> + */
> +
> +#version 310 es
> +#extension GL_OES_shader_io_blocks: require
> +precision highp float;
> +
> +layout(location=0, index=0) vec4 c;
> +
> +void main(void)
> +{
> +    c = vec4(0);
> +}
> --
> 2.5.5
>
> _______________________________________________
> Piglit mailing list
> Piglit at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/piglit


More information about the Piglit mailing list