[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 21:52:19 PDT 2015



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 (?)


>> +
>> +       gl_FragColor = color;
>> +}
>> --
>> 2.1.0
>>


// Tapani


More information about the Piglit mailing list