On Sat, Jul 12, 2014 at 9:51 PM, Chris Forbes <chr...@ijw.co.nz> wrote: > Previously this was a block index with special semantics for -1. > With ARB_gpu_shader5, this need not be a compile-time constant, so > allow any rvalue here and convert the -1 to a NULL pointer. > > Signed-off-by: Chris Forbes <chr...@ijw.co.nz> > --- > src/glsl/lower_ubo_reference.cpp | 15 ++++++++------- > 1 file changed, 8 insertions(+), 7 deletions(-) > > diff --git a/src/glsl/lower_ubo_reference.cpp > b/src/glsl/lower_ubo_reference.cpp > index 85e9c7d..c49ae34 100644 > --- a/src/glsl/lower_ubo_reference.cpp > +++ b/src/glsl/lower_ubo_reference.cpp > @@ -57,7 +57,7 @@ public: > void *mem_ctx; > struct gl_shader *shader; > struct gl_uniform_buffer_variable *ubo_var; > - unsigned uniform_block; > + ir_rvalue *uniform_block; > bool progress; > }; > > @@ -145,10 +145,10 @@ lower_ubo_reference_visitor::handle_rvalue(ir_rvalue > **rvalue) > interface_field_name(mem_ctx, (char *) var->get_interface_type()->name, > deref); > > - this->uniform_block = -1; > + this->uniform_block = NULL; > for (unsigned i = 0; i < shader->NumUniformBlocks; i++) { > if (strcmp(field_name, shader->UniformBlocks[i].Name) == 0) { > - this->uniform_block = i; > + this->uniform_block = new(mem_ctx) ir_constant(i); > > struct gl_uniform_block *block = &shader->UniformBlocks[i]; > > @@ -159,7 +159,7 @@ lower_ubo_reference_visitor::handle_rvalue(ir_rvalue > **rvalue) > } > } > > - assert(this->uniform_block != (unsigned) -1); > + assert(this->uniform_block); > > ir_rvalue *offset = new(mem_ctx) ir_constant(0u); > unsigned const_offset = 0; > @@ -277,11 +277,12 @@ ir_expression * > lower_ubo_reference_visitor::ubo_load(const glsl_type *type, > ir_rvalue *offset) > { > + ir_rvalue * block_ref = this->uniform_block->clone(mem_ctx, NULL);
ir_value *block_ref = ... I think is the more common way to write this. (i.e. remove the space after the * ). > return new(mem_ctx) > ir_expression(ir_binop_ubo_load, > - type, > - new(mem_ctx) ir_constant(this->uniform_block), > - offset); > + type, > + block_ref, > + offset); > > } > > -- > 2.0.1 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev