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

Ilia Mirkin imirkin at alum.mit.edu
Wed Mar 4 07:57:09 PST 2015


On Wed, Mar 4, 2015 at 10:31 AM, Tapani <tapani.palli at intel.com> wrote:

>  On 03/04/2015 05:07 PM, Ilia Mirkin wrote:
>
> On Wed, Mar 4, 2015 at 9:58 AM, Ilia Mirkin <imirkin at alum.mit.edu> <imirkin at alum.mit.edu> wrote:
>
>  On Wed, Mar 4, 2015 at 4:53 AM, Arthur Huillet <arthur.huillet at free.fr> <arthur.huillet at free.fr> wrote:
>
>  From: Arthur Huillet <ahuillet at nvidia.com> <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.
>
>  Also I'm having a ton of trouble parsing the meaning of
>
> """
> 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.
> """
>
> It's unclear to me that it means what you claim it means in the first
> place. Ian, as the resident GL and UBO expert, care to comment? :)
>
>
> IMO Arthur's interpretation is correct. I had to read this many many times
> while writing test for GetProgramResourceIndex to get it, the "a[1]"
> example seems misleading at first. GL_ARB_array_of_arrays is special case
> explained in GL_ARB_program_interface_query spec:
>
> "For a uniform array such as: uniform vec4 a[5][4][3]; we enumerate twenty
> different entries ("a[0][0][0]" through "a[4][3][0]"), ..."
>

Great, so that means that Arthur's approach should work fine here as well.
As long as this is indeed what the spec is saying, the original patch is

Reviewed-by: Ilia Mirkin <imirkin at alum.mit.edu>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/piglit/attachments/20150304/f10e119d/attachment.html>


More information about the Piglit mailing list