[Mesa-dev] [PATCH 4/6] glsl: Convert uniform_block in lower_ubo_reference to ir_rvalue.

Chris Forbes chrisf at ijw.co.nz
Tue Jul 15 03:29:43 PDT 2014


Indeed, will fix.

On Tue, Jul 15, 2014 at 10:24 PM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
> On Sat, Jul 12, 2014 at 9:51 PM, Chris Forbes <chrisf at 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 <chrisf at 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 at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list