From a1dd2f0bb6f9bf61d4a40d033740140b86c060e0 Mon Sep 17 00:00:00 2001 From: Matt Turner Date: Sat, 11 Apr 2015 15:00:19 -0700 Subject: [PATCH] i965/fs: Add LINTERP's src0 to fs_inst::regs_read(). LINTERP's src0 is PLN's src1, and PLN's src1 reads exec_size / 4 registers. Having that information lets us drop the delta_x/y special case code in split_virtual_grfs(). Reviewed-by: Jason Ekstrand --- src/mesa/drivers/dri/i965/brw_fs.cpp | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp index 7cc88eade45..5cdc19caab0 100644 --- a/src/mesa/drivers/dri/i965/brw_fs.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp @@ -953,6 +953,8 @@ fs_inst::regs_read(int arg) const return mlen; } else if (opcode == FS_OPCODE_INTERPOLATE_AT_PER_SLOT_OFFSET && arg == 0) { return mlen; + } else if (opcode == FS_OPCODE_LINTERP && arg == 0) { + return exec_size / 4; } switch (src[arg].file) { @@ -1984,17 +1986,6 @@ fs_visitor::split_virtual_grfs() } } - if (brw->has_pln && - this->delta_x[BRW_WM_PERSPECTIVE_PIXEL_BARYCENTRIC].file == GRF) { - /* PLN opcodes rely on the delta_xy being contiguous. We only have to - * check this for BRW_WM_PERSPECTIVE_PIXEL_BARYCENTRIC, because prior to - * Gen6, that was the only supported interpolation mode, and since Gen6, - * delta_x and delta_y are in fixed hardware registers. - */ - int vgrf = this->delta_x[BRW_WM_PERSPECTIVE_PIXEL_BARYCENTRIC].reg; - split_points[vgrf_to_reg[vgrf] + 1] = false; - } - foreach_block_and_inst(block, fs_inst, inst, cfg) { if (inst->dst.file == GRF) { int reg = vgrf_to_reg[inst->dst.reg] + inst->dst.reg_offset; -- 2.30.2