mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 17:30:12 +01:00
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:
parent
77ba6f5dcd
commit
a3f67c2d3a
7 changed files with 2 additions and 92 deletions
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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),
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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";
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue