summaryrefslogtreecommitdiffstats
path: root/src/compiler
diff options
context:
space:
mode:
authorTimothy Arceri <[email protected]>2019-08-20 14:20:33 +1000
committerTimothy Arceri <[email protected]>2019-11-20 05:05:55 +0000
commit5327b756bf3c9f3779a90900ac06c6bcb8976951 (patch)
tree699da4546c10b1bcf82b751e29f44439d8485543 /src/compiler
parent13a1426b97c2ff1e42f7455f1f9937fe956c17b2 (diff)
glsl: error if #include used while extension is disabled
In other words make sure the shader does this: Reviewed-by: Witold Baryluk <[email protected]>
Diffstat (limited to 'src/compiler')
-rw-r--r--src/compiler/glsl/glcpp/glcpp-parse.y7
-rw-r--r--src/compiler/glsl/glsl_lexer.ll8
2 files changed, 15 insertions, 0 deletions
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