[Mesa-dev] [PATCH] glsl/linker: specify proper direction in location aliasing error

Iago Toral itoral at igalia.com
Tue Jan 8 10:58:51 UTC 2019


Reviewed-by: Iago Toral Quiroga <itoral at igalia.com>

On Mon, 2019-01-07 at 16:11 +0200, Andres Gomez wrote:
> The check for location aliasing was always asuming output variables
> but this validation is also called for input variables.
> 
> Fixes: e2abb75b0e4 ("glsl/linker: validate explicit locations for SSO
> programs")
> Cc: Iago Toral Quiroga <itoral at igalia.com>
> Signed-off-by: Andres Gomez <agomez at igalia.com>
> ---
>  src/compiler/glsl/link_varyings.cpp | 15 ++++++++++-----
>  1 file changed, 10 insertions(+), 5 deletions(-)
> 
> diff --git a/src/compiler/glsl/link_varyings.cpp
> b/src/compiler/glsl/link_varyings.cpp
> index 52e493cb599..3969c0120b3 100644
> --- a/src/compiler/glsl/link_varyings.cpp
> +++ b/src/compiler/glsl/link_varyings.cpp
> @@ -481,9 +481,10 @@ check_location_aliasing(struct
> explicit_location_info explicit_locations[][4],
>              /* Component aliasing is not alloed */
>              if (comp >= component && comp < last_comp) {
>                 linker_error(prog,
> -                            "%s shader has multiple outputs
> explicitly "
> +                            "%s shader has multiple %sputs
> explicitly "
>                              "assigned to location %d and component
> %d\n",
>                              _mesa_shader_stage_to_string(stage),
> +                            var->data.mode == ir_var_shader_in ?
> "in" : "out",
>                              location, comp);
>                 return false;
>              } else {
> @@ -502,10 +503,12 @@ check_location_aliasing(struct
> explicit_location_info explicit_locations[][4],
>  
>                 if (info->interpolation != interpolation) {
>                    linker_error(prog,
> -                               "%s shader has multiple outputs at
> explicit "
> +                               "%s shader has multiple %sputs at
> explicit "
>                                 "location %u with different
> interpolation "
>                                 "settings\n",
> -                               _mesa_shader_stage_to_string(stage),
> location);
> +                               _mesa_shader_stage_to_string(stage),
> +                               var->data.mode == ir_var_shader_in ?
> +                               "in" : "out", location);
>                    return false;
>                 }
>  
> @@ -513,9 +516,11 @@ check_location_aliasing(struct
> explicit_location_info explicit_locations[][4],
>                     info->sample != sample ||
>                     info->patch != patch) {
>                    linker_error(prog,
> -                               "%s shader has multiple outputs at
> explicit "
> +                               "%s shader has multiple %sputs at
> explicit "
>                                 "location %u with different aux
> storage\n",
> -                               _mesa_shader_stage_to_string(stage),
> location);
> +                               _mesa_shader_stage_to_string(stage),
> +                               var->data.mode == ir_var_shader_in ?
> +                               "in" : "out", location);
>                    return false;
>                 }
>              }



More information about the mesa-dev mailing list