summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIan Romanick <[email protected]>2012-12-14 12:00:14 -0800
committerIan Romanick <[email protected]>2013-01-25 09:07:34 -0500
commit13be1f4a103802ed936f2374d72b2f6979dafd58 (patch)
tree636053ac19725220449afbcb65310ec99e1c1ddf
parent17e6f1904444be019cafa208495e3fe479cb86fd (diff)
glsl: Add ir_variable::is_in_uniform_block predicate
The way a variable is tested for this property is about to change, and this makes the code easier to modify. Signed-off-by: Ian Romanick <[email protected]> Reviewed-by: Carl Worth <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]>
-rw-r--r--src/glsl/ir.h8
-rw-r--r--src/glsl/link_uniforms.cpp4
-rw-r--r--src/glsl/linker.cpp2
-rw-r--r--src/glsl/lower_ubo_reference.cpp2
-rw-r--r--src/glsl/opt_dead_code.cpp2
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs_visitor.cpp2
-rw-r--r--src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp2
-rw-r--r--src/mesa/program/ir_to_mesa.cpp2
8 files changed, 16 insertions, 8 deletions
diff --git a/src/glsl/ir.h b/src/glsl/ir.h
index 9fdfb18e25b..14212dfb7a2 100644
--- a/src/glsl/ir.h
+++ b/src/glsl/ir.h
@@ -350,6 +350,14 @@ public:
glsl_interp_qualifier determine_interpolation_mode(bool flat_shade);
/**
+ * Determine whether or not a variable is part of a uniform block.
+ */
+ inline bool is_in_uniform_block() const
+ {
+ return this->mode == ir_var_uniform && this->uniform_block != -1;
+ }
+
+ /**
* Declared type of the variable
*/
const struct glsl_type *type;
diff --git a/src/glsl/link_uniforms.cpp b/src/glsl/link_uniforms.cpp
index 25bba15bdbe..c639a3d16a4 100644
--- a/src/glsl/link_uniforms.cpp
+++ b/src/glsl/link_uniforms.cpp
@@ -228,7 +228,7 @@ public:
ir_variable *var)
{
ubo_var = NULL;
- if (var->uniform_block != -1) {
+ if (var->is_in_uniform_block()) {
struct gl_uniform_block *block =
&shader->UniformBlocks[var->uniform_block];
@@ -442,7 +442,7 @@ link_update_uniform_buffer_variables(struct gl_shader *shader)
foreach_list(node, shader->ir) {
ir_variable *const var = ((ir_instruction *) node)->as_variable();
- if ((var == NULL) || (var->uniform_block == -1))
+ if ((var == NULL) || !var->is_in_uniform_block())
continue;
assert(var->mode == ir_var_uniform);
diff --git a/src/glsl/linker.cpp b/src/glsl/linker.cpp
index 1d4e2f6e793..a480dd0523f 100644
--- a/src/glsl/linker.cpp
+++ b/src/glsl/linker.cpp
@@ -1077,7 +1077,7 @@ update_array_sizes(struct gl_shader_program *prog)
* will not be eliminated. Since we always do std140, just
* don't resize arrays in UBOs.
*/
- if (var->uniform_block != -1)
+ if (var->is_in_uniform_block())
continue;
unsigned int size = var->max_array_access;
diff --git a/src/glsl/lower_ubo_reference.cpp b/src/glsl/lower_ubo_reference.cpp
index e8d2c4742d6..1d08009a34e 100644
--- a/src/glsl/lower_ubo_reference.cpp
+++ b/src/glsl/lower_ubo_reference.cpp
@@ -78,7 +78,7 @@ lower_ubo_reference_visitor::handle_rvalue(ir_rvalue **rvalue)
return;
ir_variable *var = deref->variable_referenced();
- if (!var || var->uniform_block == -1)
+ if (!var || !var->is_in_uniform_block())
return;
mem_ctx = ralloc_parent(*rvalue);
diff --git a/src/glsl/opt_dead_code.cpp b/src/glsl/opt_dead_code.cpp
index dad307af779..78d31cfcb3f 100644
--- a/src/glsl/opt_dead_code.cpp
+++ b/src/glsl/opt_dead_code.cpp
@@ -106,7 +106,7 @@ do_dead_code(exec_list *instructions, bool uniform_locations_assigned)
if (entry->var->mode == ir_var_uniform &&
(uniform_locations_assigned ||
entry->var->constant_value ||
- entry->var->uniform_block != -1))
+ entry->var->is_in_uniform_block()))
continue;
entry->var->remove();
diff --git a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
index 29ad60212a6..7646d597e01 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
@@ -107,7 +107,7 @@ fs_visitor::visit(ir_variable *ir)
* ir_binop_ubo_load expressions and not ir_dereference_variable for UBO
* variables, so no need for them to be in variable_ht.
*/
- if (ir->uniform_block != -1)
+ if (ir->is_in_uniform_block())
return;
if (dispatch_width == 16) {
diff --git a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
index 64267535155..3a2f1d317fc 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
+++ b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
@@ -1052,7 +1052,7 @@ vec4_visitor::visit(ir_variable *ir)
* ir_binop_ubo_load expressions and not ir_dereference_variable for UBO
* variables, so no need for them to be in variable_ht.
*/
- if (ir->uniform_block != -1)
+ if (ir->is_in_uniform_block())
return;
/* Track how big the whole uniform variable is, in case we need to put a
diff --git a/src/mesa/program/ir_to_mesa.cpp b/src/mesa/program/ir_to_mesa.cpp
index 4160caa9b7a..03a1dc402c3 100644
--- a/src/mesa/program/ir_to_mesa.cpp
+++ b/src/mesa/program/ir_to_mesa.cpp
@@ -2470,7 +2470,7 @@ _mesa_generate_parameters_list_for_uniforms(struct gl_shader_program
ir_variable *var = ((ir_instruction *) node)->as_variable();
if ((var == NULL) || (var->mode != ir_var_uniform)
- || var->uniform_block != -1 || (strncmp(var->name, "gl_", 3) == 0))
+ || var->is_in_uniform_block() || (strncmp(var->name, "gl_", 3) == 0))
continue;
add.process(var);