[Mesa-dev] [PATCH 4/6] glsl: Convert uniform_block in lower_ubo_reference to ir_rvalue.
Ilia Mirkin
imirkin at alum.mit.edu
Tue Jul 15 03:24:32 PDT 2014
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