diff options
author | Ilia Mirkin <[email protected]> | 2016-05-12 23:54:36 -0400 |
---|---|---|
committer | Ilia Mirkin <[email protected]> | 2016-05-13 19:17:26 -0400 |
commit | 5239f1e0c9f24ca06a9c58ce6eea95c7e4da93bd (patch) | |
tree | b9ebbee775d5320e6b9f50bd8b3a075c5e7319a5 | |
parent | 8f45f4f3cafa678292a87f316d2729da7800bab5 (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.cpp | 2 |
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); |