Re: [Mesa-dev] [PATCH 1/3] glsl: skip buffer variables when filling UniformRemapTable
On Tue, 2015-10-20 at 13:55 +0300, Tapani Pälli wrote: > > On 10/20/2015 01:40 PM, Lofstedt, Marta wrote: > > > -Original Message- > > > From: Palli, Tapani > > > Sent: Tuesday, October 20, 2015 12:25 PM > > > To: Lofstedt, Marta; mesa-dev@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. > > Right, I was not sure at first what you meant by 'removing > array_elements'. I was hoping arrays-of-arrays to be the same case as > with loc-structs but unfortunately seems quite different, we just > lack > some support for arrays of arrays here. Will dig more! I've just sent a couple of patches to fix the AoA support :) Although the test still fails as it looks like some compute shader support is still missing. > > > > > > > > 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-boun...@lists.freedesktop.org > > > > > ] On > > > > > Behalf Of Tapani Pälli > > > > > Sent: Tuesday, October 20, 2015 11:24 AM > > > > > To: mesa-dev@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 > > > > > --- > > > > >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@lists.freedesktop.org > > > > > http://lists.freedesktop.org/mailman/listinfo/mesa-dev > ___ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH 1/3] glsl: skip buffer variables when filling UniformRemapTable
Series is Reviewed-by: Samuel Iglesias Gonsálvez Thanks, Sam On 20/10/15 11:24, Tapani Pälli wrote: > 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 > --- > 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; > ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH 1/3] glsl: skip buffer variables when filling UniformRemapTable
> -Original Message- > From: Palli, Tapani > Sent: Tuesday, October 20, 2015 12:55 PM > To: Lofstedt, Marta; mesa-dev@lists.freedesktop.org > Subject: Re: [Mesa-dev] [PATCH 1/3] glsl: skip buffer variables when filling > UniformRemapTable > > > > On 10/20/2015 01:40 PM, Lofstedt, Marta wrote: > >> -Original Message- > >> From: Palli, Tapani > >> Sent: Tuesday, October 20, 2015 12:25 PM > >> To: Lofstedt, Marta; mesa-dev@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. > > Right, I was not sure at first what you meant by 'removing array_elements'. I > was hoping arrays-of-arrays to be the same case as with loc-structs but > unfortunately seems quite different, we just lack some support for arrays of > arrays here. Will dig more! The arrays test is another problem... This patch-set solves the problem it set out to solve, so I consider the whole patchset: Reviewed-by: Marta Lofstedt > > > >> > >> 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-boun...@lists.freedesktop.org] On > >>>> Behalf Of Tapani Pälli > >>>> Sent: Tuesday, October 20, 2015 11:24 AM > >>>> To: mesa-dev@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 > >>>> --- > >>>>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@lists.freedesktop.org > >>>> http://lists.freedesktop.org/mailman/listinfo/mesa-dev ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH 1/3] glsl: skip buffer variables when filling UniformRemapTable
On 10/20/2015 01:40 PM, Lofstedt, Marta wrote: -Original Message- From: Palli, Tapani Sent: Tuesday, October 20, 2015 12:25 PM To: Lofstedt, Marta; mesa-dev@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. Right, I was not sure at first what you meant by 'removing array_elements'. I was hoping arrays-of-arrays to be the same case as with loc-structs but unfortunately seems quite different, we just lack some support for arrays of arrays here. Will dig more! 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-boun...@lists.freedesktop.org] On Behalf Of Tapani Pälli Sent: Tuesday, October 20, 2015 11:24 AM To: mesa-dev@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 --- 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@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH 1/3] glsl: skip buffer variables when filling UniformRemapTable
> -Original Message- > From: Palli, Tapani > Sent: Tuesday, October 20, 2015 12:25 PM > To: Lofstedt, Marta; mesa-dev@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-boun...@lists.freedesktop.org] On > >> Behalf Of Tapani Pälli > >> Sent: Tuesday, October 20, 2015 11:24 AM > >> To: mesa-dev@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 > >> --- > >> 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@lists.freedesktop.org > >> http://lists.freedesktop.org/mailman/listinfo/mesa-dev ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev
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? 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-boun...@lists.freedesktop.org] On Behalf Of Tapani Pälli Sent: Tuesday, October 20, 2015 11:24 AM To: mesa-dev@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 --- 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@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH 1/3] glsl: skip buffer variables when filling UniformRemapTable
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. > -Original Message- > From: mesa-dev [mailto:mesa-dev-boun...@lists.freedesktop.org] On > Behalf Of Tapani Pälli > Sent: Tuesday, October 20, 2015 11:24 AM > To: mesa-dev@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 > --- > 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@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev
[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 --- 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@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev