summaryrefslogtreecommitdiffstats
path: root/src/glsl/linker.h
diff options
context:
space:
mode:
authorPaul Berry <[email protected]>2013-11-15 14:23:45 -0800
committerPaul Berry <[email protected]>2013-11-21 15:05:09 -0800
commit544e3129c5addeb6c9539339782dd54616ef0499 (patch)
treef615f76a4c237750a3f0af3ad13952f85ec5069b /src/glsl/linker.h
parent0f4cacbb53c23e4fa027375c492edd17b40ae748 (diff)
glsl: Fix interstage uniform interface block link error detection.
Previously, we checked for interstage uniform interface block link errors in validate_interstage_interface_blocks(), which is only called on pairs of adjacent shader stages. Therefore, we failed to detect uniform interface block mismatches between non-adjacent shader stages. Before the introduction of geometry shaders, this wasn't a problem, because the only supported shader stages were vertex and fragment shaders, therefore they were always adjacent. However, now that we allow a program to contain vertex, geometry, and fragment shaders, that is no longer the case. Fixes piglit test "skip-stage-uniform-block-array-size-mismatch". Cc: "10.0" <[email protected]> v2: Rename validate_interstage_interface_blocks() to validate_interstage_inout_blocks() to reflect the fact that it no longer validates uniform blocks. Reviewed-by: Jordan Justen <[email protected]> v3: Make validate_interstage_inout_blocks() skip uniform blocks. Reviewed-by: Ian Romanick <[email protected]>
Diffstat (limited to 'src/glsl/linker.h')
-rw-r--r--src/glsl/linker.h10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/glsl/linker.h b/src/glsl/linker.h
index 7b1f6f9c5eb..130915db412 100644
--- a/src/glsl/linker.h
+++ b/src/glsl/linker.h
@@ -65,9 +65,13 @@ validate_intrastage_interface_blocks(struct gl_shader_program *prog,
unsigned num_shaders);
void
-validate_interstage_interface_blocks(struct gl_shader_program *prog,
- const gl_shader *producer,
- const gl_shader *consumer);
+validate_interstage_inout_blocks(struct gl_shader_program *prog,
+ const gl_shader *producer,
+ const gl_shader *consumer);
+
+void
+validate_interstage_uniform_blocks(struct gl_shader_program *prog,
+ gl_shader **stages, int num_stages);
extern void
link_assign_atomic_counter_resources(struct gl_context *ctx,