[Mesa-dev] [PATCH 4/8] glsl: simplified error checking for duplicated layout-qualifiers

Timothy Arceri timothy.arceri at collabora.com
Mon Oct 31 05:08:59 UTC 2016


On Wed, 2016-10-26 at 18:30 +0300, Andres Gomez wrote:
> Tthe GLSL parser has been simplified to check for the needed

The

> GL_ARB_shading_language_420pack extension just when merging the
> qualifiers in the proper cases.
> 
> Reviewed-by: Timothy Arceri <timothy.arceri at collabora.com>
> Signed-off-by: Andres Gomez <agomez at igalia.com>
> ---
>  src/compiler/glsl/ast_type.cpp   |  6 ++++++
>  src/compiler/glsl/glsl_parser.yy | 24 ------------------------
>  2 files changed, 6 insertions(+), 24 deletions(-)
> 
> diff --git a/src/compiler/glsl/ast_type.cpp
> b/src/compiler/glsl/ast_type.cpp
> index c4ca30d..48ee27e 100644
> --- a/src/compiler/glsl/ast_type.cpp
> +++ b/src/compiler/glsl/ast_type.cpp
> @@ -201,6 +201,12 @@ ast_type_qualifier::merge_qualifier(YYLTYPE
> *loc,
>        return false;
>     }
>  
> +   if (is_multiple_layouts_merge && !state->has_420pack_or_es31()) {
> +      _mesa_glsl_error(loc, state,
> +                       "duplicate layout(...) qualifiers");
> +      return false;
> +   }
> +
>     if (q.flags.q.prim_type) {
>        if (this->flags.q.prim_type && this->prim_type != q.prim_type)
> {
>           _mesa_glsl_error(loc, state,
> diff --git a/src/compiler/glsl/glsl_parser.yy
> b/src/compiler/glsl/glsl_parser.yy
> index 1c93cb4..cef159a 100644
> --- a/src/compiler/glsl/glsl_parser.yy
> +++ b/src/compiler/glsl/glsl_parser.yy
> @@ -1883,9 +1883,6 @@ type_qualifier:
>         * precise qualifiers since these are useful in
> ARB_separate_shader_objects.
>         * There is no clear spec guidance on this either.
>         */
> -      if (!state->has_420pack_or_es31() && $2.has_layout())
> -         _mesa_glsl_error(&@1, state, "duplicate layout(...)
> qualifiers");
> -
>        $$ = $1;
>        $$.merge_qualifier(& @1, state, $2, false, $2.has_layout());
>     }
> @@ -2709,11 +2706,6 @@ interface_block:
>     {
>        ast_interface_block *block = (ast_interface_block *) $2;
>  
> -      if (!state->has_420pack_or_es31() && block-
> >layout.has_layout()) {
> -         _mesa_glsl_error(&@1, state, "duplicate layout(...)
> qualifiers");
> -         YYERROR;
> -      }
> -
>        if (!$1.merge_qualifier(& @1, state, block->layout, false,
>                                block->layout.has_layout())) {
>           YYERROR;
> @@ -2851,10 +2843,6 @@ layout_uniform_defaults:
>     layout_qualifier layout_uniform_defaults
>     {
>        $$ = $1;
> -      if (!state->has_420pack_or_es31()) {
> -         _mesa_glsl_error(&@1, state, "duplicate layout(...)
> qualifiers");
> -         YYERROR;
> -      }
>        if (!$$.merge_qualifier(& @1, state, $2, false, true)) {
>           YYERROR;
>        }
> @@ -2866,10 +2854,6 @@ layout_buffer_defaults:
>     layout_qualifier layout_buffer_defaults
>     {
>        $$ = $1;
> -      if (!state->has_420pack_or_es31()) {
> -         _mesa_glsl_error(&@1, state, "duplicate layout(...)
> qualifiers");
> -         YYERROR;
> -      }
>        if (!$$.merge_qualifier(& @1, state, $2, false, true)) {
>           YYERROR;
>        }
> @@ -2881,10 +2865,6 @@ layout_in_defaults:
>     layout_qualifier layout_in_defaults
>     {
>        $$ = $1;
> -      if (!state->has_420pack_or_es31()) {
> -         _mesa_glsl_error(&@1, state, "duplicate layout(...)
> qualifiers");
> -         YYERROR;
> -      }
>        if (!$$.merge_qualifier(& @1, state, $2, false, true)) {
>           YYERROR;
>        }
> @@ -2896,10 +2876,6 @@ layout_out_defaults:
>     layout_qualifier layout_out_defaults
>     {
>        $$ = $1;
> -      if (!state->has_420pack_or_es31()) {
> -         _mesa_glsl_error(&@1, state, "duplicate layout(...)
> qualifiers");
> -         YYERROR;
> -      }
>        if (!$$.merge_qualifier(& @1, state, $2, false, true)) {
>           YYERROR;
>        }


More information about the mesa-dev mailing list