[Mesa-dev] [PATCH] i965/fs: Don't mess up stride for uniform integer multiplication.

Kenneth Graunke kenneth at whitecape.org
Mon Jun 22 15:27:13 PDT 2015


On Monday, June 22, 2015 02:58:36 PM Matt Turner wrote:
> If the stride is 0, the source is a uniform and we should not modify the
> stride.
> 
> Cc: "10.6" <mesa-stable at lists.freedesktop.org>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91047
> ---
>  src/mesa/drivers/dri/i965/brw_fs.cpp | 20 ++++++++++++++++----
>  1 file changed, 16 insertions(+), 4 deletions(-)
> 
> diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp
> index 5563c5a..903624c 100644
> --- a/src/mesa/drivers/dri/i965/brw_fs.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
> @@ -3196,10 +3196,16 @@ fs_visitor::lower_integer_multiplication()
>                 src1_1_w.fixed_hw_reg.dw1.ud >>= 16;
>              } else {
>                 src1_0_w.type = BRW_REGISTER_TYPE_UW;
> -               src1_0_w.stride = 2;
> +               if (src1_0_w.stride != 0) {
> +                  assert(src1_0_w.stride == 1);
> +                  src1_0_w.stride = 2;
> +               }
>  
>                 src1_1_w.type = BRW_REGISTER_TYPE_UW;
> -               src1_1_w.stride = 2;
> +               if (src1_1_w.stride != 0) {
> +                  assert(src1_1_w.stride == 1);
> +                  src1_1_w.stride = 2;
> +               }
>                 src1_1_w.subreg_offset += type_sz(BRW_REGISTER_TYPE_UW);
>              }
>              ibld.MUL(low, inst->src[0], src1_0_w);
> @@ -3209,10 +3215,16 @@ fs_visitor::lower_integer_multiplication()
>              fs_reg src0_1_w = inst->src[0];
>  
>              src0_0_w.type = BRW_REGISTER_TYPE_UW;
> -            src0_0_w.stride = 2;
> +            if (src0_0_w.stride != 0) {
> +               assert(src0_0_w.stride == 1);
> +               src0_0_w.stride = 2;
> +            }
>  
>              src0_1_w.type = BRW_REGISTER_TYPE_UW;
> -            src0_1_w.stride = 2;
> +            if (src0_1_w.stride != 0) {
> +               assert(src0_1_w.stride == 1);
> +               src0_1_w.stride = 2;
> +            }
>              src0_1_w.subreg_offset += type_sz(BRW_REGISTER_TYPE_UW);
>  
>              ibld.MUL(low, src0_0_w, inst->src[1]);
> 

Whoops.  Yeah, this makes sense.

Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20150622/60d7b76a/attachment.sig>


More information about the mesa-dev mailing list