[Piglit] [PATCH] Add glsl-array-bounds-13.shader_test tests
tapani.palli at intel.com
Thu Aug 11 05:56:10 UTC 2016
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
> 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 @@
> +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;
> +void main()
> + /* Ensure that there can be no constant folding due to undefined values. */
> + array = 0.0;
> + array = 1.0;
> + gl_FragColor = vec4(0.0, 1.0, 0.0, array[idx]);
> +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
> +draw rect -1 -1 2 2
> +probe all rgb 0.0 1.0 0.0
More information about the Piglit