1 |
From 37a8e85fa4accae9bba35d2a08f619ae2dc5ca8c Mon Sep 17 00:00:00 2001 |
2 |
From: Andres Gomez <agomez@igalia.com> |
3 |
Date: Mon, 7 Jan 2019 16:11:44 +0200 |
4 |
Subject: [PATCH 74/78] glsl/linker: specify proper direction in location |
5 |
aliasing error |
6 |
|
7 |
The check for location aliasing was always asuming output variables |
8 |
but this validation is also called for input variables. |
9 |
|
10 |
Fixes: e2abb75b0e4 ("glsl/linker: validate explicit locations for SSO programs") |
11 |
Cc: Iago Toral Quiroga <itoral@igalia.com> |
12 |
Signed-off-by: Andres Gomez <agomez@igalia.com> |
13 |
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com> |
14 |
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com> |
15 |
(cherry picked from commit 428164d87f8dc1d378236b4913538803653770c6) |
16 |
--- |
17 |
src/compiler/glsl/link_varyings.cpp | 15 ++++++++++----- |
18 |
1 file changed, 10 insertions(+), 5 deletions(-) |
19 |
|
20 |
diff --git a/src/compiler/glsl/link_varyings.cpp b/src/compiler/glsl/link_varyings.cpp |
21 |
index 52e493cb59..3969c0120b 100644 |
22 |
--- a/src/compiler/glsl/link_varyings.cpp |
23 |
+++ b/src/compiler/glsl/link_varyings.cpp |
24 |
@@ -481,9 +481,10 @@ check_location_aliasing(struct explicit_location_info explicit_locations[][4], |
25 |
/* Component aliasing is not alloed */ |
26 |
if (comp >= component && comp < last_comp) { |
27 |
linker_error(prog, |
28 |
- "%s shader has multiple outputs explicitly " |
29 |
+ "%s shader has multiple %sputs explicitly " |
30 |
"assigned to location %d and component %d\n", |
31 |
_mesa_shader_stage_to_string(stage), |
32 |
+ var->data.mode == ir_var_shader_in ? "in" : "out", |
33 |
location, comp); |
34 |
return false; |
35 |
} else { |
36 |
@@ -502,10 +503,12 @@ check_location_aliasing(struct explicit_location_info explicit_locations[][4], |
37 |
|
38 |
if (info->interpolation != interpolation) { |
39 |
linker_error(prog, |
40 |
- "%s shader has multiple outputs at explicit " |
41 |
+ "%s shader has multiple %sputs at explicit " |
42 |
"location %u with different interpolation " |
43 |
"settings\n", |
44 |
- _mesa_shader_stage_to_string(stage), location); |
45 |
+ _mesa_shader_stage_to_string(stage), |
46 |
+ var->data.mode == ir_var_shader_in ? |
47 |
+ "in" : "out", location); |
48 |
return false; |
49 |
} |
50 |
|
51 |
@@ -513,9 +516,11 @@ check_location_aliasing(struct explicit_location_info explicit_locations[][4], |
52 |
info->sample != sample || |
53 |
info->patch != patch) { |
54 |
linker_error(prog, |
55 |
- "%s shader has multiple outputs at explicit " |
56 |
+ "%s shader has multiple %sputs at explicit " |
57 |
"location %u with different aux storage\n", |
58 |
- _mesa_shader_stage_to_string(stage), location); |
59 |
+ _mesa_shader_stage_to_string(stage), |
60 |
+ var->data.mode == ir_var_shader_in ? |
61 |
+ "in" : "out", location); |
62 |
return false; |
63 |
} |
64 |
} |
65 |
-- |
66 |
2.20.1 |
67 |
|