Mesa (18.3): Revert "glsl: relax input->output validation for SSO programs"

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Mar 27 13:50:47 UTC 2019


Module: Mesa
Branch: 18.3
Commit: 0f976b92f8eb0d946781d8ff06f7eb063f087142
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=0f976b92f8eb0d946781d8ff06f7eb063f087142

Author: Andres Gomez <agomez at igalia.com>
Date:   Fri Feb  8 19:06:08 2019 +0200

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 at intel.com>
Cc: Timothy Arceri <tarceri at itsqueeze.com>
Cc: Ilia Mirkin <imirkin at alum.mit.edu>
Cc: Samuel Iglesias Gonsálvez <siglesias at igalia.com>
Cc: Ian Romanick <ian.d.romanick at intel.com>
Signed-off-by: Andres Gomez <agomez at igalia.com>
Reviewed-by: Timothy Arceri <tarceri at itsqueeze.com>
(cherry picked from commit ab28dca0334746d1d6cb3f1b18550e3cbfb41d77)

---

 src/compiler/glsl/link_varyings.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

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",




More information about the mesa-commit mailing list