[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