[Piglit] [PATCH] Add glsl-array-bounds-13.shader_test tests
eric at anholt.net
Thu Aug 11 18:53:11 UTC 2016
Nicolai Hähnle <nhaehnle at gmail.com> writes:
> On 11.08.2016 07:56, Tapani Pälli wrote:
>> 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
>>> 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
>>> 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
>>> + * 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
>> 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?
> I think you're right in theory. Undefined behavior might mean that the
> pixel shader gets terminated without writing anything to the
> framebuffer, though it definitely isn't allowed to mean program
> termination or hangs.
> In practice, given that nobody has complained about these tests in the
> past, the UB seems to be limited to undefined data results in all
> implementations... if anybody ever complains, we might have to remove
> the probe checks from the test script.
I've definitely had to remove people's broken probes for undefined array
accesses in the past. Please remove the probe checks now.
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 818 bytes
Desc: not available
More information about the Piglit