summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrancisco Jerez <[email protected]>2017-12-26 19:08:10 -0800
committerFrancisco Jerez <[email protected]>2018-07-09 23:46:58 -0700
commit48d6fc5eb62ee996c67b612caa33f9cdb2978330 (patch)
tree3b002df3a3f2695235c866d984bad546eb8d8825
parent6643143f6e763b2915e793d6b8b7750849cc5ed7 (diff)
intel/fs: Initialize mlen for gen7 varying pull constant load messages.
This makes the message length available at the IR level, which should save some guesswork in a future commit. Reviewed-by: Kenneth Graunke <[email protected]>
-rw-r--r--src/intel/compiler/brw_fs.cpp2
-rw-r--r--src/intel/compiler/brw_fs_generator.cpp10
2 files changed, 5 insertions, 7 deletions
diff --git a/src/intel/compiler/brw_fs.cpp b/src/intel/compiler/brw_fs.cpp
index 60c2ae8febe..2b8363ca362 100644
--- a/src/intel/compiler/brw_fs.cpp
+++ b/src/intel/compiler/brw_fs.cpp
@@ -4824,7 +4824,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 d09d7bf79f7..e265d59ccbe 100644
--- a/src/intel/compiler/brw_fs_generator.cpp
+++ b/src/intel/compiler/brw_fs_generator.cpp
@@ -1530,17 +1530,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;
}
@@ -1554,7 +1552,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,
@@ -1580,7 +1578,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 */,