diff --git a/src/intel/compiler/elk/elk_eu_opcodes.h b/src/intel/compiler/elk/elk_eu_opcodes.h index 3f6c2e71ed8..0b097d8175a 100644 --- a/src/intel/compiler/elk/elk_eu_opcodes.h +++ b/src/intel/compiler/elk/elk_eu_opcodes.h @@ -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, diff --git a/src/intel/compiler/elk/elk_fs.cpp b/src/intel/compiler/elk/elk_fs.cpp index ac0f4af4de1..581eb3689f9 100644 --- a/src/intel/compiler/elk/elk_fs.cpp +++ b/src/intel/compiler/elk/elk_fs.cpp @@ -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: diff --git a/src/intel/compiler/elk/elk_fs_cse.cpp b/src/intel/compiler/elk/elk_fs_cse.cpp index a1abe7af07a..a305343bacb 100644 --- a/src/intel/compiler/elk/elk_fs_cse.cpp +++ b/src/intel/compiler/elk/elk_fs_cse.cpp @@ -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: diff --git a/src/intel/compiler/elk/elk_fs_nir.cpp b/src/intel/compiler/elk/elk_fs_nir.cpp index 2bd627d98c5..ededb01c036 100644 --- a/src/intel/compiler/elk/elk_fs_nir.cpp +++ b/src/intel/compiler/elk/elk_fs_nir.cpp @@ -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(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(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), diff --git a/src/intel/compiler/elk/elk_ir_performance.cpp b/src/intel/compiler/elk/elk_ir_performance.cpp index 256f3d9cd92..dcef5697c75 100644 --- a/src/intel/compiler/elk/elk_ir_performance.cpp +++ b/src/intel/compiler/elk/elk_ir_performance.cpp @@ -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); diff --git a/src/intel/compiler/elk/elk_lower_logical_sends.cpp b/src/intel/compiler/elk/elk_lower_logical_sends.cpp index a9e5bd8a24c..f0913d24681 100644 --- a/src/intel/compiler/elk/elk_lower_logical_sends.cpp +++ b/src/intel/compiler/elk/elk_lower_logical_sends.cpp @@ -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; diff --git a/src/intel/compiler/elk/elk_shader.cpp b/src/intel/compiler/elk/elk_shader.cpp index f2c597b3a4c..276b7c0284f 100644 --- a/src/intel/compiler/elk/elk_shader.cpp +++ b/src/intel/compiler/elk/elk_shader.cpp @@ -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";