From 1c90ae5accc284cf6b27bcc25e5e3fc3cfb80407 Mon Sep 17 00:00:00 2001 From: Francisco Jerez Date: Sat, 2 Jun 2018 15:07:31 -0700 Subject: [PATCH] intel/eu: Provide desc immediate argument up front to brw_send_indirect_message(). The current approach of returning a setup instruction where additional descriptor fields can be specified is still supported in order to keep things working, but it will be removed later in this series. Reviewed-by: Kenneth Graunke --- src/intel/compiler/brw_eu.h | 3 ++- src/intel/compiler/brw_eu_emit.c | 11 ++++++----- src/intel/compiler/brw_fs_generator.cpp | 6 +++--- src/intel/compiler/brw_vec4_generator.cpp | 4 ++-- 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/intel/compiler/brw_eu.h b/src/intel/compiler/brw_eu.h index d69bc5526cd..d128108ff7e 100644 --- a/src/intel/compiler/brw_eu.h +++ b/src/intel/compiler/brw_eu.h @@ -324,7 +324,8 @@ brw_send_indirect_message(struct brw_codegen *p, unsigned sfid, struct brw_reg dst, struct brw_reg payload, - struct brw_reg desc); + struct brw_reg desc, + unsigned desc_imm); void brw_ff_sync(struct brw_codegen *p, struct brw_reg dest, diff --git a/src/intel/compiler/brw_eu_emit.c b/src/intel/compiler/brw_eu_emit.c index d580eddb957..18378b847a9 100644 --- a/src/intel/compiler/brw_eu_emit.c +++ b/src/intel/compiler/brw_eu_emit.c @@ -2527,7 +2527,8 @@ brw_send_indirect_message(struct brw_codegen *p, unsigned sfid, struct brw_reg dst, struct brw_reg payload, - struct brw_reg desc) + struct brw_reg desc, + unsigned desc_imm) { const struct gen_device_info *devinfo = p->devinfo; struct brw_inst *send; @@ -2546,7 +2547,7 @@ brw_send_indirect_message(struct brw_codegen *p, if (desc.file == BRW_IMMEDIATE_VALUE) { setup = p->nr_insn; send = next_insn(p, BRW_OPCODE_SEND); - brw_set_src1(p, send, desc); + brw_set_desc(p, send, desc.ud | desc_imm); } else { struct brw_reg addr = retype(brw_address_reg(0), BRW_REGISTER_TYPE_UD); @@ -2562,7 +2563,7 @@ brw_send_indirect_message(struct brw_codegen *p, * brw_set_*_message() helper functions. */ setup = p->nr_insn; - brw_OR(p, addr, desc, brw_imm_ud(0)); + brw_OR(p, addr, desc, brw_imm_ud(desc_imm)); brw_pop_insn_state(p); @@ -2615,7 +2616,7 @@ brw_send_indirect_surface_message(struct brw_codegen *p, surface = addr; } - insn = brw_send_indirect_message(p, sfid, dst, payload, surface); + insn = brw_send_indirect_message(p, sfid, dst, payload, surface, 0); brw_inst_set_mlen(devinfo, insn, message_len); brw_inst_set_rlen(devinfo, insn, response_len); brw_inst_set_header_present(devinfo, insn, header_present); @@ -3373,7 +3374,7 @@ brw_pixel_interpolator_query(struct brw_codegen *p, GEN7_SFID_PIXEL_INTERPOLATOR, dest, mrf, - vec1(data)); + vec1(data), 0); brw_inst_set_mlen(devinfo, insn, msg_length); brw_inst_set_rlen(devinfo, insn, response_length); diff --git a/src/intel/compiler/brw_fs_generator.cpp b/src/intel/compiler/brw_fs_generator.cpp index bc670603e5e..c685537fa5e 100644 --- a/src/intel/compiler/brw_fs_generator.cpp +++ b/src/intel/compiler/brw_fs_generator.cpp @@ -1180,7 +1180,7 @@ fs_generator::generate_tex(fs_inst *inst, struct brw_reg dst, struct brw_reg src /* dst = send(offset, a0.0 | ) */ brw_inst *insn = brw_send_indirect_message( - p, BRW_SFID_SAMPLER, dst, src, addr); + p, BRW_SFID_SAMPLER, dst, src, addr, 0); brw_set_sampler_message(p, insn, 0 /* surface */, 0 /* sampler */, @@ -1449,7 +1449,7 @@ fs_generator::generate_uniform_pull_constant_load_gen7(fs_inst *inst, brw_inst *insn = brw_send_indirect_message( p, GEN6_SFID_DATAPORT_CONSTANT_CACHE, retype(dst, BRW_REGISTER_TYPE_UD), - retype(payload, BRW_REGISTER_TYPE_UD), addr); + retype(payload, BRW_REGISTER_TYPE_UD), addr, 0); brw_set_dp_read_message(p, insn, 0 /* surface */, BRW_DATAPORT_OWORD_BLOCK_DWORDS(inst->exec_size), GEN7_DATAPORT_DC_OWORD_BLOCK_READ, @@ -1585,7 +1585,7 @@ fs_generator::generate_varying_pull_constant_load_gen7(fs_inst *inst, /* dst = send(offset, a0.0 | ) */ brw_inst *insn = brw_send_indirect_message( p, BRW_SFID_SAMPLER, retype(dst, BRW_REGISTER_TYPE_UW), - offset, addr); + offset, addr, 0); brw_set_sampler_message(p, insn, 0 /* surface */, 0 /* sampler */, diff --git a/src/intel/compiler/brw_vec4_generator.cpp b/src/intel/compiler/brw_vec4_generator.cpp index 386b071cfda..7605ccdc6c5 100644 --- a/src/intel/compiler/brw_vec4_generator.cpp +++ b/src/intel/compiler/brw_vec4_generator.cpp @@ -325,7 +325,7 @@ generate_tex(struct brw_codegen *p, /* dst = send(offset, a0.0 | ) */ brw_inst *insn = brw_send_indirect_message( - p, BRW_SFID_SAMPLER, dst, src, addr); + p, BRW_SFID_SAMPLER, dst, src, addr, 0); brw_set_sampler_message(p, insn, 0 /* surface */, 0 /* sampler */, @@ -1393,7 +1393,7 @@ generate_pull_constant_load_gen7(struct brw_codegen *p, /* dst = send(offset, a0.0 | ) */ brw_inst *insn = brw_send_indirect_message( - p, BRW_SFID_SAMPLER, dst, offset, addr); + p, BRW_SFID_SAMPLER, dst, offset, addr, 0); brw_set_sampler_message(p, insn, 0 /* surface */, 0 /* sampler */, -- 2.30.2