summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrancisco Jerez <currojerez@riseup.net>2017-01-09 16:43:24 -0800
committerFrancisco Jerez <currojerez@riseup.net>2017-02-06 13:00:30 -0800
commit001f42c64712b0d0b16467f89280da8d693bc756 (patch)
tree5c83d17a8068ed31d7f3a911ab9404b8a9e5fe83
parent22d5e783082a0511a7a95e54fff6b6d8d8b126a9 (diff)
i965/fs: Fix FB read header setup for SIMD32.
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs.cpp16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp
index 539b7cca5b6..8b09c4ba779 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
@@ -3824,12 +3824,20 @@ lower_fb_write_logical_send(const fs_builder &bld, fs_inst *inst,
static void
lower_fb_read_logical_send(const fs_builder &bld, fs_inst *inst)
{
- const fs_builder &ubld = bld.exec_all();
+ const fs_builder &ubld = bld.exec_all().group(8, 0);
const unsigned length = 2;
- const fs_reg header = ubld.group(8, 0).vgrf(BRW_REGISTER_TYPE_UD, length);
+ const fs_reg header = ubld.vgrf(BRW_REGISTER_TYPE_UD, length);
- ubld.group(16, 0)
- .MOV(header, retype(brw_vec8_grf(0, 0), BRW_REGISTER_TYPE_UD));
+ if (bld.group() / 16 == 1) {
+ const fs_reg header_sources[] = {
+ retype(brw_vec8_grf(0, 0), BRW_REGISTER_TYPE_UD),
+ retype(brw_vec8_grf(2, 0), BRW_REGISTER_TYPE_UD)
+ };
+ ubld.LOAD_PAYLOAD(header, header_sources, ARRAY_SIZE(header_sources), 0);
+ } else {
+ ubld.group(16, 0).MOV(header, retype(brw_vec8_grf(0, 0),
+ BRW_REGISTER_TYPE_UD));
+ }
inst->resize_sources(1);
inst->src[0] = header;