[Piglit] [PATCH 1/2] glsl-1.50: check array sizes when instance name differ

Mark Janes mark.a.janes at intel.com
Mon Mar 2 12:29:54 PST 2015


series is

Reviewed-by: Mark Janes <mark.a.janes at intel.com>

Timothy Arceri <t_arceri at yahoo.com.au> writes:

> Uniform interface blocks can have different instance names across shaders. These tests check that array rules are applied correctly.
>
> Test results:
>
> Intel Ivybridge - Mesa 10.6
>
> uniform-block-array-instance-name-mismatch - pass
> uniform-block-array-size-and-instance-name-mismatch - pass
>
> AMD Radeon HD 6670 - Catalyst 14.501.1003 OpenGL 4.4
>
> uniform-block-array-instance-name-mismatch - pass
> uniform-block-array-size-and-instance-name-mismatch - fail
> ---
>  ...-block-array-instance-name-mismatch.shader_test | 28 +++++++++++++++++
>  ...ray-size-and-instance-name-mismatch.shader_test | 36 ++++++++++++++++++++++
>  2 files changed, 72 insertions(+)
>  create mode 100644 tests/spec/glsl-1.50/linker/uniform-block-array-instance-name-mismatch.shader_test
>  create mode 100644 tests/spec/glsl-1.50/linker/uniform-block-array-size-and-instance-name-mismatch.shader_test
>
> diff --git a/tests/spec/glsl-1.50/linker/uniform-block-array-instance-name-mismatch.shader_test b/tests/spec/glsl-1.50/linker/uniform-block-array-instance-name-mismatch.shader_test
> new file mode 100644
> index 0000000..b7066a4
> --- /dev/null
> +++ b/tests/spec/glsl-1.50/linker/uniform-block-array-instance-name-mismatch.shader_test
> @@ -0,0 +1,28 @@
> +// Instance names for uniforms can differ. Check
> +// that the shaders link successfully.
> +
> +[require]
> +GLSL >= 1.50
> +
> +[vertex shader]
> +uniform Foo {
> +  vec4 x;
> +} foo[3];
> +
> +void main()
> +{
> +  gl_Position = vec4(foo[0].x);
> +}
> +
> +[fragment shader]
> +uniform Foo {
> +  vec4 x;
> +} bar[3];
> +
> +void main()
> +{
> +  gl_FragColor = bar[0].x;
> +}
> +
> +[test]
> +link success
> diff --git a/tests/spec/glsl-1.50/linker/uniform-block-array-size-and-instance-name-mismatch.shader_test b/tests/spec/glsl-1.50/linker/uniform-block-array-size-and-instance-name-mismatch.shader_test
> new file mode 100644
> index 0000000..f2a7c70
> --- /dev/null
> +++ b/tests/spec/glsl-1.50/linker/uniform-block-array-size-and-instance-name-mismatch.shader_test
> @@ -0,0 +1,36 @@
> +// From the GLSL 1.50 spec, section 4.3.7 (Interface Blocks):
> +//
> +//     Furthermore, if a matching block is declared as an array, then
> +//     the array sizes must also match (or follow array matching rules
> +//     for the interface between a vertex and a geometry shader).
> +//
> +// In this test, we create a uniform block array in both
> +// the vertex and fragment shaders, using different array sizes. The
> +// instance name of the interface differs across shaders. Then we
> +// check that the implementation correctly reported an error.
> +
> +[require]
> +GLSL >= 1.50
> +
> +[vertex shader]
> +uniform Foo {
> +  vec4 x;
> +} foo[3];
> +
> +void main()
> +{
> +  gl_Position = vec4(foo[0].x);
> +}
> +
> +[fragment shader]
> +uniform Foo {
> +  vec4 x;
> +} bar[2];
> +
> +void main()
> +{
> +  gl_FragColor = bar[0].x;
> +}
> +
> +[test]
> +link error
> -- 
> 2.1.0
>
> _______________________________________________
> Piglit mailing list
> Piglit at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/piglit


More information about the Piglit mailing list