[Piglit] [PATCH] shader_runner: fix uniform array name lookups

Arthur Huillet arthur.huillet at free.fr
Wed Mar 4 07:15:04 PST 2015


On 2015-03-04 15:58, Ilia Mirkin wrote:
> On Wed, Mar 4, 2015 at 4:53 AM, Arthur Huillet <arthur.huillet at free.fr> 
> wrote:
>> From: Arthur Huillet <ahuillet at nvidia.com>
>> 
>> Don't look up uniform names for non-zero array elements, as this is 
>> illegal per GL4.5.
>> 
>> From the discussion of GetProgramResourceIndex in the GL4.5 spec:
>> 
>>        If name exactly matches the name string of one of the active 
>> resources for
>>     programInterface, the index of the matched resource is returned. 
>> Additionally, if
>>     name would exactly match the name string of an active resource if 
>> "[0]" were
>>     appended to name, the index of the matched resource is returned. 
>> Otherwise, name
>>     is considered not to be the name of an active resource, and 
>> INVALID_INDEX is
>>     returned. Note that if an interface enumerates a single active 
>> resource list entry for
>>     an array variable (e.g., "a[0]"), a name identifying any array 
>> element other than
>>     the first (e.g., "a[1]") is not considered to match.
> 
> Hm, and the spec goes on to define GetUniformIndices in terms of
> GetProgramResourceIndex...
> 
> What does this say about a[3].b[75].c[2] ? Do they all have to be 0
> and you have to retrieve all 3 strides? If so, your implementation
> isn't quite doing that.

Sorry, I should have mentioned that this only applies to bottom-level 
arrays, per the following in glspec45.compatibility.pdf:
"For an active variable declared as an array of basic types (e.g. not an 
array
of stuctures or an array of arrays), a single entry will be generated, 
with its
name string formed by concatenating the name of the array and the string
"[0]"."

So as far as I can tell my change matches the spec requirements and the 
NVIDIA implementation.

-- 
Greetings,
A.H.


More information about the Piglit mailing list