Reviewed-by: Jordan Justen <jordan.l.jus...@intel.com>
On Fri, Jun 27, 2014 at 2:21 AM, Chris Forbes <chr...@ijw.co.nz> wrote: > If another layout qualifier appeared to the left of `invocations` in the > GS input layout declaration, the invocation count would be dropped on > the floor. > > Fixes the piglit test: > > spec/ARB_transform_feedback3/arb_transform_feedback3-ext_interleaved_two_bufs_gs_max > > Signed-off-by: Chris Forbes <chr...@ijw.co.nz> > Cc: Ilia Mirkin <imir...@alum.mit.edu> > --- > > Note that the handling of the special rules for layout declarations in > general is a bit of a disaster -- merge_in_qualifier tries to do the right > thing, but merge_qualifier still ends up coming into play in various cases. > It's probably better to dispose of the distinction within the parser, and > disallow qualifiers appearing in the wrong contexts later. (This is what is > already done to disallow layout-declaration-only qualifiers on variables) > > src/glsl/ast_type.cpp | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/src/glsl/ast_type.cpp b/src/glsl/ast_type.cpp > index 77053d5..ddd1f4e 100644 > --- a/src/glsl/ast_type.cpp > +++ b/src/glsl/ast_type.cpp > @@ -154,6 +154,16 @@ ast_type_qualifier::merge_qualifier(YYLTYPE *loc, > this->max_vertices = q.max_vertices; > } > > + if (q.flags.q.invocations) { > + if (this->flags.q.invocations && this->invocations != q.invocations) { > + _mesa_glsl_error(loc, state, > + "geometry shader set conflicting invocations " > + "(%d and %d)", this->invocations, q.invocations); > + return false; > + } > + this->invocations = q.invocations; > + } > + > if ((q.flags.i & ubo_mat_mask.flags.i) != 0) > this->flags.i &= ~ubo_mat_mask.flags.i; > if ((q.flags.i & ubo_layout_mask.flags.i) != 0) > -- > 2.0.0 > > _______________________________________________ > 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