[Mesa-dev] [RFC PATCH 06/12] glsl: dont allow gl_PerVertex to be redeclared as an array of arrays
Timothy Arceri
t_arceri at yahoo.com.au
Mon Mar 23 14:07:19 PDT 2015
On Mon, 2015-03-23 at 08:58 -0400, Ilia Mirkin wrote:
> On Sat, Mar 21, 2015 at 11:00 PM, Timothy Arceri <t_arceri at yahoo.com.au> wrote:
> > On Sat, 2015-03-21 at 19:34 -0400, Ilia Mirkin wrote:
> >> On Sat, Mar 21, 2015 at 5:49 AM, Timothy Arceri <t_arceri at yahoo.com.au> wrote:
> >> > Signed-off-by: Timothy Arceri <t_arceri at yahoo.com.au>
> >> > ---
> >> > src/glsl/ast_to_hir.cpp | 6 +++++-
> >> > 1 file changed, 5 insertions(+), 1 deletion(-)
> >> >
> >> > diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp
> >> > index 36f3eb7..7516e60 100644
> >> > --- a/src/glsl/ast_to_hir.cpp
> >> > +++ b/src/glsl/ast_to_hir.cpp
> >> > @@ -5595,7 +5595,11 @@ ast_interface_block::hir(exec_list *instructions,
> >> > _mesa_shader_stage_to_string(state->stage));
> >> > }
> >> > if (this->instance_name == NULL ||
> >> > - strcmp(this->instance_name, "gl_in") != 0 || this->array_specifier == NULL) {
> >> > + strcmp(this->instance_name, "gl_in") != 0 || this->array_specifier == NULL ||
> >> > + (this->array_specifier->is_unsized_array &&
> >> > + !this->array_specifier->array_dimensions.is_empty()) ||
> >>
> >> Don't know a lot about AST, but does it make sense to have
> >> ->is_unsized_array && array_dimensions? When would that be true?
> >> Shouldn't this just be !dim.empty() without the is_unsized_array
> >> check?
> >
> > ast is a pain to work with. I don't recall why I wrote it that way but
> > it should be easy to check as it was done so the piglit tests would
> > pass. I will take another look and see if I can rework it to be a little
> > cleaner. Otherwise I might just drop this patch for now.
> >
>
> Please do, but I think that you do need the modification... just not
> the ->is_unsized_array bit of it. I think you want something like
>
> || !is_empty || !is_tail
>
> Basically you don't want gl_in[5], nor gl_in[5][] nor gl_in[][5] nor
> gl_in[][]. Right?
ok, so this is from the piglit test
glsl-1.50/compiler/gs-redeclares-pervertex-in-with-array-size.geom:
// Although the example mentions "gl_in[]", it seems reasonable to
// assume that specifying an array size (e.g. "gl_in[3]") is also
// allowed (this is confirmed by tests of the NVIDIA proprietary
// driver for Linux, version 313.18).
So we don't want gl_in, nor gl_in[5][] nor gl_in[][5] nor gl_in[][] but
gl_in[5] and gl_in[] are ok.
To answer your question from your first reply
> does it make sense to have ->is_unsized_array && array_dimensions?
When would that be true?
An unsized array doesn't have add anything to array_dimensions. So it
would be true for gl_in[][5].
More information about the mesa-dev
mailing list