[Mesa-dev] [PATCH 2/7] i965: Replace open-coded store/load SO_WRITE_OFFSET to/from mem

Lionel Landwerlin lionel.g.landwerlin at intel.com
Fri Dec 9 11:58:58 UTC 2016


Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>

On 09/12/16 10:54, Chris Wilson wrote:
> Rather than emit the instructions directions, make use of the helpers
> brw_store_register_mem32() and brw_load_register_mem()
>
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> ---
>   src/mesa/drivers/dri/i965/hsw_sol.c | 27 +++++++++------------------
>   1 file changed, 9 insertions(+), 18 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/hsw_sol.c b/src/mesa/drivers/dri/i965/hsw_sol.c
> index 87d4ab531b..2f1112699b 100644
> --- a/src/mesa/drivers/dri/i965/hsw_sol.c
> +++ b/src/mesa/drivers/dri/i965/hsw_sol.c
> @@ -204,15 +204,10 @@ hsw_pause_transform_feedback(struct gl_context *ctx,
>         brw_emit_mi_flush(brw);
>   
>         /* Save the SOL buffer offset register values. */
> -      for (int i = 0; i < BRW_MAX_XFB_STREAMS; i++) {
> -         BEGIN_BATCH(3);
> -         OUT_BATCH(MI_STORE_REGISTER_MEM | (3 - 2));
> -         OUT_BATCH(GEN7_SO_WRITE_OFFSET(i));
> -         OUT_RELOC(brw_obj->offset_bo,
> -                   I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
> -                   i * sizeof(uint32_t));
> -         ADVANCE_BATCH();
> -      }
> +      for (int i = 0; i < BRW_MAX_XFB_STREAMS; i++)
> +         brw_store_register_mem32(brw, brw_obj->offset_bo,
> +                                  GEN7_SO_WRITE_OFFSET(i),
> +                                  i * sizeof(uint32_t));
>      }
>   
>      /* Add any primitives written to our tally */
> @@ -232,15 +227,11 @@ hsw_resume_transform_feedback(struct gl_context *ctx,
>   
>      if (brw->is_haswell) {
>         /* Reload the SOL buffer offset registers. */
> -      for (int i = 0; i < BRW_MAX_XFB_STREAMS; i++) {
> -         BEGIN_BATCH(3);
> -         OUT_BATCH(GEN7_MI_LOAD_REGISTER_MEM | (3 - 2));
> -         OUT_BATCH(GEN7_SO_WRITE_OFFSET(i));
> -         OUT_RELOC(brw_obj->offset_bo,
> -                   I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
> -                   i * sizeof(uint32_t));
> -         ADVANCE_BATCH();
> -      }
> +      for (int i = 0; i < BRW_MAX_XFB_STREAMS; i++)
> +         brw_load_register_mem(brw, GEN7_SO_WRITE_OFFSET(i),
> +                               brw_obj->offset_bo,
> +                               I915_GEM_DOMAIN_INSTRUCTION, 0,
> +                               i * sizeof(uint32_t));
>      }
>   
>      /* Store the new starting value of the SO_NUM_PRIMS_WRITTEN counters. */




More information about the mesa-dev mailing list