From 70023c40c6094208cc869ef4a8eb8d9ccebc8395 Mon Sep 17 00:00:00 2001 From: Francisco Jerez Date: Sun, 15 May 2016 16:52:49 -0700 Subject: [PATCH] i965/fs: Apply execution controls from the instruction to scratch messages. Until now the execution controls (e.g. channel group, force_writemask_all, exec_size) of the instruction had been completely ignored by spilling, even though that can lead to a mismatch between the channel mask applied to the contents of the (un)spilled memory and the GRF source or destination of the instruction. In some cases we'll actually want the (un)spill messages to be marked force_writemask_all regardless of whether the instruction has it set, but that will have to be handled specially by the caller. Reviewed-by: Jason Ekstrand --- src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) 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 e3ed674d056..b310dcbd4fc 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp @@ -772,9 +772,8 @@ fs_visitor::emit_unspill(bblock_t *block, fs_inst *inst, fs_reg dst, if (dispatch_width == 16 && count % 2 == 0) reg_size = 2; - const fs_builder ibld = bld.annotate(inst->annotation, inst->ir) - .group(reg_size * 8, 0) - .at(block, inst); + const fs_builder ibld = fs_builder(this, block, inst) + .group(reg_size * 8, 0); for (unsigned i = 0; i < count / reg_size; i++) { /* The Gen7 descriptor-based offset is 12 bits of HWORD units. Because @@ -811,9 +810,9 @@ fs_visitor::emit_spill(bblock_t *block, fs_inst *inst, fs_reg src, if (dispatch_width == 16 && count % 2 == 0) reg_size = 2; - const fs_builder ibld = bld.annotate(inst->annotation, inst->ir) - .group(reg_size * 8, 0) - .at(block, inst->next); + const fs_builder ibld = fs_builder(this, block, inst) + .at(block, inst->next) + .group(reg_size * 8, 0); for (unsigned i = 0; i < count / reg_size; i++) { fs_inst *spill_inst = -- 2.30.2