[Mesa-dev] [PATCH 09/32] i965/fs: Fix fs_inst::regs_written calculation for instructions with scalar dst.

Matt Turner mattst88 at gmail.com
Fri Feb 6 12:47:17 PST 2015


On Fri, Feb 6, 2015 at 6:42 AM, Francisco Jerez <currojerez at riseup.net> wrote:
> Scalar registers are required to have zero stride, fix the
> regs_written calculation not to assume that the instruction writes
> zero registers in that case.
> ---
>  src/mesa/drivers/dri/i965/brw_fs.cpp | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp
> index 0a82fb7..bafe438 100644
> --- a/src/mesa/drivers/dri/i965/brw_fs.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
> @@ -126,7 +126,8 @@ fs_inst::init(enum opcode opcode, uint8_t exec_size, const fs_reg &dst,
>     case HW_REG:
>     case MRF:
>     case ATTR:
> -      this->regs_written = (dst.width * dst.stride * type_sz(dst.type) + 31) / 32;
> +      this->regs_written =
> +         CEILING(MAX2(dst.width * dst.stride, 1) * type_sz(dst.type), 32);

I sent basically the same patch ("[PATCH 06/10] i965/fs: Consider
subregister writes to be writing a register.")

I don't really care which gets committed, but I did have to think a
lot more about yours (and look up what CEILING did) to be sure it did
the same thing. Maybe you like mine better?


More information about the mesa-dev mailing list