diff options
author | Paul Berry <[email protected]> | 2013-07-27 14:58:43 -0700 |
---|---|---|
committer | Paul Berry <[email protected]> | 2013-07-30 10:10:26 -0700 |
commit | 659ec1c958b59b77b5334d1121722ea0c80dddf8 (patch) | |
tree | c8b7fa1e656c7402e0069ead94d3c4f61999b9ef /src | |
parent | 4682b9b7bfffff0caa7bd0f6af3ae820a1df08af (diff) |
glsl: Add error message for intrastage interface block mismatch.
Previously we failed to link (which is correct), but we did not output
an error message, which could have been confusing for users.
Reviewed-by: Jordan Justen <[email protected]>
Reviewed-by: Ian Romanick <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/glsl/link_interface_blocks.cpp | 5 | ||||
-rw-r--r-- | src/glsl/linker.cpp | 3 | ||||
-rw-r--r-- | src/glsl/linker.h | 3 |
3 files changed, 8 insertions, 3 deletions
diff --git a/src/glsl/link_interface_blocks.cpp b/src/glsl/link_interface_blocks.cpp index b91860d0394..4f67291d85f 100644 --- a/src/glsl/link_interface_blocks.cpp +++ b/src/glsl/link_interface_blocks.cpp @@ -32,7 +32,8 @@ #include "main/macros.h" bool -validate_intrastage_interface_blocks(const gl_shader **shader_list, +validate_intrastage_interface_blocks(struct gl_shader_program *prog, + const gl_shader **shader_list, unsigned num_shaders) { glsl_symbol_table interfaces; @@ -62,6 +63,8 @@ validate_intrastage_interface_blocks(const gl_shader **shader_list, interfaces.add_interface(iface_type->name, iface_type, (enum ir_variable_mode) var->mode); } else if (old_iface_type != iface_type) { + linker_error(prog, "definitions of interface block `%s' do not" + " match\n", iface_type->name); return false; } } diff --git a/src/glsl/linker.cpp b/src/glsl/linker.cpp index 4ffd40e6527..3d9c59d5de3 100644 --- a/src/glsl/linker.cpp +++ b/src/glsl/linker.cpp @@ -960,7 +960,8 @@ link_intrastage_shaders(void *mem_ctx, /* Check that interface blocks defined in multiple shaders are consistent. */ - if (!validate_intrastage_interface_blocks((const gl_shader **)shader_list, + if (!validate_intrastage_interface_blocks(prog, + (const gl_shader **)shader_list, num_shaders)) return NULL; diff --git a/src/glsl/linker.h b/src/glsl/linker.h index 85a6817d98d..9f5deb5c08f 100644 --- a/src/glsl/linker.h +++ b/src/glsl/linker.h @@ -61,7 +61,8 @@ link_uniform_blocks(void *mem_ctx, struct gl_uniform_block **blocks_ret); bool -validate_intrastage_interface_blocks(const gl_shader **shader_list, +validate_intrastage_interface_blocks(struct gl_shader_program *prog, + const gl_shader **shader_list, unsigned num_shaders); bool |