summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2016-04-15 09:45:55 -0700
committerJason Ekstrand <[email protected]>2016-04-15 09:53:55 -0700
commitd7189bdeeeae3179a62cee0d31a3d0a9d4f96f6f (patch)
tree7fe63a62537f4dc83ae187b02ac7cddd39efa679
parentc3362453f9235251253daefbb46c40e1cb07a790 (diff)
Revert "i965/fs: Properly write-mask spills"
This reverts commit 9c0109a1f6e0c9c8dd81fc215f8c0c5976e05790.
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs.h2
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp14
2 files changed, 5 insertions, 11 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_fs.h b/src/mesa/drivers/dri/i965/brw_fs.h
index 2b00129b4ba..6afb9b6c8a6 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.h
+++ b/src/mesa/drivers/dri/i965/brw_fs.h
@@ -225,7 +225,7 @@ public:
void emit_unspill(bblock_t *block, fs_inst *inst, fs_reg reg,
uint32_t spill_offset, int count);
void emit_spill(bblock_t *block, fs_inst *inst, fs_reg reg,
- uint32_t spill_offset, int count, bool we_all);
+ uint32_t spill_offset, int count);
void emit_nir_code();
void nir_setup_inputs();
diff --git a/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp b/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp
index 791da0e038e..2347cd5d33f 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp
@@ -751,7 +751,6 @@ fs_visitor::emit_unspill(bblock_t *block, fs_inst *inst, fs_reg dst,
dst);
unspill_inst->offset = spill_offset;
unspill_inst->regs_written = reg_size;
- unspill_inst->force_writemask_all = true;
if (!gen7_read) {
unspill_inst->base_mrf = FIRST_SPILL_MRF(devinfo->gen) + 1;
@@ -765,11 +764,11 @@ fs_visitor::emit_unspill(bblock_t *block, fs_inst *inst, fs_reg dst,
void
fs_visitor::emit_spill(bblock_t *block, fs_inst *inst, fs_reg src,
- uint32_t spill_offset, int count, bool we_all)
+ uint32_t spill_offset, int count)
{
int reg_size = 1;
int spill_base_mrf = FIRST_SPILL_MRF(devinfo->gen) + 1;
- if (inst->exec_size == 16 && count % 2 == 0) {
+ if (dispatch_width == 16 && count % 2 == 0) {
spill_base_mrf = FIRST_SPILL_MRF(devinfo->gen);
reg_size = 2;
}
@@ -785,8 +784,6 @@ fs_visitor::emit_spill(bblock_t *block, fs_inst *inst, fs_reg src,
spill_inst->offset = spill_offset + i * reg_size * REG_SIZE;
spill_inst->mlen = 1 + reg_size; /* header, value */
spill_inst->base_mrf = spill_base_mrf;
- spill_inst->force_writemask_all = we_all;
- spill_inst->force_sechalf = inst->force_sechalf;
}
}
@@ -941,15 +938,12 @@ fs_visitor::spill_reg(int spill_reg)
* inst->regs_written(), then we need to unspill the destination
* since we write back out all of the regs_written().
*/
- bool need_unspill = inst->is_partial_write() ||
- type_sz(inst->dst.type) != 4;
- if (need_unspill)
+ if (inst->is_partial_write())
emit_unspill(block, inst, spill_src, subset_spill_offset,
inst->regs_written);
emit_spill(block, inst, spill_src, subset_spill_offset,
- inst->regs_written,
- need_unspill || inst->force_writemask_all);
+ inst->regs_written);
}
}