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 <imirkin@alum.mit.edu> Reviewed-by: Eduardo Lima Mitev <elima@igalia.com> Reviewed-by: Chris Forbes <chrisforbes@google.com>
This commit is contained in:
@@ -209,7 +209,7 @@ verify_parameter_modes(_mesa_glsl_parse_state *state,
|
|||||||
/* Verify that shader_in parameters are shader inputs */
|
/* Verify that shader_in parameters are shader inputs */
|
||||||
if (formal->data.must_be_shader_input) {
|
if (formal->data.must_be_shader_input) {
|
||||||
ir_variable *var = actual->variable_referenced();
|
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,
|
_mesa_glsl_error(&loc, state,
|
||||||
"parameter `%s` must be a shader input",
|
"parameter `%s` must be a shader input",
|
||||||
formal->name);
|
formal->name);
|
||||||
|
Reference in New Issue
Block a user