summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIlia Mirkin <[email protected]>2016-05-12 23:54:36 -0400
committerIlia Mirkin <[email protected]>2016-05-13 19:17:26 -0400
commit5239f1e0c9f24ca06a9c58ce6eea95c7e4da93bd (patch)
treeb9ebbee775d5320e6b9f50bd8b3a075c5e7319a5
parent8f45f4f3cafa678292a87f316d2729da7800bab5 (diff)
glsl: make sure that interpolateAt arguments are variables
In the case of a constant, it might have been propagated through and variable_referenced() returns NULL. Error out in that case. Fixes 3 dEQP tests: dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.negative.interpolate_constant dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_centroid.negative.interpolate_constant dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_offset.negative.interpolate_constant Signed-off-by: Ilia Mirkin <[email protected]> Reviewed-by: Eduardo Lima Mitev <[email protected]> Reviewed-by: Chris Forbes <[email protected]>
-rw-r--r--src/compiler/glsl/ast_function.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/compiler/glsl/ast_function.cpp b/src/compiler/glsl/ast_function.cpp
index 37fb3e790c4..4db3dd0384b 100644
--- a/src/compiler/glsl/ast_function.cpp
+++ b/src/compiler/glsl/ast_function.cpp
@@ -209,7 +209,7 @@ verify_parameter_modes(_mesa_glsl_parse_state *state,
/* Verify that shader_in parameters are shader inputs */
if (formal->data.must_be_shader_input) {
ir_variable *var = actual->variable_referenced();
- if (var && var->data.mode != ir_var_shader_in) {
+ if (!var || var->data.mode != ir_var_shader_in) {
_mesa_glsl_error(&loc, state,
"parameter `%s` must be a shader input",
formal->name);