[Mesa-dev] [PATCH] glsl: allow the #extension directive within code blocks for the dri option

Marek Olšák maraeo at gmail.com
Tue Apr 9 23:39:08 UTC 2019


From: Marek Olšák <marek.olsak at amd.com>

for Viewperf 13
---
 src/compiler/glsl/glsl_parser.yy | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/src/compiler/glsl/glsl_parser.yy b/src/compiler/glsl/glsl_parser.yy
index 8d6c47fb6a3..b91c24ebe97 100644
--- a/src/compiler/glsl/glsl_parser.yy
+++ b/src/compiler/glsl/glsl_parser.yy
@@ -2531,20 +2531,29 @@ statement_list:
    }
    | statement_list statement
    {
       if ($2 == NULL) {
          _mesa_glsl_error(& @2, state, "<nil> statement");
          assert($2 != NULL);
       }
       $$ = $1;
       $$->link.insert_before(& $2->link);
    }
+   | statement_list extension_statement
+   {
+      if (!state->allow_extension_directive_midshader) {
+         _mesa_glsl_error(& @1, state,
+                          "#extension directive is not allowed "
+                          "in the middle of a shader");
+         YYERROR;
+      }
+   }
    ;
 
 expression_statement:
    ';'
    {
       void *ctx = state->linalloc;
       $$ = new(ctx) ast_expression_statement(NULL);
       $$->set_location(@1);
    }
    | expression ';'
-- 
2.17.1



More information about the mesa-dev mailing list