From 12bc22ef58377191508af91a918efd18e2da7500 Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Thu, 18 Jun 2015 17:48:27 -0700 Subject: [PATCH] i965/fs: Report the right value in fs_inst::regs_read() for PIXEL_X/Y Reviewed-by: Iago Toral Quiroga Reviewed-by: Topi Pohjolainen Acked-by: Francisco Jerez --- src/mesa/drivers/dri/i965/brw_fs.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp index e83a092..d91ad0a 100644 --- a/src/mesa/drivers/dri/i965/brw_fs.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp @@ -701,6 +701,7 @@ fs_inst::is_partial_write() const int fs_inst::regs_read(int arg) const { + unsigned components = 1; switch (opcode) { case FS_OPCODE_FB_WRITE: case SHADER_OPCODE_URB_WRITE_SIMD8: @@ -726,6 +727,12 @@ fs_inst::regs_read(int arg) const return exec_size / 4; break; + case FS_OPCODE_PIXEL_X: + case FS_OPCODE_PIXEL_Y: + if (arg == 0) + components = 1; + break; + default: if (is_tex() && arg == 0 && src[0].file == GRF) return mlen; @@ -742,8 +749,8 @@ fs_inst::regs_read(int arg) const if (src[arg].stride == 0) { return 1; } else { - int size = src[arg].width * src[arg].stride * type_sz(src[arg].type); - return (size + 31) / 32; + int size = components * src[arg].width * type_sz(src[arg].type); + return DIV_ROUND_UP(size * src[arg].stride, 32); } case MRF: unreachable("MRF registers are not allowed as sources"); -- 2.7.4