intel/eu: Use descriptor constructors for sampler messages.
v2: Use SET_BITS macro instead of left shift (Ken). Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
@@ -1179,17 +1179,16 @@ fs_generator::generate_tex(fs_inst *inst, struct brw_reg dst, struct brw_reg src
|
||||
brw_pop_insn_state(p);
|
||||
|
||||
/* dst = send(offset, a0.0 | <descriptor>) */
|
||||
brw_inst *insn = brw_send_indirect_message(
|
||||
p, BRW_SFID_SAMPLER, dst, src, addr, 0);
|
||||
brw_set_sampler_message(p, insn,
|
||||
0 /* surface */,
|
||||
0 /* sampler */,
|
||||
msg_type,
|
||||
inst->size_written / REG_SIZE,
|
||||
inst->mlen /* mlen */,
|
||||
inst->header_size != 0 /* header */,
|
||||
simd_mode,
|
||||
return_format);
|
||||
brw_send_indirect_message(
|
||||
p, BRW_SFID_SAMPLER, dst, src, addr,
|
||||
brw_message_desc(devinfo, inst->mlen, inst->size_written / REG_SIZE,
|
||||
inst->header_size) |
|
||||
brw_sampler_desc(devinfo,
|
||||
0 /* surface */,
|
||||
0 /* sampler */,
|
||||
msg_type,
|
||||
simd_mode,
|
||||
return_format));
|
||||
|
||||
/* visitor knows more than we do about the surface limit required,
|
||||
* so has already done marking.
|
||||
@@ -1503,6 +1502,7 @@ fs_generator::generate_varying_pull_constant_load_gen4(fs_inst *inst,
|
||||
|
||||
brw_inst *send = brw_next_insn(p, BRW_OPCODE_SEND);
|
||||
brw_inst_set_compression(devinfo, send, false);
|
||||
brw_inst_set_sfid(devinfo, send, BRW_SFID_SAMPLER);
|
||||
brw_set_dest(p, send, retype(dst, BRW_REGISTER_TYPE_UW));
|
||||
brw_set_src0(p, send, header);
|
||||
if (devinfo->gen < 6)
|
||||
@@ -1512,15 +1512,11 @@ fs_generator::generate_varying_pull_constant_load_gen4(fs_inst *inst,
|
||||
* stored in it.
|
||||
*/
|
||||
uint32_t return_format = BRW_SAMPLER_RETURN_FORMAT_FLOAT32;
|
||||
brw_set_sampler_message(p, send,
|
||||
surf_index,
|
||||
0, /* sampler (unused) */
|
||||
msg_type,
|
||||
rlen,
|
||||
inst->mlen,
|
||||
inst->header_size != 0,
|
||||
simd_mode,
|
||||
return_format);
|
||||
brw_set_desc(p, send,
|
||||
brw_message_desc(devinfo, inst->mlen, rlen, inst->header_size) |
|
||||
brw_sampler_desc(devinfo, surf_index,
|
||||
0, /* sampler (unused) */
|
||||
msg_type, simd_mode, return_format));
|
||||
}
|
||||
|
||||
void
|
||||
@@ -1554,17 +1550,15 @@ fs_generator::generate_varying_pull_constant_load_gen7(fs_inst *inst,
|
||||
uint32_t surf_index = index.ud;
|
||||
|
||||
brw_inst *send = brw_next_insn(p, BRW_OPCODE_SEND);
|
||||
brw_inst_set_sfid(devinfo, send, BRW_SFID_SAMPLER);
|
||||
brw_set_dest(p, send, retype(dst, BRW_REGISTER_TYPE_UW));
|
||||
brw_set_src0(p, send, offset);
|
||||
brw_set_sampler_message(p, send,
|
||||
surf_index,
|
||||
0, /* LD message ignores sampler unit */
|
||||
GEN5_SAMPLER_MESSAGE_SAMPLE_LD,
|
||||
rlen,
|
||||
mlen,
|
||||
false, /* no header */
|
||||
simd_mode,
|
||||
0);
|
||||
brw_set_desc(p, send,
|
||||
brw_message_desc(devinfo, mlen, rlen, false) |
|
||||
brw_sampler_desc(devinfo, surf_index,
|
||||
0, /* LD message ignores sampler unit */
|
||||
GEN5_SAMPLER_MESSAGE_SAMPLE_LD,
|
||||
simd_mode, 0));
|
||||
|
||||
} else {
|
||||
|
||||
@@ -1583,18 +1577,16 @@ fs_generator::generate_varying_pull_constant_load_gen7(fs_inst *inst,
|
||||
brw_pop_insn_state(p);
|
||||
|
||||
/* dst = send(offset, a0.0 | <descriptor>) */
|
||||
brw_inst *insn = brw_send_indirect_message(
|
||||
brw_send_indirect_message(
|
||||
p, BRW_SFID_SAMPLER, retype(dst, BRW_REGISTER_TYPE_UW),
|
||||
offset, addr, 0);
|
||||
brw_set_sampler_message(p, insn,
|
||||
0 /* surface */,
|
||||
0 /* sampler */,
|
||||
GEN5_SAMPLER_MESSAGE_SAMPLE_LD,
|
||||
rlen /* rlen */,
|
||||
mlen /* mlen */,
|
||||
false /* header */,
|
||||
simd_mode,
|
||||
0);
|
||||
offset, addr,
|
||||
brw_message_desc(devinfo, mlen, rlen, false) |
|
||||
brw_sampler_desc(devinfo,
|
||||
0 /* surface */,
|
||||
0 /* sampler */,
|
||||
GEN5_SAMPLER_MESSAGE_SAMPLE_LD,
|
||||
simd_mode,
|
||||
0));
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user