Mesa (master): i965/fs: Copy the offset when lowering logical pull constant sends

Jason Ekstrand jekstrand at kemper.freedesktop.org
Wed Jun 1 23:06:08 UTC 2016


Module: Mesa
Branch: master
Commit: 1205999c229b8e67af39fb9875bd87bc0a1404eb
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=1205999c229b8e67af39fb9875bd87bc0a1404eb

Author: Jason Ekstrand <jason.ekstrand at intel.com>
Date:   Wed Jun  1 15:01:04 2016 -0700

i965/fs: Copy the offset when lowering logical pull constant sends

This fixes 64 Vulkan CTS tests per gen

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=96299
Reviewed-by: Francisco Jerez <currojerez at riseup.net>
Cc: "12.0" <mesa-stable at lists.freedesktop.org>

---

 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..bd026de 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(BRW_REGISTER_TYPE_UD);
+      bld.MOV(tmp, inst->src[1]);
+      inst->src[1] = tmp;
+
       inst->opcode = FS_OPCODE_VARYING_PULL_CONSTANT_LOAD_GEN7;
 
    } else {




More information about the mesa-commit mailing list