From 8873120f9fb0c82cfd46cd15c39e66c38076cb0d Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Thu, 5 Jun 2014 15:03:07 +0200 Subject: [PATCH] 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 --- src/mesa/drivers/dri/i965/brw_eu.h | 4 ++++ src/mesa/drivers/dri/i965/brw_eu_emit.c | 17 +++++++++++++++++ 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; -- 2.30.2