diff options
author | Iago Toral Quiroga <[email protected]> | 2014-06-05 15:03:07 +0200 |
---|---|---|
committer | Kenneth Graunke <[email protected]> | 2014-06-07 21:32:35 -0700 |
commit | 8873120f9fb0c82cfd46cd15c39e66c38076cb0d (patch) | |
tree | 8fd278dec71eb0a1a76ad91e9d0aac9b7e6ba057 | |
parent | 220e208329e923faf50524c0adf72e4dcc931e49 (diff) |
Revert "i965: Move brw_land_fwd_jump() to compilation unit of its use."
This reverts commit f3cb2e6ed7059b22752a6b7d7a98c07ba6b5552e.
brw_land_fwd_jump() is convenient wherever we produce JMPI instructions
and we will use JMPI to implement framebuffer writes that involve line
antialiasing in gen < 6.
Reviewed-by: Kenneth Graunke <[email protected]>
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_eu.h | 4 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_eu_emit.c | 17 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_sf_emit.c | 16 |
3 files changed, 21 insertions, 16 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_eu.h b/src/mesa/drivers/dri/i965/brw_eu.h index c9e5a4b7ddc..5aaaad43b6e 100644 --- a/src/mesa/drivers/dri/i965/brw_eu.h +++ b/src/mesa/drivers/dri/i965/brw_eu.h @@ -340,6 +340,10 @@ struct brw_instruction *brw_CONT(struct brw_compile *p); struct brw_instruction *gen6_CONT(struct brw_compile *p); struct brw_instruction *gen6_HALT(struct brw_compile *p); +/* Forward jumps: + */ +void brw_land_fwd_jump(struct brw_compile *p, int jmp_insn_idx); + struct brw_instruction *brw_JMPI(struct brw_compile *p, struct brw_reg index, unsigned predicate_control); diff --git a/src/mesa/drivers/dri/i965/brw_eu_emit.c b/src/mesa/drivers/dri/i965/brw_eu_emit.c index 4458ac36d2c..06baebf606b 100644 --- a/src/mesa/drivers/dri/i965/brw_eu_emit.c +++ b/src/mesa/drivers/dri/i965/brw_eu_emit.c @@ -1758,6 +1758,23 @@ struct brw_instruction *brw_WHILE(struct brw_compile *p) return insn; } +/* FORWARD JUMPS: + */ +void brw_land_fwd_jump(struct brw_compile *p, int jmp_insn_idx) +{ + struct brw_context *brw = p->brw; + struct brw_instruction *jmp_insn = &p->store[jmp_insn_idx]; + unsigned jmpi = 1; + + if (brw->gen >= 5) + jmpi = 2; + + assert(jmp_insn->header.opcode == BRW_OPCODE_JMPI); + assert(jmp_insn->bits1.da1.src1_reg_file == BRW_IMMEDIATE_VALUE); + + jmp_insn->bits3.ud = jmpi * (p->nr_insn - jmp_insn_idx - 1); +} + /* To integrate with the above, it makes sense that the comparison * instruction should populate the flag register. It might be simpler * just to use the flag reg for most WM tasks? diff --git a/src/mesa/drivers/dri/i965/brw_sf_emit.c b/src/mesa/drivers/dri/i965/brw_sf_emit.c index 8e5d33bff99..b0593f334a1 100644 --- a/src/mesa/drivers/dri/i965/brw_sf_emit.c +++ b/src/mesa/drivers/dri/i965/brw_sf_emit.c @@ -729,22 +729,6 @@ void brw_emit_point_setup(struct brw_sf_compile *c, bool allocate) brw_set_default_predicate_control(p, BRW_PREDICATE_NONE); } -static void -brw_land_fwd_jump(struct brw_compile *p, int jmp_insn_idx) -{ - struct brw_context *brw = p->brw; - struct brw_instruction *jmp_insn = &p->store[jmp_insn_idx]; - unsigned jmpi = 1; - - if (brw->gen >= 5) - jmpi = 2; - - assert(jmp_insn->header.opcode == BRW_OPCODE_JMPI); - assert(jmp_insn->bits1.da1.src1_reg_file == BRW_IMMEDIATE_VALUE); - - jmp_insn->bits3.ud = jmpi * (p->nr_insn - jmp_insn_idx - 1); -} - void brw_emit_anyprim_setup( struct brw_sf_compile *c ) { struct brw_compile *p = &c->func; |