[Mesa-stable] [PATCH] i965/fs: Copy the offset when lowering logical pull constant sends

Francisco Jerez currojerez at riseup.net
Wed Jun 1 22:33:24 UTC 2016


Jason Ekstrand <jason at jlekstrand.net> writes:

> This fixes 64 Vulkan CTS tests per gen
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=96299
> Cc: "12.0" <mesa-stable at lists.freedesktop.org>
> Cc: Francisco Jerez <currojerez at riseup.net>
> Cc: Mark Janes <mark.a.janes at intel.com>
> ---
>  src/mesa/drivers/dri/i965/brw_fs.cpp | 8 ++++++++
>  1 file changed, 8 insertions(+)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp
> index 00d937e..20bb900 100644
> --- a/src/mesa/drivers/dri/i965/brw_fs.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
> @@ -4448,6 +4448,14 @@ lower_varying_pull_constant_logical_send(const fs_builder &bld, fs_inst *inst)
>     const brw_device_info *devinfo = bld.shader->devinfo;
>  
>     if (devinfo->gen >= 7) {
> +      /* We are switching the instruction from an ALU-like instruction to a
> +       * send-from-grf instruction.  Since sends can't handle strides or
> +       * source modifiers, we have to make a copy of the offset source.
> +       */
> +      fs_reg tmp = bld.vgrf(inst->src[1].type);

I suggest you use a fixed UD type for the temporary (since that is what
the varying pull constant load instruction requires and using any other
type will cause the send-message to silently reinterpret the offset as
something else than what it is.  E.g. think non-32bit integers or
integer vectors, a type-converting move is what you want below in such
cases).  With that change this patch is:

Reviewed-by: Francisco Jerez <currojerez at riseup.net>

> +      bld.MOV(tmp, inst->src[1]);
> +      inst->src[1] = tmp;
> +
>        inst->opcode = FS_OPCODE_VARYING_PULL_CONSTANT_LOAD_GEN7;
>  
>     } else {
> -- 
> 2.5.0.400.gff86faf
>
> _______________________________________________
> mesa-stable mailing list
> mesa-stable at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-stable
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 212 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/mesa-stable/attachments/20160601/fa0fcd0a/attachment.sig>


More information about the mesa-stable mailing list