diff options
author | Jason Ekstrand <[email protected]> | 2016-06-01 15:01:04 -0700 |
---|---|---|
committer | Jason Ekstrand <[email protected]> | 2016-06-01 16:00:44 -0700 |
commit | 1205999c229b8e67af39fb9875bd87bc0a1404eb (patch) | |
tree | 9c2728008b24316624b6730daa50ea5a936a79e6 | |
parent | 8d4f4adfbd5b2f23cb2a6a1f77f79a23d3f2b035 (diff) |
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 <[email protected]>
Cc: "12.0" <[email protected]>
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_fs.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp index 00d937e30a7..bd026de0c57 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 { |