summaryrefslogtreecommitdiffstats
path: root/src/glsl/link_interface_blocks.cpp
diff options
context:
space:
mode:
authorPaul Berry <[email protected]>2013-09-24 14:30:29 -0700
committerPaul Berry <[email protected]>2013-10-09 16:49:26 -0700
commit22d3ef2df1f4fd6c4a0aaf17996fdcd9b70547cb (patch)
tree609e6c8706f024d684eb32b8de1e828a57dcefb6 /src/glsl/link_interface_blocks.cpp
parent6f19e552af7ab078cfefbcaa1560bb921ddcaf07 (diff)
glsl: Make accessor functions for ir_variable::interface_type.
In a future patch, this will allow us to enforce invariants when the interface type is updated. Reviewed-by: Jordan Justen <[email protected]>
Diffstat (limited to 'src/glsl/link_interface_blocks.cpp')
-rw-r--r--src/glsl/link_interface_blocks.cpp17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/glsl/link_interface_blocks.cpp b/src/glsl/link_interface_blocks.cpp
index 928a88ee262..4f1c9d3962b 100644
--- a/src/glsl/link_interface_blocks.cpp
+++ b/src/glsl/link_interface_blocks.cpp
@@ -47,7 +47,7 @@ validate_intrastage_interface_blocks(struct gl_shader_program *prog,
if (!var)
continue;
- const glsl_type *iface_type = var->interface_type;
+ const glsl_type *iface_type = var->get_interface_type();
if (iface_type == NULL)
continue;
@@ -81,32 +81,33 @@ validate_interstage_interface_blocks(struct gl_shader_program *prog,
/* Add non-output interfaces from the consumer to the symbol table. */
foreach_list(node, consumer->ir) {
ir_variable *var = ((ir_instruction *) node)->as_variable();
- if (!var || !var->interface_type || var->mode == ir_var_shader_out)
+ if (!var || !var->get_interface_type() || var->mode == ir_var_shader_out)
continue;
- interfaces.add_interface(var->interface_type->name,
- var->interface_type,
+ interfaces.add_interface(var->get_interface_type()->name,
+ var->get_interface_type(),
(enum ir_variable_mode) var->mode);
}
/* Verify that the producer's interfaces match. */
foreach_list(node, producer->ir) {
ir_variable *var = ((ir_instruction *) node)->as_variable();
- if (!var || !var->interface_type || var->mode == ir_var_shader_in)
+ if (!var || !var->get_interface_type() || var->mode == ir_var_shader_in)
continue;
enum ir_variable_mode consumer_mode =
var->mode == ir_var_uniform ? ir_var_uniform : ir_var_shader_in;
const glsl_type *expected_type =
- interfaces.get_interface(var->interface_type->name, consumer_mode);
+ interfaces.get_interface(var->get_interface_type()->name,
+ consumer_mode);
/* The consumer doesn't use this output block. Ignore it. */
if (expected_type == NULL)
continue;
- if (var->interface_type != expected_type) {
+ if (var->get_interface_type() != expected_type) {
linker_error(prog, "definitions of interface block `%s' do not "
- "match\n", var->interface_type->name);
+ "match\n", var->get_interface_type()->name);
return;
}
}