On Mon, 2015-09-28 at 13:13 +0300, Francisco Jerez wrote:
> Iago Toral Quiroga <ito...@igalia.com> writes:
> 
> > From: Kristian Høgsberg <k...@bitplanet.net>
> >
> > ---
> >  src/glsl/ast_to_hir.cpp | 6 +++---
> >  1 file changed, 3 insertions(+), 3 deletions(-)
> >
> > diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp
> > index 566cc87..a364aae 100644
> > --- a/src/glsl/ast_to_hir.cpp
> > +++ b/src/glsl/ast_to_hir.cpp
> > @@ -2789,7 +2789,7 @@ apply_type_qualifier_to_variable(const struct 
> > ast_type_qualifier *qual,
> >     }
> >  
> >     if (var->type->contains_atomic()) {
> > -      if (var->data.mode == ir_var_uniform) {
> > +      if (var->data.mode == ir_var_uniform || var->data.mode == 
> > ir_var_shader_storage) {
> >           if (var->data.explicit_binding) {
> >              unsigned *offset =
> >                 &state->atomic_counter_offsets[var->data.binding];
> > @@ -2807,8 +2807,8 @@ apply_type_qualifier_to_variable(const struct 
> > ast_type_qualifier *qual,
> >           }
> >        } else if (var->data.mode != ir_var_function_in) {
> >           _mesa_glsl_error(loc, state, "atomic counters may only be 
> > declared as "
> > -                          "function parameters or uniform-qualified "
> > -                          "global variables");
> > +                          "function parameters, uniform-qualified or "
> > +                          "buffer-qualified global variables");
> >        }
> >     }
> >  
> 
> Spec quote?  Declaring an atomic counter to have buffer storage is
> illegal AFAIK.

I think you are right, the specs don't seem to include any explicit
restrictions affecting the allowed types for buffer variables, however,
the description of opaque types seems to be in conflict with that:

"The opaque types declare variables that are effectively opaque 
handles to other objects. These objects are
accessed through built-in functions, not through direct reading or
writing of the declared variable.
(...)
Opaque variables cannot be treated as l-values;(...)"

I am thinking that we probably want to revert this patch and instead
check that buffer variables do not contain references to any opaque
types and produce a compile-time error if that is the case. I'll send
patches for this. Maybe the specs should be amended to mention this
explicitly too. Ian, what do you think?

Iago


_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to