diff options
author | Andres Gomez <[email protected]> | 2019-02-08 19:06:08 +0200 |
---|---|---|
committer | Andres Gomez <[email protected]> | 2019-03-19 17:36:20 +0200 |
commit | ab28dca0334746d1d6cb3f1b18550e3cbfb41d77 (patch) | |
tree | 5205deb8e923d3ae646f80648c5a6f03ba541ae8 /src/compiler/glsl | |
parent | 422882e78f2cf0ab69ff4a58f3c9465fcb5fef0d (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 <[email protected]>
Cc: Timothy Arceri <[email protected]>
Cc: Ilia Mirkin <[email protected]>
Cc: Samuel Iglesias Gonsálvez <[email protected]>
Cc: Ian Romanick <[email protected]>
Signed-off-by: Andres Gomez <[email protected]>
Reviewed-by: Timothy Arceri <[email protected]>
Diffstat (limited to 'src/compiler/glsl')
-rw-r--r-- | src/compiler/glsl/link_varyings.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/compiler/glsl/link_varyings.cpp b/src/compiler/glsl/link_varyings.cpp index bf5d7f86f80..618610039ea 100644 --- a/src/compiler/glsl/link_varyings.cpp +++ b/src/compiler/glsl/link_varyings.cpp @@ -823,7 +823,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", |