summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTimothy Arceri <[email protected]>2016-03-08 23:53:37 +1100
committerTimothy Arceri <[email protected]>2016-03-09 09:21:31 +1100
commitebc419fcbddb80648c526efc2b15e15e474724e3 (patch)
tree2cc6cc58bc0bfd655a47ef56be97ed9a54899978
parent19f13b2096a9fdd986e5a12d4e9d8b0d6a4632f3 (diff)
glsl: don't validate ifc blocks using validation meant for variables
Reviewed-by: Samuel Iglesias Gonsálvez <[email protected]>
-rw-r--r--src/compiler/glsl/link_varyings.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/compiler/glsl/link_varyings.cpp b/src/compiler/glsl/link_varyings.cpp
index c40ed586d14..34eb848a9c1 100644
--- a/src/compiler/glsl/link_varyings.cpp
+++ b/src/compiler/glsl/link_varyings.cpp
@@ -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