glsl: remove cross validation of interpolation qualifier with GLSL 4.40
authorTapani Pälli <tapani.palli@intel.com>
Tue, 9 Jun 2015 08:06:56 +0000 (11:06 +0300)
committerTapani Pälli <tapani.palli@intel.com>
Wed, 24 Jun 2015 07:06:32 +0000 (10:06 +0300)
Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Timothy Arceri <t_arceri@yahoo.com.au>
src/glsl/link_varyings.cpp

index 278a778797b8f21ac288f4b787f961f7f543ad2b..020842a54a3dfc3f7bba7dabe17f19152ae51684 100644 (file)
@@ -128,7 +128,17 @@ cross_validate_types_and_qualifiers(struct gl_shader_program *prog,
       return;
    }
 
-   if (input->data.interpolation != output->data.interpolation) {
+   /* GLSL >= 4.40 removes text requiring interpolation qualifiers
+    * to match cross stage, they must only match within the same stage.
+    *
+    * From page 84 (page 90 of the PDF) of the GLSL 4.40 spec:
+    *
+    *     "It is a link-time error if, within the same stage, the interpolation
+    *     qualifiers of variables of the same name do not match.
+    *
+    */
+   if (input->data.interpolation != output->data.interpolation &&
+       prog->Version < 440) {
       linker_error(prog,
                    "%s shader output `%s' specifies %s "
                    "interpolation qualifier, "