Mesa (master): i965: Update JIP/UIP compaction code to operate on bytes.

Matt Turner mattst88 at kemper.freedesktop.org
Tue Aug 19 01:27:50 UTC 2014


Module: Mesa
Branch: master
Commit: 2faa1a414c985c3dd86bcfc9c0dfa33784ad67ab
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=2faa1a414c985c3dd86bcfc9c0dfa33784ad67ab

Author: Matt Turner <mattst88 at gmail.com>
Date:   Tue Jun 17 12:14:44 2014 -0700

i965: Update JIP/UIP compaction code to operate on bytes.

JIP/UIP were previously in units of compacted instructions. On Gen8
they're in units of bytes.

Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

---

 src/mesa/drivers/dri/i965/brw_eu_compact.c |   12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_eu_compact.c b/src/mesa/drivers/dri/i965/brw_eu_compact.c
index 25a96e7..ecd9797 100644
--- a/src/mesa/drivers/dri/i965/brw_eu_compact.c
+++ b/src/mesa/drivers/dri/i965/brw_eu_compact.c
@@ -653,16 +653,20 @@ static void
 update_uip_jip(struct brw_context *brw, brw_inst *insn,
                int this_old_ip, int *compacted_counts)
 {
-   int jip = brw_inst_jip(brw, insn);
-   jip -= compacted_between(this_old_ip, this_old_ip + jip, compacted_counts);
+   int scale = brw->gen >= 8 ? sizeof(brw_compact_inst) : 1;
+
+   int32_t jip = brw_inst_jip(brw, insn);
+   jip -= scale *
+      compacted_between(this_old_ip, this_old_ip + jip, compacted_counts);
    brw_inst_set_jip(brw, insn, jip);
 
    if (brw_inst_opcode(brw, insn) == BRW_OPCODE_ENDIF ||
        brw_inst_opcode(brw, insn) == BRW_OPCODE_WHILE)
       return;
 
-   int uip = brw_inst_uip(brw, insn);
-   uip -= compacted_between(this_old_ip, this_old_ip + uip, compacted_counts);
+   int32_t uip = brw_inst_uip(brw, insn);
+   uip -= scale *
+      compacted_between(this_old_ip, this_old_ip + uip, compacted_counts);
    brw_inst_set_uip(brw, insn, uip);
 }
 




More information about the mesa-commit mailing list