[Mesa-dev] [PATCH 08/18] glsl: Simplify interface qualifier parsing.

Timothy Arceri timothy.arceri at collabora.com
Tue Aug 2 00:51:02 UTC 2016


On Mon, 2016-08-01 at 10:29 -0700, Kenneth Graunke wrote:
> This better matches the grammar in section 4.3.9 of the GLSL 4.5
> spec,
> and also removes some redundant code.
> 
> Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>

Nice! Yes this is how I should have done it when I got ride
of buffer_instance_name_opt.

Reviewed-by: Timothy Arceri <timothy.arceri at collabora.com>

> ---
>  src/compiler/glsl/glsl_parser.yy | 41 +++++++-----------------------
> ----------
>  1 file changed, 7 insertions(+), 34 deletions(-)
> 
> diff --git a/src/compiler/glsl/glsl_parser.yy
> b/src/compiler/glsl/glsl_parser.yy
> index 2bc2353..4ab9e14 100644
> --- a/src/compiler/glsl/glsl_parser.yy
> +++ b/src/compiler/glsl/glsl_parser.yy
> @@ -219,8 +219,6 @@ static bool match_layout_qualifier(const char
> *s1, const char *s2,
>  %type <type_qualifier> subroutine_qualifier
>  %type <subroutine_list> subroutine_type_list
>  %type <type_qualifier> interface_qualifier
> -%type <type_qualifier> uniform_interface_qualifier
> -%type <type_qualifier> buffer_interface_qualifier
>  %type <type_specifier> type_specifier
>  %type <type_specifier> type_specifier_nonarray
>  %type <array_specifier> array_specifier
> @@ -2664,30 +2662,11 @@ basic_interface_block:
>     {
>        ast_interface_block *const block = $6;
>  
> -      block->block_name = $2;
> -      block->declarations.push_degenerate_list_at_head(& $4->link);
> -
> -      _mesa_ast_process_interface_block(& @1, state, block, $1);
> -
> -      $$ = block;
> -   }
> -   | uniform_interface_qualifier NEW_IDENTIFIER '{' member_list '}'
> instance_name_opt ';'
> -   {
> -      ast_interface_block *const block = $6;
> -
> -      block->layout = *state->default_uniform_qualifier;
> -      block->block_name = $2;
> -      block->declarations.push_degenerate_list_at_head(& $4->link);
> -
> -      _mesa_ast_process_interface_block(& @1, state, block, $1);
> -
> -      $$ = block;
> -   }
> -   | buffer_interface_qualifier NEW_IDENTIFIER '{' member_list '}'
> instance_name_opt ';'
> -   {
> -      ast_interface_block *const block = $6;
> -
> -      block->layout = *state->default_shader_storage_qualifier;
> +      if ($1.flags.q.uniform) {
> +         block->layout = *state->default_uniform_qualifier;
> +      } else if ($1.flags.q.buffer) {
> +         block->layout = *state->default_shader_storage_qualifier;
> +      }
>        block->block_name = $2;
>        block->declarations.push_degenerate_list_at_head(& $4->link);
>  
> @@ -2708,18 +2687,12 @@ interface_qualifier:
>        memset(& $$, 0, sizeof($$));
>        $$.flags.q.out = 1;
>     }
> -   ;
> -
> -uniform_interface_qualifier:
> -   UNIFORM
> +   | UNIFORM
>     {
>        memset(& $$, 0, sizeof($$));
>        $$.flags.q.uniform = 1;
>     }
> -   ;
> -
> -buffer_interface_qualifier:
> -   BUFFER
> +   | BUFFER
>     {
>        memset(& $$, 0, sizeof($$));
>        $$.flags.q.buffer = 1;


More information about the mesa-dev mailing list