summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Turner <[email protected]>2015-10-19 15:08:28 -0700
committerMatt Turner <[email protected]>2015-10-21 10:17:38 -0700
commitb29f92daec59a4181a45175b6bfc6e636c57fb33 (patch)
treeb80c5d0187a122af995c69de51e167bdb362df5c
parent3ec9d96d435d5f57b35d4a8c75149fd75eaba187 (diff)
i965: Add mask_control_ex field and handle it in compaction.
Documentation is sparse, but it appears to have existed on G45 and ILK as a second bit extension of the mask_control field. Setting the pair of bits to 0b11 enables "NoCMask". Reviewed-by: Iago Toral Quiroga <[email protected]>
-rw-r--r--src/mesa/drivers/dri/i965/brw_eu_compact.c4
-rw-r--r--src/mesa/drivers/dri/i965/brw_inst.h2
2 files changed, 6 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_eu_compact.c b/src/mesa/drivers/dri/i965/brw_eu_compact.c
index b122deca727..f787ea3d4f8 100644
--- a/src/mesa/drivers/dri/i965/brw_eu_compact.c
+++ b/src/mesa/drivers/dri/i965/brw_eu_compact.c
@@ -1018,6 +1018,8 @@ brw_try_compact_instruction(const struct brw_device_info *devinfo,
if (devinfo->gen >= 6) {
compact(acc_wr_control);
+ } else {
+ compact(mask_control_ex);
}
compact(cond_modifier);
@@ -1229,6 +1231,8 @@ brw_uncompact_instruction(const struct brw_device_info *devinfo, brw_inst *dst,
if (devinfo->gen >= 6) {
uncompact(acc_wr_control);
+ } else {
+ uncompact(mask_control_ex);
}
uncompact(cond_modifier);
diff --git a/src/mesa/drivers/dri/i965/brw_inst.h b/src/mesa/drivers/dri/i965/brw_inst.h
index cb3d7e69a9a..819ce596547 100644
--- a/src/mesa/drivers/dri/i965/brw_inst.h
+++ b/src/mesa/drivers/dri/i965/brw_inst.h
@@ -182,6 +182,7 @@ F(debug_control, 30, 30)
F(cmpt_control, 29, 29)
FC(branch_control, 28, 28, devinfo->gen >= 8)
FC(acc_wr_control, 28, 28, devinfo->gen >= 6)
+FC(mask_control_ex, 28, 28, devinfo->is_g4x || devinfo->gen == 5)
F(cond_modifier, 27, 24)
FC(math_function, 27, 24, devinfo->gen >= 6)
F(exec_size, 23, 21)
@@ -792,6 +793,7 @@ F(cmpt_control, 29, 29) /* Same location as brw_inst */
FC(flag_subreg_nr, 28, 28, devinfo->gen <= 6)
F(cond_modifier, 27, 24) /* Same location as brw_inst */
FC(acc_wr_control, 23, 23, devinfo->gen >= 6)
+FC(mask_control_ex, 23, 23, devinfo->is_g4x || devinfo->gen == 5)
F(subreg_index, 22, 18)
F(datatype_index, 17, 13)
F(control_index, 12, 8)