[Mesa-dev] [PATCH 10/10] i965/sf: Replace push/pop in brw_emit_anyprim_setup.
Matt Turner
mattst88 at gmail.com
Sun May 25 13:14:41 PDT 2014
On Sun, May 25, 2014 at 1:08 AM, Kenneth Graunke <kenneth at whitecape.org> wrote:
> Each of the subroutine emitters alter the predication state, but
> otherwise don't change anything (or put it back when they do).
> Resetting predication at the end makes these functions idempotent with
> regard to the default instruction state - which is a nice property.
>
> With that in place, push/pop is no longer necessary.
>
> Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
> ---
> src/mesa/drivers/dri/i965/brw_sf_emit.c | 26 +++++++++++---------------
> 1 file changed, 11 insertions(+), 15 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_sf_emit.c b/src/mesa/drivers/dri/i965/brw_sf_emit.c
> index a30586f..274c604 100644
> --- a/src/mesa/drivers/dri/i965/brw_sf_emit.c
> +++ b/src/mesa/drivers/dri/i965/brw_sf_emit.c
> @@ -501,6 +501,8 @@ void brw_emit_tri_setup(struct brw_sf_compile *c, bool allocate)
> BRW_URB_SWIZZLE_TRANSPOSE); /* XXX: Swizzle control "SF to windower" */
> }
> }
> +
> + brw_set_predicate_control(p, BRW_PREDICATE_NONE);
> }
>
>
> @@ -573,6 +575,8 @@ void brw_emit_line_setup(struct brw_sf_compile *c, bool allocate)
> BRW_URB_SWIZZLE_TRANSPOSE);
> }
> }
> +
> + brw_set_predicate_control(p, BRW_PREDICATE_NONE);
> }
>
> void brw_emit_point_sprite_setup(struct brw_sf_compile *c, bool allocate)
> @@ -661,6 +665,8 @@ void brw_emit_point_sprite_setup(struct brw_sf_compile *c, bool allocate)
> i*4, /* urb destination offset */
> BRW_URB_SWIZZLE_TRANSPOSE);
> }
> +
> + brw_set_predicate_control(p, BRW_PREDICATE_NONE);
> }
>
> /* Points setup - several simplifications as all attributes are
> @@ -721,6 +727,8 @@ void brw_emit_point_setup(struct brw_sf_compile *c, bool allocate)
> BRW_URB_SWIZZLE_TRANSPOSE);
> }
> }
> +
> + brw_set_predicate_control(p, BRW_PREDICATE_NONE);
> }
>
> void brw_emit_anyprim_setup( struct brw_sf_compile *c )
> @@ -750,11 +758,7 @@ void brw_emit_anyprim_setup( struct brw_sf_compile *c )
> (1<<_3DPRIM_RECTLIST) |
> (1<<_3DPRIM_TRIFAN_NOSTIPPLE)));
> jmp = brw_JMPI(p, ip, ip, brw_imm_d(0)) - p->store;
> - {
> - brw_push_insn_state(p);
> - brw_emit_tri_setup( c, false );
> - brw_pop_insn_state(p);
> - }
> + brw_emit_tri_setup( c, false );
May want to remove the weird spacing while we're touching this.
> brw_land_fwd_jump(p, jmp);
>
> brw_set_conditionalmod(p, BRW_CONDITIONAL_Z);
> @@ -765,21 +769,13 @@ void brw_emit_anyprim_setup( struct brw_sf_compile *c )
> (1<<_3DPRIM_LINESTRIP_BF) |
> (1<<_3DPRIM_LINESTRIP_CONT_BF)));
> jmp = brw_JMPI(p, ip, ip, brw_imm_d(0)) - p->store;
> - {
> - brw_push_insn_state(p);
> - brw_emit_line_setup( c, false );
> - brw_pop_insn_state(p);
> - }
> + brw_emit_line_setup( c, false );
and here.
> brw_land_fwd_jump(p, jmp);
>
> brw_set_conditionalmod(p, BRW_CONDITIONAL_Z);
> brw_AND(p, v1_null_ud, payload_attr, brw_imm_ud(1<<BRW_SPRITE_POINT_ENABLE));
> jmp = brw_JMPI(p, ip, ip, brw_imm_d(0)) - p->store;
> - {
> - brw_push_insn_state(p);
> - brw_emit_point_sprite_setup( c, false );
> - brw_pop_insn_state(p);
> - }
> + brw_emit_point_sprite_setup( c, false );
and here.
More information about the mesa-dev
mailing list