[Piglit] [PATCH] Add glsl-array-bounds-13.shader_test tests

Tapani Pälli tapani.palli at intel.com
Thu Aug 11 05:56:10 UTC 2016


Hi;

On 08/10/2016 09:34 PM, Nicolai Hähnle wrote:
> From: Nicolai Hähnle <nicolai.haehnle at amd.com>
>
> Compared to the other array bounds tests, this one exercises a larger array
> size.
>
> The motivation is for Radeon, where arrays can be lowered either into the
> register file or into "real" memory. The larger array in this test will be
> sure to hit real memory.
> ---
>  tests/shaders/glsl-array-bounds-13.shader_test | 33 ++++++++++++++++++++++++++
>  1 file changed, 33 insertions(+)
>  create mode 100644 tests/shaders/glsl-array-bounds-13.shader_test
>
> diff --git a/tests/shaders/glsl-array-bounds-13.shader_test b/tests/shaders/glsl-array-bounds-13.shader_test
> new file mode 100644
> index 0000000..95aa550
> --- /dev/null
> +++ b/tests/shaders/glsl-array-bounds-13.shader_test
> @@ -0,0 +1,33 @@
> +[require]
> +GLSL >= 1.20
> +
> +[vertex shader passthrough]
> +
> +[fragment shader]
> +/* Verify that out-of-bounds access to an array does not result in any sort of
> + * program interruption.
> + *
> + * This test case uses a larger array, to cover drivers that have different
> + * lowering paths for different array sizes.
> + *
> + * In this test case the array index will not be constant folded.
> + */
> +#version 120
> +
> +uniform int idx;
> +float array[32];
> +
> +void main()
> +{
> +   /* Ensure that there can be no constant folding due to undefined values. */
> +   array[0] = 0.0;
> +   array[1] = 1.0;
> +   gl_FragColor = vec4(0.0, 1.0, 0.0, array[idx]);
> +}
> +
> +[test]
> +uniform int idx -2

According to GLSL 1.20 specs (and up to 4.50 spec):

'Undefined behavior results from indexing an array with a non-constant 
expression that’s greater than or equal to the array’s size or less than 0."

Having said that, we seem to have many similar tests so I guess it's 
fine to assume some output from the shader, just wanted to prompt that 
perhaps we are testing something that is undefined here?

Reviewed-by: Tapani Pälli <tapani.palli at intel.com>

> +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

// Tapani


More information about the Piglit mailing list