summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndres Gomez <agomez@igalia.com>2019-02-08 19:06:08 +0200
committerEmil Velikov <emil.l.velikov@gmail.com>2019-03-25 16:18:25 +0000
commit0f976b92f8eb0d946781d8ff06f7eb063f087142 (patch)
tree31765abfa0f23885f010fac701d72428371d9823
parent208fd66d80b16a9c70d7228256cdd3d3f4cbe2f7 (diff)
Revert "glsl: relax input->output validation for SSO programs"
This reverts commit 1aa5738e666a9534c7e5b46f077327e6d647c64f. This patch incorrectly asumed that for SSOs no inner interface matching check was needed. From the ARB_separate_shader_objects spec v.25: " With separable program objects, interfaces between shader stages may involve the outputs from one program object and the inputs from a second program object. For such interfaces, it is not possible to detect mismatches at link time, because the programs are linked separately. When each such program is linked, all inputs or outputs interfacing with another program stage are treated as active. The linker will generate an executable that assumes the presence of a compatible program on the other side of the interface. If a mismatch between programs occurs, no GL error will be generated, but some or all of the inputs on the interface will be undefined." This completes the fix from commit: 3be05dd2679 ("glsl/linker: don't fail non static used inputs without matching outputs") Fixes: 1aa5738e666 ("glsl: relax input->output validation for SSO programs") Cc: Tapani Pälli <tapani.palli@intel.com> Cc: Timothy Arceri <tarceri@itsqueeze.com> Cc: Ilia Mirkin <imirkin@alum.mit.edu> Cc: Samuel Iglesias Gonsálvez <siglesias@igalia.com> Cc: Ian Romanick <ian.d.romanick@intel.com> Signed-off-by: Andres Gomez <agomez@igalia.com> Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com> (cherry picked from commit ab28dca0334746d1d6cb3f1b18550e3cbfb41d77)
-rw-r--r--src/compiler/glsl/link_varyings.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/compiler/glsl/link_varyings.cpp b/src/compiler/glsl/link_varyings.cpp
index 56fff60e07a..da0c8abc236 100644
--- a/src/compiler/glsl/link_varyings.cpp
+++ b/src/compiler/glsl/link_varyings.cpp
@@ -816,7 +816,7 @@ cross_validate_outputs_to_inputs(struct gl_context *ctx,
*/
assert(!input->data.assigned);
if (input->data.used && !input->get_interface_type() &&
- !input->data.explicit_location && !prog->SeparateShader)
+ !input->data.explicit_location)
linker_error(prog,
"%s shader input `%s' "
"has no matching output in the previous stage\n",