Re: [Mesa-dev] [PATCH 1/3] glsl: skip buffer variables when filling UniformRemapTable

2015-10-20 Thread Timothy Arceri
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

2015-10-20 Thread Samuel Iglesias Gonsálvez
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

2015-10-20 Thread Lofstedt, Marta
> -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

2015-10-20 Thread Tapani Pälli



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

2015-10-20 Thread Lofstedt, Marta
> -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

2015-10-20 Thread Tapani Pälli



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

2015-10-20 Thread Lofstedt, Marta

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

2015-10-20 Thread Tapani Pälli
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