summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>2017-02-24 14:46:08 +0100
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>2017-02-27 19:42:00 +0100
commite69fd0b43cbbfa814a6af8268c5edec64387520a (patch)
treeda10c8fe0b3ad53f81f93ce5a81f335e67e36089
parent08a052966fff77b1d3c04f0b75fb1199988ba1fd (diff)
glsl: reject samplers not declared as uniform/function params earlier
This improves consistency with image variables and atomic counters which are already rejected the same way. Note that opaque variables can't be treated as l-values, which means only the 'in' function parameter is allowed. v2: rewrite commit message Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com> (v1) Reviewed-by: Marek Olšák <marek.olsak@amd.com> (v2)
-rw-r--r--src/compiler/glsl/ast_to_hir.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/compiler/glsl/ast_to_hir.cpp b/src/compiler/glsl/ast_to_hir.cpp
index af5e76dd3ac..0c00585a050 100644
--- a/src/compiler/glsl/ast_to_hir.cpp
+++ b/src/compiler/glsl/ast_to_hir.cpp
@@ -3589,6 +3589,15 @@ apply_layout_qualifier_to_variable(const struct ast_type_qualifier *qual,
}
}
+ if (var->type->contains_sampler()) {
+ if (var->data.mode != ir_var_uniform &&
+ var->data.mode != ir_var_function_in) {
+ _mesa_glsl_error(loc, state, "sampler variables may only be declared "
+ "as function parameters or uniform-qualified "
+ "global variables");
+ }
+ }
+
/* Is the 'layout' keyword used with parameters that allow relaxed checking.
* Many implementations of GL_ARB_fragment_coord_conventions_enable and some
* implementations (only Mesa?) GL_ARB_explicit_attrib_location_enable