On Sun, May 25, 2014 at 1:08 AM, Kenneth Graunke <kenn...@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 <kenn...@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. _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev