1 |
tmb |
1379153 |
From 062d464c4c194d874c5ce19a5eac997a2f340bde Mon Sep 17 00:00:00 2001 |
2 |
|
|
From: Andres Gomez <agomez@igalia.com> |
3 |
|
|
Date: Fri, 8 Feb 2019 19:06:08 +0200 |
4 |
tmb |
1379265 |
Subject: [PATCH 22/24] Revert "glsl: relax input->output validation for SSO |
5 |
tmb |
1379153 |
programs" |
6 |
|
|
MIME-Version: 1.0 |
7 |
|
|
Content-Type: text/plain; charset=UTF-8 |
8 |
|
|
Content-Transfer-Encoding: 8bit |
9 |
|
|
|
10 |
|
|
This reverts commit 1aa5738e666a9534c7e5b46f077327e6d647c64f. |
11 |
|
|
|
12 |
|
|
This patch incorrectly asumed that for SSOs no inner interface |
13 |
|
|
matching check was needed. |
14 |
|
|
|
15 |
|
|
From the ARB_separate_shader_objects spec v.25: |
16 |
|
|
|
17 |
|
|
" With separable program objects, interfaces between shader stages |
18 |
|
|
may involve the outputs from one program object and the inputs |
19 |
|
|
from a second program object. For such interfaces, it is not |
20 |
|
|
possible to detect mismatches at link time, because the programs |
21 |
|
|
are linked separately. When each such program is linked, all |
22 |
|
|
inputs or outputs interfacing with another program stage are |
23 |
|
|
treated as active. The linker will generate an executable that |
24 |
|
|
assumes the presence of a compatible program on the other side of |
25 |
|
|
the interface. If a mismatch between programs occurs, no GL error |
26 |
|
|
will be generated, but some or all of the inputs on the interface |
27 |
|
|
will be undefined." |
28 |
|
|
|
29 |
|
|
This completes the fix from commit: |
30 |
|
|
3be05dd2679 ("glsl/linker: don't fail non static used inputs without matching outputs") |
31 |
|
|
|
32 |
|
|
Fixes: 1aa5738e666 ("glsl: relax input->output validation for SSO programs") |
33 |
|
|
Cc: Tapani Pälli <tapani.palli@intel.com> |
34 |
|
|
Cc: Timothy Arceri <tarceri@itsqueeze.com> |
35 |
|
|
Cc: Ilia Mirkin <imirkin@alum.mit.edu> |
36 |
|
|
Cc: Samuel Iglesias Gonsálvez <siglesias@igalia.com> |
37 |
|
|
Cc: Ian Romanick <ian.d.romanick@intel.com> |
38 |
|
|
Signed-off-by: Andres Gomez <agomez@igalia.com> |
39 |
|
|
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com> |
40 |
|
|
(cherry picked from commit ab28dca0334746d1d6cb3f1b18550e3cbfb41d77) |
41 |
|
|
--- |
42 |
|
|
src/compiler/glsl/link_varyings.cpp | 2 +- |
43 |
|
|
1 file changed, 1 insertion(+), 1 deletion(-) |
44 |
|
|
|
45 |
|
|
diff --git a/src/compiler/glsl/link_varyings.cpp b/src/compiler/glsl/link_varyings.cpp |
46 |
|
|
index 56fff60e07a..da0c8abc236 100644 |
47 |
|
|
--- a/src/compiler/glsl/link_varyings.cpp |
48 |
|
|
+++ b/src/compiler/glsl/link_varyings.cpp |
49 |
|
|
@@ -816,7 +816,7 @@ cross_validate_outputs_to_inputs(struct gl_context *ctx, |
50 |
|
|
*/ |
51 |
|
|
assert(!input->data.assigned); |
52 |
|
|
if (input->data.used && !input->get_interface_type() && |
53 |
|
|
- !input->data.explicit_location && !prog->SeparateShader) |
54 |
|
|
+ !input->data.explicit_location) |
55 |
|
|
linker_error(prog, |
56 |
|
|
"%s shader input `%s' " |
57 |
|
|
"has no matching output in the previous stage\n", |
58 |
|
|
-- |
59 |
|
|
2.21.0 |
60 |
|
|
|