glsl: don't validate ifc blocks using validation meant for variables
authorTimothy Arceri <timothy.arceri@collabora.com>
Tue, 8 Mar 2016 12:53:37 +0000 (23:53 +1100)
committerTimothy Arceri <timothy.arceri@collabora.com>
Tue, 8 Mar 2016 22:21:31 +0000 (09:21 +1100)
Reviewed-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
src/compiler/glsl/link_varyings.cpp

index c40ed586d14c634aef4c2752006282403aae3f57..34eb848a9c12dec636c4d037e3ad4869765cd448 100644 (file)
@@ -312,8 +312,14 @@ cross_validate_outputs_to_inputs(struct gl_shader_program *prog,
          }
 
          if (output != NULL) {
-            cross_validate_types_and_qualifiers(prog, input, output,
-                                                consumer->Stage, producer->Stage);
+            /* Interface blocks have their own validation elsewhere so don't
+             * try validating them here.
+             */
+            if (!(input->get_interface_type() &&
+                  output->get_interface_type()))
+               cross_validate_types_and_qualifiers(prog, input, output,
+                                                   consumer->Stage,
+                                                   producer->Stage);
          } else {
             /* Check for input vars with unmatched output vars in prev stage
              * taking into account that interface blocks could have a matching