From e5adc560cc8544200faa3e04504202839626ab37 Mon Sep 17 00:00:00 2001 From: Kenneth Graunke Date: Thu, 10 Jul 2014 17:48:39 -0700 Subject: [PATCH] i965/fs: Set force_uncompressed and force_sechalf on samplepos setup. gen8_fs_generator uses these to decide whether to set the execution size to 8 or 16, so we incorrectly made both of these MOVs the full width in SIMD16 shaders. (It happened to work out on Gen4-7.) Setting them should also help inform optimization passes what's really going on, which could help avoid bugs. Signed-off-by: Kenneth Graunke Reviewed-by: Matt Turner Reviewed-by: Chris Forbes Cc: mesa-stable@lists.freedesktop.org --- src/mesa/drivers/dri/i965/brw_fs.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp index 56a0183a739..53bd91b3180 100644 --- a/src/mesa/drivers/dri/i965/brw_fs.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp @@ -1256,19 +1256,21 @@ fs_visitor::emit_samplepos_setup(ir_variable *ir) stride(retype(brw_vec1_grf(payload.sample_pos_reg, 0), BRW_REGISTER_TYPE_B), 16, 8, 2); - emit(MOV(int_sample_x, fs_reg(sample_pos_reg))); + fs_inst *inst = emit(MOV(int_sample_x, fs_reg(sample_pos_reg))); if (dispatch_width == 16) { - fs_inst *inst = emit(MOV(half(int_sample_x, 1), - fs_reg(suboffset(sample_pos_reg, 16)))); + inst->force_uncompressed = true; + inst = emit(MOV(half(int_sample_x, 1), + fs_reg(suboffset(sample_pos_reg, 16)))); inst->force_sechalf = true; } /* Compute gl_SamplePosition.x */ compute_sample_position(pos, int_sample_x); pos.reg_offset++; - emit(MOV(int_sample_y, fs_reg(suboffset(sample_pos_reg, 1)))); + inst = emit(MOV(int_sample_y, fs_reg(suboffset(sample_pos_reg, 1)))); if (dispatch_width == 16) { - fs_inst *inst = emit(MOV(half(int_sample_y, 1), - fs_reg(suboffset(sample_pos_reg, 17)))); + inst->force_uncompressed = true; + inst = emit(MOV(half(int_sample_y, 1), + fs_reg(suboffset(sample_pos_reg, 17)))); inst->force_sechalf = true; } /* Compute gl_SamplePosition.y */ -- 2.30.2