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

Reply via email to