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 );
    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 );
    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 );
    brw_land_fwd_jump(p, jmp);
 
    brw_emit_point_setup( c, false );
-- 
1.9.2

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to