[Piglit] [PATCH] glsl-es-1.00: add constant-index-expression indexing test with struct
Tapani Pälli
tapani.palli at intel.com
Sun Mar 29 22:21:39 PDT 2015
On 03/30/2015 08:08 AM, Matt Turner wrote:
> On Sun, Mar 29, 2015 at 9:52 PM, Tapani Pälli <tapani.palli at intel.com> wrote:
>> On 03/27/2015 06:47 PM, Matt Turner wrote:
>>>
>>> On Fri, Mar 27, 2015 at 12:27 AM, Tapani Pälli <tapani.palli at intel.com>
>>> wrote:
>>>>
>>>> This test fails with current Mesa HEAD (6264348), see bug
>>>> https://bugs.freedesktop.org/show_bug.cgi?id=84225.
>>>>
>>>> Signed-off-by: Tapani Pälli <tapani.palli at intel.com>
>>>> ---
>>>> .../struct-sampler-array-index.frag | 42
>>>> ++++++++++++++++++++++
>>>> 1 file changed, 42 insertions(+)
>>>> create mode 100644
>>>> tests/spec/glsl-es-1.00/compiler/structure-and-array-operations/struct-sampler-array-index.frag
>>>>
>>>> diff --git
>>>> a/tests/spec/glsl-es-1.00/compiler/structure-and-array-operations/struct-sampler-array-index.frag
>>>> b/tests/spec/glsl-es-1.00/compiler/structure-and-array-operations/struct-sampler-array-index.frag
>>>> new file mode 100644
>>>> index 0000000..122a8a4
>>>> --- /dev/null
>>>> +++
>>>> b/tests/spec/glsl-es-1.00/compiler/structure-and-array-operations/struct-sampler-array-index.frag
>>>> @@ -0,0 +1,42 @@
>>>> +/* [config]
>>>> + * expect_result: pass
>>>> + * glsl_version: 1.00
>>>> + * [end config]
>>>> + *
>>>> + * From "Appendix A" of the GLSL ES 1.00 spec:
>>>> + *
>>>> + * "GLSL ES 1.00 supports both arrays of samplers and arrays of
>>>> + * structures which contain samplers. In both these cases, for
>>>> + * ES 2.0, support for indexing with a constant-index-expression
>>>> + * is mandated"
>>>> + *
>>>> + * For additional complexity this test has array of structures
>>>> + * that has array of samplers.
>>>> + *
>>>> + */
>>>> +#version 100
>>>> +
>>>> +struct s_t
>>>> +{
>>>> + sampler2D array[1];
>>>
>>>
>>> array[2].
>>>
>>>> + sampler2D foo;
>>>> +};
>>>> +
>>>> +uniform s_t array[1];
>>>
>>>
>>> array[2].
>>
>>
>> urgh, thanks for pointing these out
>>
>>>> +
>>>> +void main()
>>>> +{
>>>> + highp vec4 color;
>>>> +
>>>> + // case 1, sampler in array of structs
>>>> + for (int i = 0; i < 2; i++) {
>>>> + color += texture2D(array[i].foo, vec2(0.0));
>>>> + }
>>>> +
>>>> + // case 2, index sampler array in array of structs
>>>> + for (int i = 0; i < 2; i++) {
>>>> + color += texture2D(array[i].array[i], vec2(0.0));
>>>> + }
>>>
>>>
>>> I think these would be better as a doubly-nested loop. I was going to
>>> suggest using .length() instead of hardcoded upper bounds, but that's
>>> not really possible with two separate loops, the second of which
>>> assumes the two arrays are of equal size.
>>
>>
>> I wanted to have clear separation because the first case actually passes and
>> only second one fails so there is something different there, not sure if it
>> is clear anymore when having doubly-nested loop (?)
>
> I don't have a strong preference for how you change it, but testing
> that the array[0].array[0] and array[1].array[1] work without testing
> array[0].array[1] or array[1].array[0] seems weird.
Ok, I can change it ,if it introduces something 'new' (because of having
multiple loop variables) it's anyway something that needs to be fixed.
// Tapani
More information about the Piglit
mailing list