[Mesa-dev] [PATCH 17/23] intel/fs: Initialize mlen for gen7 varying pull constant load messages.

Francisco Jerez currojerez at riseup.net
Tue Jun 12 02:26:09 UTC 2018


This makes the message length available at the IR level, which should
save some guesswork in a future commit.
---
 src/intel/compiler/brw_fs.cpp           |  2 +-
 src/intel/compiler/brw_fs_generator.cpp | 10 ++++------
 2 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/src/intel/compiler/brw_fs.cpp b/src/intel/compiler/brw_fs.cpp
index d67c0a41922..314d580cc1f 100644
--- a/src/intel/compiler/brw_fs.cpp
+++ b/src/intel/compiler/brw_fs.cpp
@@ -4715,7 +4715,7 @@ lower_varying_pull_constant_logical_send(const fs_builder &bld, fs_inst *inst)
       inst->src[1] = tmp;
 
       inst->opcode = FS_OPCODE_VARYING_PULL_CONSTANT_LOAD_GEN7;
-
+      inst->mlen = inst->exec_size / 8;
    } else {
       const fs_reg payload(MRF, FIRST_PULL_LOAD_MRF(devinfo->gen),
                            BRW_REGISTER_TYPE_UD);
diff --git a/src/intel/compiler/brw_fs_generator.cpp b/src/intel/compiler/brw_fs_generator.cpp
index fc7545c6242..71a1e09a786 100644
--- a/src/intel/compiler/brw_fs_generator.cpp
+++ b/src/intel/compiler/brw_fs_generator.cpp
@@ -1534,17 +1534,15 @@ fs_generator::generate_varying_pull_constant_load_gen7(fs_inst *inst,
     * gen7, so the fact that it's a send message is hidden at the IR level.
     */
    assert(inst->header_size == 0);
-   assert(!inst->mlen);
+   assert(inst->mlen);
    assert(index.type == BRW_REGISTER_TYPE_UD);
 
-   uint32_t simd_mode, rlen, mlen;
+   uint32_t simd_mode, rlen;
    if (inst->exec_size == 16) {
-      mlen = 2;
       rlen = 8;
       simd_mode = BRW_SAMPLER_SIMD_MODE_SIMD16;
    } else {
       assert(inst->exec_size == 8);
-      mlen = 1;
       rlen = 4;
       simd_mode = BRW_SAMPLER_SIMD_MODE_SIMD8;
    }
@@ -1558,7 +1556,7 @@ fs_generator::generate_varying_pull_constant_load_gen7(fs_inst *inst,
       brw_set_dest(p, send, retype(dst, BRW_REGISTER_TYPE_UW));
       brw_set_src0(p, send, offset);
       brw_set_desc(p, send,
-                   brw_message_desc(devinfo, mlen, rlen, false) |
+                   brw_message_desc(devinfo, inst->mlen, rlen, false) |
                    brw_sampler_desc(devinfo, surf_index,
                                     0, /* LD message ignores sampler unit */
                                     GEN5_SAMPLER_MESSAGE_SAMPLE_LD,
@@ -1584,7 +1582,7 @@ fs_generator::generate_varying_pull_constant_load_gen7(fs_inst *inst,
       brw_send_indirect_message(
          p, BRW_SFID_SAMPLER, retype(dst, BRW_REGISTER_TYPE_UW),
          offset, addr,
-         brw_message_desc(devinfo, mlen, rlen, false) |
+         brw_message_desc(devinfo, inst->mlen, rlen, false) |
          brw_sampler_desc(devinfo,
                           0 /* surface */,
                           0 /* sampler */,
-- 
2.16.1



More information about the mesa-dev mailing list