From 5327b756bf3c9f3779a90900ac06c6bcb8976951 Mon Sep 17 00:00:00 2001 From: Timothy Arceri Date: Tue, 20 Aug 2019 14:20:33 +1000 Subject: [PATCH] glsl: error if #include used while extension is disabled In other words make sure the shader does this: Reviewed-by: Witold Baryluk --- src/compiler/glsl/glcpp/glcpp-parse.y | 7 +++++++ src/compiler/glsl/glsl_lexer.ll | 8 ++++++++ 2 files changed, 15 insertions(+) diff --git a/src/compiler/glsl/glcpp/glcpp-parse.y b/src/compiler/glsl/glcpp/glcpp-parse.y index 3cc00bd56e8..60323e449da 100644 --- a/src/compiler/glsl/glcpp/glcpp-parse.y +++ b/src/compiler/glsl/glcpp/glcpp-parse.y @@ -377,6 +377,13 @@ control_line_success: glcpp_parser_copy_defines, &di); + /* Print out '#include' to the glsl parser. We do this + * so that it can do the error checking require to + * make sure the ARB_shading_language_include + * extension is enabled. + */ + _mesa_string_buffer_printf(parser->output, "#include\n"); + /* Parse the include string before adding to the * preprocessor output. */ diff --git a/src/compiler/glsl/glsl_lexer.ll b/src/compiler/glsl/glsl_lexer.ll index 8c59e1d748f..7d7ee0c00ff 100644 --- a/src/compiler/glsl/glsl_lexer.ll +++ b/src/compiler/glsl/glsl_lexer.ll @@ -236,6 +236,14 @@ PATH ["][./ _A-Za-z0-9]*["] ^[ \t]*#[ \t]*$ ; ^[ \t]*#[ \t]*version { BEGIN PP; return VERSION_TOK; } ^[ \t]*#[ \t]*extension { BEGIN PP; return EXTENSION; } +{HASH}include { + if (!yyextra->ARB_shading_language_include_enable) { + struct _mesa_glsl_parse_state *state = yyextra; + _mesa_glsl_error(yylloc, state, + "ARB_shading_language_include required " + "to use #include"); + } +} {HASH}line{SPCP}{INT}{SPCP}{INT}{SPC}$ { /* Eat characters until the first digit is * encountered -- 2.30.2