[Mesa-dev] [PATCH] glsl: make sure that interpolateAt arguments are variables

Eduardo Lima Mitev elima at igalia.com
Fri May 13 15:05:53 UTC 2016


Patch is:

Reviewed-by: Eduardo Lima Mitev <elima at igalia.com>

On 05/13/2016 05:55 AM, Ilia Mirkin wrote:
> 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 at alum.mit.edu>
> ---
>  src/compiler/glsl/ast_function.cpp | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/src/compiler/glsl/ast_function.cpp b/src/compiler/glsl/ast_function.cpp
> index 37fb3e79..4db3dd0 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);
> 



More information about the mesa-dev mailing list