X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fcompiler%2Fglsl%2Fglcpp%2Fglcpp-parse.y;fp=src%2Fcompiler%2Fglsl%2Fglcpp%2Fglcpp-parse.y;h=514dbe7a4c43acb4a2d032c03a63a005b52cf847;hb=1201d3377ef8665797bf00839fd49a76e3e44101;hp=60323e449da38cfef31964baabef83e8abfc7f05;hpb=db5197cec54e7926211acef2ff3b40344f01b4f9;p=mesa.git diff --git a/src/compiler/glsl/glcpp/glcpp-parse.y b/src/compiler/glsl/glcpp/glcpp-parse.y index 60323e449da..514dbe7a4c4 100644 --- a/src/compiler/glsl/glcpp/glcpp-parse.y +++ b/src/compiler/glsl/glcpp/glcpp-parse.y @@ -36,6 +36,12 @@ const char * _mesa_lookup_shader_include(struct gl_context *ctx, char *path, bool error_check); +size_t +_mesa_get_shader_include_cursor(struct gl_shared_state *shared); + +void +_mesa_set_shader_include_cursor(struct gl_shared_state *shared, size_t cursor); + static void yyerror(YYLTYPE *locp, glcpp_parser_t *parser, const char *error); @@ -344,10 +350,14 @@ control_line_success: } } | HASH_TOKEN INCLUDE NEWLINE { + size_t include_cursor = _mesa_get_shader_include_cursor(parser->gl_ctx->Shared); + /* Remove leading and trailing "" or <> */ char *start = strchr($2, '"'); - if (!start) + if (!start) { + _mesa_set_shader_include_cursor(parser->gl_ctx->Shared, 0); start = strchr($2, '<'); + } char *path = strndup(start + 1, strlen(start + 1) - 1); const char *shader = @@ -410,6 +420,8 @@ control_line_success: glcpp_lex_destroy(tmp_parser->scanner); _mesa_hash_table_destroy(tmp_parser->defines, NULL); } + + _mesa_set_shader_include_cursor(parser->gl_ctx->Shared, include_cursor); } | HASH_TOKEN IF pp_tokens NEWLINE { /* Be careful to only evaluate the 'if' expression if