From 6d2536395d45e0c8c21186811b1a63da4cb12198 Mon Sep 17 00:00:00 2001 From: Matt Turner Date: Sat, 28 Jun 2014 23:31:04 -0700 Subject: [PATCH] i965/fs: Add no_dd_{clear,check} fields to fs_inst. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit And plumb them through. Also make the assert in the generator look like the vec4 one. Reviewed-by: Kristian Høgsberg --- 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 3d0da23acf1..58e71756b16 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 0f41781183d..3dab2dae0e4 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); } } -- 2.30.2