Mesa (master): i965/fs: Add no_dd_{clear,check} fields to fs_inst.

Matt Turner mattst88 at kemper.freedesktop.org
Tue Jul 1 05:30:31 UTC 2014


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

Author: Matt Turner <mattst88 at gmail.com>
Date:   Sat Jun 28 23:31:04 2014 -0700

i965/fs: Add no_dd_{clear,check} fields to fs_inst.

And plumb them through. Also make the assert in the generator look like
the vec4 one.

Reviewed-by: Kristian Høgsberg <krh at bitplanet.net>

---

 src/mesa/drivers/dri/i965/brw_fs.h             |    2 ++
 src/mesa/drivers/dri/i965/brw_fs_generator.cpp |   14 ++++++++------
 2 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_fs.h b/src/mesa/drivers/dri/i965/brw_fs.h
index 3d0da23..58e7175 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.h
+++ b/src/mesa/drivers/dri/i965/brw_fs.h
@@ -239,6 +239,8 @@ public:
    bool force_uncompressed:1;
    bool force_sechalf:1;
    bool force_writemask_all:1;
+   bool no_dd_clear:1;
+   bool no_dd_check:1;
 };
 
 /**
diff --git a/src/mesa/drivers/dri/i965/brw_fs_generator.cpp b/src/mesa/drivers/dri/i965/brw_fs_generator.cpp
index 0f41781..3dab2da 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_generator.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_generator.cpp
@@ -1755,14 +1755,16 @@ fs_generator::generate_code(exec_list *instructions)
          break;
       }
 
-      if (inst->conditional_mod) {
-         /* Set the conditional modifier on the last instruction we generated.
-          * Also, make sure we only emitted one instruction - anything else
-          * doesn't make sense.
-          */
-         assert(p->next_insn_offset == last_insn_offset + 16);
+      if (inst->no_dd_clear || inst->no_dd_check || inst->conditional_mod) {
+         assert(p->next_insn_offset == last_insn_offset + 16 ||
+                !"conditional_mod, no_dd_check, or no_dd_clear set for IR "
+                 "emitting more than 1 instruction");
+
          brw_inst *last = &p->store[last_insn_offset / 16];
+
          brw_inst_set_cond_modifier(brw, last, inst->conditional_mod);
+         brw_inst_set_no_dd_clear(brw, last, inst->no_dd_clear);
+         brw_inst_set_no_dd_check(brw, last, inst->no_dd_check);
       }
    }
 




More information about the mesa-commit mailing list