[Piglit] [PATCH 1/2] glsl-1.50: add more negative tests for interface block linking

Stuart Abercrombie sabercrombie at google.com
Tue Mar 12 13:48:53 PDT 2013


Can you remove the explicit #version lines in these?  It will be inserted
by shader_runner based on the GLSL >= 1.50.

Reviewed-by: Stuart Abercrombie <sabercrombie at chromium.org>


On Tue, Mar 12, 2013 at 1:28 PM, Jordan Justen <jordan.l.justen at intel.com>wrote:

> A few tests to make sure that interface blocks are defined
> the same during intrastage and interstage linking.
>
> Signed-off-by: Jordan Justen <jordan.l.justen at intel.com>
> ---
>  ...s-multiple-vs-member-count-mismatch.shader_test |   41
> ++++++++++++++++++++
>  ...-blocks-vs-fs-member-count-mismatch.shader_test |   38
> ++++++++++++++++++
>  ...-blocks-vs-fs-member-order-mismatch.shader_test |   39
> +++++++++++++++++++
>  3 files changed, 118 insertions(+)
>  create mode 100644
> tests/spec/glsl-1.50/linker/interface-blocks-multiple-vs-member-count-mismatch.shader_test
>  create mode 100644
> tests/spec/glsl-1.50/linker/interface-blocks-vs-fs-member-count-mismatch.shader_test
>  create mode 100644
> tests/spec/glsl-1.50/linker/interface-blocks-vs-fs-member-order-mismatch.shader_test
>
> diff --git
> a/tests/spec/glsl-1.50/linker/interface-blocks-multiple-vs-member-count-mismatch.shader_test
> b/tests/spec/glsl-1.50/linker/interface-blocks-multiple-vs-member-count-mismatch.shader_test
> new file mode 100644
> index 0000000..6e05e2f
> --- /dev/null
> +++
> b/tests/spec/glsl-1.50/linker/interface-blocks-multiple-vs-member-count-mismatch.shader_test
> @@ -0,0 +1,41 @@
> +# Tests that a link error occurs when an interface block member's type
> +# differs between the vertex and fragment shaders.
> +#
> +# GLSLangSpec.1.50.11, 4.3.7 Interface Blocks:
> +# "Matched block names within an interface (as defined above) must match
> +#  in terms of having the same number of declarations with the same
> +#  sequence of types and the same sequence of member names, as well as
> +#  having the same member-wise layout qualification (see next section)."
> +[require]
> +GLSL >= 1.50
> +
> +[vertex shader]
> +#version 150
> +
> +out block {
> +    vec4 a;
> +} vs1_block;
> +
> +void main()
> +{
> +    gl_Position = vec4(0.0);
> +}
> +
> +[vertex shader]
> +#version 150
> +
> +out block {
> +    vec4 a;
> +    vec4 b; // b is not present in VS #1 interface block
> +} vs_block;
> +
> +[fragment shader]
> +#version 150
> +
> +void main()
> +{
> +}
> +
> +[test]
> +link error
> +
> diff --git
> a/tests/spec/glsl-1.50/linker/interface-blocks-vs-fs-member-count-mismatch.shader_test
> b/tests/spec/glsl-1.50/linker/interface-blocks-vs-fs-member-count-mismatch.shader_test
> new file mode 100644
> index 0000000..7702d3b
> --- /dev/null
> +++
> b/tests/spec/glsl-1.50/linker/interface-blocks-vs-fs-member-count-mismatch.shader_test
> @@ -0,0 +1,38 @@
> +# Tests that a link error occurs when an interface block member's type
> +# differs between the vertex and fragment shaders.
> +#
> +# GLSLangSpec.1.50.11, 4.3.7 Interface Blocks:
> +# "Matched block names within an interface (as defined above) must match
> +#  in terms of having the same number of declarations with the same
> +#  sequence of types and the same sequence of member names, as well as
> +#  having the same member-wise layout qualification (see next section)."
> +[require]
> +GLSL >= 1.50
> +
> +[vertex shader]
> +#version 150
> +
> +out block {
> +    vec4 a;
> +} vs_block;
> +
> +void main()
> +{
> +    gl_Position = vec4(0.0);
> +}
> +
> +[fragment shader]
> +#version 150
> +
> +in block {
> +    vec4 a;
> +    vec4 b; // b is not present in VS interface block
> +} fs_block;
> +
> +void main()
> +{
> +}
> +
> +[test]
> +link error
> +
> diff --git
> a/tests/spec/glsl-1.50/linker/interface-blocks-vs-fs-member-order-mismatch.shader_test
> b/tests/spec/glsl-1.50/linker/interface-blocks-vs-fs-member-order-mismatch.shader_test
> new file mode 100644
> index 0000000..2a3c5ec
> --- /dev/null
> +++
> b/tests/spec/glsl-1.50/linker/interface-blocks-vs-fs-member-order-mismatch.shader_test
> @@ -0,0 +1,39 @@
> +# Tests that a link error occurs when an interface block member's type
> +# differs between the vertex and fragment shaders.
> +#
> +# GLSLangSpec.1.50.11, 4.3.7 Interface Blocks:
> +# "Matched block names within an interface (as defined above) must match
> +#  in terms of having the same number of declarations with the same
> +#  sequence of types and the same sequence of member names, as well as
> +#  having the same member-wise layout qualification (see next section)."
> +[require]
> +GLSL >= 1.50
> +
> +[vertex shader]
> +#version 150
> +
> +out block {
> +    vec4 a;
> +    vec4 b;
> +} vs_block;
> +
> +void main()
> +{
> +    gl_Position = vec4(0.0);
> +}
> +
> +[fragment shader]
> +#version 150
> +
> +in block {
> +    vec4 b; // b is the second member in the VS interface block
> +    vec4 a;
> +} fs_block;
> +
> +void main()
> +{
> +}
> +
> +[test]
> +link error
> +
> --
> 1.7.10.4
>
> _______________________________________________
> Piglit mailing list
> Piglit at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/piglit
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/piglit/attachments/20130312/f2dde8f9/attachment.html>


More information about the Piglit mailing list