intel/elk: Remove FB_READ opcodes

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27629>
This commit is contained in:
Caio Oliveira 2024-02-10 09:11:28 -08:00 committed by Marge Bot
parent 77ba6f5dcd
commit a3f67c2d3a
7 changed files with 2 additions and 92 deletions

View file

@ -107,9 +107,6 @@ enum elk_opcode {
ELK_FS_OPCODE_REP_FB_WRITE,
ELK_FS_OPCODE_FB_READ,
ELK_FS_OPCODE_FB_READ_LOGICAL,
ELK_SHADER_OPCODE_RCP,
ELK_SHADER_OPCODE_RSQ,
ELK_SHADER_OPCODE_SQRT,

View file

@ -237,7 +237,6 @@ elk_fs_inst::is_send_from_grf() const
case ELK_FS_OPCODE_UNIFORM_PULL_CONSTANT_LOAD:
return src[1].file == VGRF;
case ELK_FS_OPCODE_FB_WRITE:
case ELK_FS_OPCODE_FB_READ:
return src[0].file == VGRF;
default:
return false;
@ -293,7 +292,6 @@ elk_fs_inst::is_payload(unsigned arg) const
{
switch (opcode) {
case ELK_FS_OPCODE_FB_WRITE:
case ELK_FS_OPCODE_FB_READ:
case ELK_VEC4_OPCODE_UNTYPED_ATOMIC:
case ELK_VEC4_OPCODE_UNTYPED_SURFACE_READ:
case ELK_VEC4_OPCODE_UNTYPED_SURFACE_WRITE:
@ -867,7 +865,6 @@ elk_fs_inst::size_read(int arg) const
}
break;
case ELK_FS_OPCODE_FB_READ:
case ELK_FS_OPCODE_INTERPOLATE_AT_SAMPLE:
case ELK_FS_OPCODE_INTERPOLATE_AT_SHARED_OFFSET:
if (arg == 0)
@ -4806,9 +4803,6 @@ get_lowered_simd_width(const elk_fs_visitor *shader, const elk_fs_inst *inst)
return (inst->src[FB_WRITE_LOGICAL_SRC_COLOR1].file != BAD_FILE ?
8 : MIN2(16, inst->exec_size));
case ELK_FS_OPCODE_FB_READ_LOGICAL:
return MIN2(16, inst->exec_size);
case ELK_SHADER_OPCODE_TEX_LOGICAL:
case ELK_SHADER_OPCODE_TXF_CMS_LOGICAL:
case ELK_SHADER_OPCODE_TXF_UMS_LOGICAL:

View file

@ -72,7 +72,6 @@ is_expression(const elk_fs_visitor *v, const elk_fs_inst *const inst)
case ELK_OPCODE_PLN:
case ELK_OPCODE_MAD:
case ELK_OPCODE_LRP:
case ELK_FS_OPCODE_FB_READ_LOGICAL:
case ELK_FS_OPCODE_UNIFORM_PULL_CONSTANT_LOAD:
case ELK_FS_OPCODE_VARYING_PULL_CONSTANT_LOAD_LOGICAL:
case ELK_FS_OPCODE_LINTERP:

View file

@ -3454,21 +3454,6 @@ emit_non_coherent_fb_read(nir_to_elk_state &ntb, const fs_builder &bld, const el
return inst;
}
/**
* Actual coherent framebuffer read implemented using the native render target
* read message. Requires SKL+.
*/
static elk_fs_inst *
emit_coherent_fb_read(const fs_builder &bld, const elk_fs_reg &dst, unsigned target)
{
assert(bld.shader->devinfo->ver >= 9);
elk_fs_inst *inst = bld.emit(ELK_FS_OPCODE_FB_READ_LOGICAL, dst);
inst->target = target;
inst->size_written = 4 * inst->dst.component_size(inst->exec_size);
return inst;
}
static elk_fs_reg
alloc_temporary(const fs_builder &bld, unsigned size, elk_fs_reg *regs, unsigned n)
{
@ -4026,10 +4011,8 @@ fs_nir_emit_fs_intrinsic(nir_to_elk_state &ntb,
const unsigned target = l - FRAG_RESULT_DATA0 + load_offset;
const elk_fs_reg tmp = bld.vgrf(dest.type, 4);
if (reinterpret_cast<const elk_wm_prog_key *>(s.key)->coherent_fb_fetch)
emit_coherent_fb_read(bld, tmp, target);
else
emit_non_coherent_fb_read(ntb, bld, tmp, target);
assert(!reinterpret_cast<const elk_wm_prog_key *>(s.key)->coherent_fb_fetch);
emit_non_coherent_fb_read(ntb, bld, tmp, target);
for (unsigned j = 0; j < instr->num_components; j++) {
bld.MOV(offset(dest, bld, j),

View file

@ -972,7 +972,6 @@ namespace {
abort();
case ELK_FS_OPCODE_FB_WRITE:
case ELK_FS_OPCODE_FB_READ:
case ELK_FS_OPCODE_REP_FB_WRITE:
return calculate_desc(info, EU_UNIT_DP_RC, 2, 0, 0, 0, 450 /* XXX */,
10 /* XXX */, 300 /* XXX */, 0, 0, 0, 0);

View file

@ -568,60 +568,6 @@ lower_fb_write_logical_send(const fs_builder &bld, elk_fs_inst *inst,
}
}
static void
lower_fb_read_logical_send(const fs_builder &bld, elk_fs_inst *inst)
{
const intel_device_info *devinfo = bld.shader->devinfo;
const fs_builder &ubld = bld.exec_all().group(8, 0);
const unsigned length = 2;
const elk_fs_reg header = ubld.vgrf(ELK_REGISTER_TYPE_UD, length);
if (bld.group() < 16) {
ubld.group(16, 0).MOV(header, retype(elk_vec8_grf(0, 0),
ELK_REGISTER_TYPE_UD));
} else {
assert(bld.group() < 32);
const elk_fs_reg header_sources[] = {
retype(elk_vec8_grf(0, 0), ELK_REGISTER_TYPE_UD),
retype(elk_vec8_grf(2, 0), ELK_REGISTER_TYPE_UD)
};
ubld.LOAD_PAYLOAD(header, header_sources, ARRAY_SIZE(header_sources), 0);
if (devinfo->ver >= 12) {
/* On Gfx12 the Viewport and Render Target Array Index fields (AKA
* Poly 0 Info) are provided in r1.1 instead of r0.0, and the render
* target message header format was updated accordingly -- However
* the updated format only works for the lower 16 channels in a
* SIMD32 thread, since the higher 16 channels want the subspan data
* from r2 instead of r1, so we need to copy over the contents of
* r1.1 in order to fix things up.
*/
ubld.group(1, 0).MOV(component(header, 9),
retype(elk_vec1_grf(1, 1), ELK_REGISTER_TYPE_UD));
}
}
/* BSpec 12470 (Gfx8-11), BSpec 47842 (Gfx12+) :
*
* "Must be zero for Render Target Read message."
*
* For bits :
* - 14 : Stencil Present to Render Target
* - 13 : Source Depth Present to Render Target
* - 12 : oMask to Render Target
* - 11 : Source0 Alpha Present to Render Target
*/
ubld.group(1, 0).AND(component(header, 0),
component(header, 0),
elk_imm_ud(~INTEL_MASK(14, 11)));
inst->resize_sources(1);
inst->src[0] = header;
inst->opcode = ELK_FS_OPCODE_FB_READ;
inst->mlen = length;
inst->header_size = length;
}
static void
lower_sampler_logical_send_gfx4(const fs_builder &bld, elk_fs_inst *inst, elk_opcode op,
const elk_fs_reg &coordinate,
@ -2331,10 +2277,6 @@ elk_fs_visitor::lower_logical_sends()
fs_payload());
break;
case ELK_FS_OPCODE_FB_READ_LOGICAL:
lower_fb_read_logical_send(ibld, inst);
break;
case ELK_SHADER_OPCODE_TEX_LOGICAL:
lower_sampler_logical_send(ibld, inst, ELK_SHADER_OPCODE_TEX);
break;

View file

@ -173,10 +173,6 @@ elk_instruction_name(const struct elk_isa_info *isa, enum elk_opcode op)
return "fb_write_logical";
case ELK_FS_OPCODE_REP_FB_WRITE:
return "rep_fb_write";
case ELK_FS_OPCODE_FB_READ:
return "fb_read";
case ELK_FS_OPCODE_FB_READ_LOGICAL:
return "fb_read_logical";
case ELK_SHADER_OPCODE_RCP:
return "rcp";