[Mesa-dev] [PATCH 07/15] i965/vec4: Inline get_pull_constant_offset

Eduardo Lima Mitev elima at igalia.com
Fri Dec 18 04:42:58 PST 2015


Patch is:

Reviewed-by: Eduardo Lima Mitev <elima at igalia.com>

On 12/10/2015 05:23 AM, Jason Ekstrand wrote:
> It's not really doing enough anymore to justify a helper function.
> ---
>  src/mesa/drivers/dri/i965/brw_vec4.h           |  2 --
>  src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp | 37 ++++++++++----------------
>  2 files changed, 14 insertions(+), 25 deletions(-)
> 
> diff --git a/src/mesa/drivers/dri/i965/brw_vec4.h b/src/mesa/drivers/dri/i965/brw_vec4.h
> index ae5bf69..f2e5ce1 100644
> --- a/src/mesa/drivers/dri/i965/brw_vec4.h
> +++ b/src/mesa/drivers/dri/i965/brw_vec4.h
> @@ -284,8 +284,6 @@ public:
>  
>     src_reg get_scratch_offset(bblock_t *block, vec4_instruction *inst,
>  			      src_reg *reladdr, int reg_offset);
> -   src_reg get_pull_constant_offset(bblock_t *block, vec4_instruction *inst,
> -				    src_reg *reladdr, int reg_offset);
>     void emit_scratch_read(bblock_t *block, vec4_instruction *inst,
>  			  dst_reg dst,
>  			  src_reg orig_src,
> diff --git a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
> index 443d0eb..7712d34 100644
> --- a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
> @@ -1464,27 +1464,6 @@ vec4_visitor::get_scratch_offset(bblock_t *block, vec4_instruction *inst,
>     }
>  }
>  
> -src_reg
> -vec4_visitor::get_pull_constant_offset(bblock_t * block, vec4_instruction *inst,
> -				       src_reg *reladdr, int reg_offset)
> -{
> -   if (reladdr) {
> -      src_reg index = src_reg(this, glsl_type::int_type);
> -
> -      emit_before(block, inst, ADD(dst_reg(index), *reladdr,
> -                                   brw_imm_d(reg_offset * 16)));
> -
> -      return index;
> -   } else if (devinfo->gen >= 8) {
> -      /* Store the offset in a GRF so we can send-from-GRF. */
> -      src_reg offset = src_reg(this, glsl_type::int_type);
> -      emit_before(block, inst, MOV(dst_reg(offset), brw_imm_d(reg_offset * 16)));
> -      return offset;
> -   } else {
> -      return brw_imm_d(reg_offset * 16);
> -   }
> -}
> -
>  /**
>   * Emits an instruction before @inst to load the value named by @orig_src
>   * from scratch space at @base_offset to @temp.
> @@ -1666,8 +1645,20 @@ vec4_visitor::emit_pull_constant_load(bblock_t *block, vec4_instruction *inst,
>  {
>     int reg_offset = base_offset + orig_src.reg_offset;
>     const unsigned index = prog_data->base.binding_table.pull_constants_start;
> -   src_reg offset = get_pull_constant_offset(block, inst, orig_src.reladdr,
> -                                             reg_offset);
> +
> +   src_reg offset;
> +   if (orig_src.reladdr) {
> +      offset = src_reg(this, glsl_type::int_type);
> +
> +      emit_before(block, inst, ADD(dst_reg(offset), *orig_src.reladdr,
> +                                   brw_imm_d(reg_offset * 16)));
> +   } else if (devinfo->gen >= 8) {
> +      /* Store the offset in a GRF so we can send-from-GRF. */
> +      offset = src_reg(this, glsl_type::int_type);
> +      emit_before(block, inst, MOV(dst_reg(offset), brw_imm_d(reg_offset * 16)));
> +   } else {
> +      offset = brw_imm_d(reg_offset * 16);
> +   }
>  
>     emit_pull_constant_load_reg(temp,
>                                 brw_imm_ud(index),
> 



More information about the mesa-dev mailing list