[Mesa-dev] [PATCH 1/3] glsl: skip buffer variables when filling UniformRemapTable
Lofstedt, Marta
marta.lofstedt at intel.com
Tue Oct 20 03:40:25 PDT 2015
> -----Original Message-----
> From: Palli, Tapani
> Sent: Tuesday, October 20, 2015 12:25 PM
> To: Lofstedt, Marta; mesa-dev at lists.freedesktop.org
> Subject: Re: [Mesa-dev] [PATCH 1/3] glsl: skip buffer variables when filling
> UniformRemapTable
>
>
>
> On 10/20/2015 01:11 PM, Lofstedt, Marta wrote:
> >
> > If you also remove the uniforms[i].array_elements in the same manner,
> the assert in:
> > ES31-CTS.explicit_uniform_location.uniform-loc-arrays-of-arrays
> > Is also avoided.
>
> Are you referring to one of the loops iterating uniforms in this same place the
> patch is touching?
Yes, I hit the same assert in "uniform-loc-structs" and "uniform-loc-arrays-of-arrays", with your patchset I no longer hit the assert for the "uniform-loc-structs" tests.
If I also remove array_elements I also avoid the assert in "uniform-loc-arrays-of-arrays". This is just an observation, not a suggestion of a fix.
>
> For me it looks like the problem with arrays-of-arrays test is that it will assign
> overlapping locations currently for uniforms if we have 'arrays of arrays'
> situation going on.
>
> For example with
>
> layout(location = 0) uniform float uni[2][2]
>
> uni[0] gets location 0, but uni[1] has gets location 0 too. I haven't quite
> figured out yet where the issue is but the location counter gets reset for
> each array item and starts again from 0 while it should actually maintain its
> count ..
>
>
> >> -----Original Message-----
> >> From: mesa-dev [mailto:mesa-dev-bounces at lists.freedesktop.org] On
> >> Behalf Of Tapani Pälli
> >> Sent: Tuesday, October 20, 2015 11:24 AM
> >> To: mesa-dev at lists.freedesktop.org
> >> Subject: [Mesa-dev] [PATCH 1/3] glsl: skip buffer variables when
> >> filling UniformRemapTable
> >>
> >> UniformRemapTable is used only for remapping user specified uniform
> >> locations to driver internally used ones, shader storage buffer
> >> variables should not utilize uniform locations.
> >>
> >> Signed-off-by: Tapani Pälli <tapani.palli at intel.com>
> >> ---
> >> src/glsl/link_uniforms.cpp | 7 +++++--
> >> 1 file changed, 5 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/src/glsl/link_uniforms.cpp b/src/glsl/link_uniforms.cpp
> >> index
> >> fe00aa3..f7b87a1 100644
> >> --- a/src/glsl/link_uniforms.cpp
> >> +++ b/src/glsl/link_uniforms.cpp
> >> @@ -1180,7 +1180,8 @@ link_assign_uniform_locations(struct
> >> gl_shader_program *prog,
> >>
> >> /* Reserve all the explicit locations of the active uniforms. */
> >> for (unsigned i = 0; i < num_uniforms; i++) {
> >> - if (uniforms[i].type->is_subroutine())
> >> + if (uniforms[i].type->is_subroutine() ||
> >> + uniforms[i].is_shader_storage)
> >> continue;
> >>
> >> if (uniforms[i].remap_location != UNMAPPED_UNIFORM_LOC) { @@
> >> -
> >> 1200,8 +1201,10 @@ link_assign_uniform_locations(struct
> >> gl_shader_program *prog,
> >> /* Reserve locations for rest of the uniforms. */
> >> for (unsigned i = 0; i < num_uniforms; i++) {
> >>
> >> - if (uniforms[i].type->is_subroutine())
> >> + if (uniforms[i].type->is_subroutine() ||
> >> + uniforms[i].is_shader_storage)
> >> continue;
> >> +
> >> /* Built-in uniforms should not get any location. */
> >> if (uniforms[i].builtin)
> >> continue;
> >> --
> >> 2.4.3
> >>
> >> _______________________________________________
> >> mesa-dev mailing list
> >> mesa-dev at lists.freedesktop.org
> >> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list