From 05d78994a763d220f69cb9770fcc6c4e9cb40275 Mon Sep 17 00:00:00 2001 From: Caio Oliveira Date: Sat, 10 Feb 2024 08:43:55 -0800 Subject: [PATCH] intel/elk: Remove Gfx9+ sampler messages and modes Reviewed-by: Lionel Landwerlin Part-of: --- src/intel/compiler/elk/elk_disasm.c | 55 +------------------ src/intel/compiler/elk/elk_eu_defines.h | 19 ------- .../compiler/elk/elk_lower_logical_sends.cpp | 54 ++---------------- 3 files changed, 7 insertions(+), 121 deletions(-) diff --git a/src/intel/compiler/elk/elk_disasm.c b/src/intel/compiler/elk/elk_disasm.c index 392bb998913..628cca0f469 100644 --- a/src/intel/compiler/elk/elk_disasm.c +++ b/src/intel/compiler/elk/elk_disasm.c @@ -590,37 +590,6 @@ static const char *const gfx5_sampler_msg_type[] = { [GFX7_SAMPLER_MESSAGE_SAMPLE_GATHER4_PO] = "gather4_po", [GFX7_SAMPLER_MESSAGE_SAMPLE_GATHER4_PO_C] = "gather4_po_c", [HSW_SAMPLER_MESSAGE_SAMPLE_DERIV_COMPARE] = "sample_d_c", - [GFX9_SAMPLER_MESSAGE_SAMPLE_LZ] = "sample_lz", - [GFX9_SAMPLER_MESSAGE_SAMPLE_C_LZ] = "sample_c_lz", - [GFX9_SAMPLER_MESSAGE_SAMPLE_LD_LZ] = "ld_lz", - [GFX9_SAMPLER_MESSAGE_SAMPLE_LD2DMS_W] = "ld2dms_w", - [GFX7_SAMPLER_MESSAGE_SAMPLE_LD_MCS] = "ld_mcs", - [GFX7_SAMPLER_MESSAGE_SAMPLE_LD2DMS] = "ld2dms", - [GFX7_SAMPLER_MESSAGE_SAMPLE_LD2DSS] = "ld2dss", -}; - -static const char *const xe2_sampler_msg_type[] = { - [GFX5_SAMPLER_MESSAGE_SAMPLE] = "sample", - [GFX5_SAMPLER_MESSAGE_SAMPLE_BIAS] = "sample_b", - [GFX5_SAMPLER_MESSAGE_SAMPLE_LOD] = "sample_l", - [GFX5_SAMPLER_MESSAGE_SAMPLE_COMPARE] = "sample_c", - [GFX5_SAMPLER_MESSAGE_SAMPLE_DERIVS] = "sample_d", - [GFX5_SAMPLER_MESSAGE_SAMPLE_BIAS_COMPARE] = "sample_b_c", - [GFX5_SAMPLER_MESSAGE_SAMPLE_LOD_COMPARE] = "sample_l_c", - [GFX5_SAMPLER_MESSAGE_SAMPLE_LD] = "ld", - [GFX7_SAMPLER_MESSAGE_SAMPLE_GATHER4] = "gather4", - [GFX5_SAMPLER_MESSAGE_LOD] = "lod", - [GFX5_SAMPLER_MESSAGE_SAMPLE_RESINFO] = "resinfo", - [GFX6_SAMPLER_MESSAGE_SAMPLE_SAMPLEINFO] = "sampleinfo", - [GFX7_SAMPLER_MESSAGE_SAMPLE_GATHER4_C] = "gather4_c", - [GFX7_SAMPLER_MESSAGE_SAMPLE_GATHER4_PO] = "gather4_po", - [XE2_SAMPLER_MESSAGE_SAMPLE_MLOD] = "sample_mlod", - [XE2_SAMPLER_MESSAGE_SAMPLE_COMPARE_MLOD] = "sample_c_mlod", - [HSW_SAMPLER_MESSAGE_SAMPLE_DERIV_COMPARE] = "sample_d_c", - [GFX9_SAMPLER_MESSAGE_SAMPLE_LZ] = "sample_lz", - [GFX9_SAMPLER_MESSAGE_SAMPLE_C_LZ] = "sample_c_lz", - [GFX9_SAMPLER_MESSAGE_SAMPLE_LD_LZ] = "ld_lz", - [GFX9_SAMPLER_MESSAGE_SAMPLE_LD2DMS_W] = "ld2dms_w", [GFX7_SAMPLER_MESSAGE_SAMPLE_LD_MCS] = "ld_mcs", [GFX7_SAMPLER_MESSAGE_SAMPLE_LD2DMS] = "ld2dms", [GFX7_SAMPLER_MESSAGE_SAMPLE_LD2DSS] = "ld2dss", @@ -631,15 +600,6 @@ static const char *const gfx5_sampler_simd_mode[7] = { [ELK_SAMPLER_SIMD_MODE_SIMD8] = "SIMD8", [ELK_SAMPLER_SIMD_MODE_SIMD16] = "SIMD16", [ELK_SAMPLER_SIMD_MODE_SIMD32_64] = "SIMD32/64", - [GFX10_SAMPLER_SIMD_MODE_SIMD8H] = "SIMD8H", - [GFX10_SAMPLER_SIMD_MODE_SIMD16H] = "SIMD16H", -}; - -static const char *const xe2_sampler_simd_mode[7] = { - [XE2_SAMPLER_SIMD_MODE_SIMD16] = "SIMD16", - [XE2_SAMPLER_SIMD_MODE_SIMD32] = "SIMD32", - [XE2_SAMPLER_SIMD_MODE_SIMD16H] = "SIMD16H", - [XE2_SAMPLER_SIMD_MODE_SIMD32H] = "SIMD32H", }; static const char *const sampler_target_format[4] = { @@ -1875,20 +1835,7 @@ elk_disassemble_inst(FILE *file, const struct elk_isa_info *isa, elk_inst_math_msg_precision(devinfo, inst), &space); break; case ELK_SFID_SAMPLER: - if (devinfo->ver >= 20) { - err |= control(file, "sampler message", xe2_sampler_msg_type, - elk_sampler_desc_msg_type(devinfo, imm_desc), - &space); - err |= control(file, "sampler simd mode", xe2_sampler_simd_mode, - elk_sampler_desc_simd_mode(devinfo, imm_desc), - &space); - if (elk_sampler_desc_return_format(devinfo, imm_desc)) { - string(file, " HP"); - } - format(file, " Surface = %u Sampler = %u", - elk_sampler_desc_binding_table_index(devinfo, imm_desc), - elk_sampler_desc_sampler(devinfo, imm_desc)); - } else if (devinfo->ver >= 5) { + if (devinfo->ver >= 5) { err |= control(file, "sampler message", gfx5_sampler_msg_type, elk_sampler_desc_msg_type(devinfo, imm_desc), &space); diff --git a/src/intel/compiler/elk/elk_eu_defines.h b/src/intel/compiler/elk/elk_eu_defines.h index 808433c2777..7297a578d83 100644 --- a/src/intel/compiler/elk/elk_eu_defines.h +++ b/src/intel/compiler/elk/elk_eu_defines.h @@ -575,13 +575,7 @@ enum elk_message_target { #define GFX7_SAMPLER_MESSAGE_SAMPLE_GATHER4_C 16 #define GFX7_SAMPLER_MESSAGE_SAMPLE_GATHER4_PO 17 #define GFX7_SAMPLER_MESSAGE_SAMPLE_GATHER4_PO_C 18 -#define XE2_SAMPLER_MESSAGE_SAMPLE_MLOD 18 -#define XE2_SAMPLER_MESSAGE_SAMPLE_COMPARE_MLOD 19 #define HSW_SAMPLER_MESSAGE_SAMPLE_DERIV_COMPARE 20 -#define GFX9_SAMPLER_MESSAGE_SAMPLE_LZ 24 -#define GFX9_SAMPLER_MESSAGE_SAMPLE_C_LZ 25 -#define GFX9_SAMPLER_MESSAGE_SAMPLE_LD_LZ 26 -#define GFX9_SAMPLER_MESSAGE_SAMPLE_LD2DMS_W 28 #define GFX7_SAMPLER_MESSAGE_SAMPLE_LD_MCS 29 #define GFX7_SAMPLER_MESSAGE_SAMPLE_LD2DMS 30 #define GFX7_SAMPLER_MESSAGE_SAMPLE_LD2DSS 31 @@ -592,19 +586,6 @@ enum elk_message_target { #define ELK_SAMPLER_SIMD_MODE_SIMD16 2 #define ELK_SAMPLER_SIMD_MODE_SIMD32_64 3 -#define GFX10_SAMPLER_SIMD_MODE_SIMD8H 5 -#define GFX10_SAMPLER_SIMD_MODE_SIMD16H 6 - -#define XE2_SAMPLER_SIMD_MODE_SIMD16 1 -#define XE2_SAMPLER_SIMD_MODE_SIMD32 2 -#define XE2_SAMPLER_SIMD_MODE_SIMD16H 5 -#define XE2_SAMPLER_SIMD_MODE_SIMD32H 6 - -/* GFX9 changes SIMD mode 0 to mean SIMD8D, but lets us get the SIMD4x2 - * behavior by setting bit 22 of dword 2 in the message header. */ -#define GFX9_SAMPLER_SIMD_MODE_SIMD8D 0 -#define GFX9_SAMPLER_SIMD_MODE_EXTENSION_SIMD4X2 (1 << 22) - #define ELK_DATAPORT_OWORD_BLOCK_1_OWORDLOW 0 #define ELK_DATAPORT_OWORD_BLOCK_1_OWORDHIGH 1 #define ELK_DATAPORT_OWORD_BLOCK_2_OWORDS 2 diff --git a/src/intel/compiler/elk/elk_lower_logical_sends.cpp b/src/intel/compiler/elk/elk_lower_logical_sends.cpp index 461b590efec..4178f232dee 100644 --- a/src/intel/compiler/elk/elk_lower_logical_sends.cpp +++ b/src/intel/compiler/elk/elk_lower_logical_sends.cpp @@ -842,13 +842,8 @@ sampler_msg_type(const intel_device_info *devinfo, assert(devinfo->ver >= 5); switch (opcode) { case ELK_SHADER_OPCODE_TEX: - if (devinfo->ver >= 20 && has_min_lod) { - return shadow_compare ? XE2_SAMPLER_MESSAGE_SAMPLE_COMPARE_MLOD : - XE2_SAMPLER_MESSAGE_SAMPLE_MLOD; - } else { - return shadow_compare ? GFX5_SAMPLER_MESSAGE_SAMPLE_COMPARE : - GFX5_SAMPLER_MESSAGE_SAMPLE; - } + return shadow_compare ? GFX5_SAMPLER_MESSAGE_SAMPLE_COMPARE : + GFX5_SAMPLER_MESSAGE_SAMPLE; case ELK_FS_OPCODE_TXB: return shadow_compare ? GFX5_SAMPLER_MESSAGE_SAMPLE_BIAS_COMPARE : GFX5_SAMPLER_MESSAGE_SAMPLE_BIAS; @@ -856,10 +851,6 @@ sampler_msg_type(const intel_device_info *devinfo, assert(!has_min_lod); return shadow_compare ? GFX5_SAMPLER_MESSAGE_SAMPLE_LOD_COMPARE : GFX5_SAMPLER_MESSAGE_SAMPLE_LOD; - case ELK_SHADER_OPCODE_TXL_LZ: - assert(!has_min_lod); - return shadow_compare ? GFX9_SAMPLER_MESSAGE_SAMPLE_C_LZ : - GFX9_SAMPLER_MESSAGE_SAMPLE_LZ; case ELK_SHADER_OPCODE_TXS: case ELK_SHADER_OPCODE_IMAGE_SIZE_LOGICAL: assert(!has_min_lod); @@ -871,14 +862,6 @@ sampler_msg_type(const intel_device_info *devinfo, case ELK_SHADER_OPCODE_TXF: assert(!has_min_lod); return GFX5_SAMPLER_MESSAGE_SAMPLE_LD; - case ELK_SHADER_OPCODE_TXF_LZ: - assert(!has_min_lod); - assert(devinfo->ver >= 9); - return GFX9_SAMPLER_MESSAGE_SAMPLE_LD_LZ; - case ELK_SHADER_OPCODE_TXF_CMS_W: - assert(!has_min_lod); - assert(devinfo->ver >= 9); - return GFX9_SAMPLER_MESSAGE_SAMPLE_LD2DMS_W; case ELK_SHADER_OPCODE_TXF_CMS: assert(!has_min_lod); return devinfo->ver >= 7 ? GFX7_SAMPLER_MESSAGE_SAMPLE_LD2DMS : @@ -1113,15 +1096,6 @@ lower_sampler_logical_send_gfx7(const fs_builder &bld, elk_fs_inst *inst, elk_op sampler_msg_type(devinfo, op, inst->shadow_compare, min_lod.file != BAD_FILE); - const bool min_lod_is_first = devinfo->ver >= 20 && - (msg_type == XE2_SAMPLER_MESSAGE_SAMPLE_MLOD || - msg_type == XE2_SAMPLER_MESSAGE_SAMPLE_COMPARE_MLOD); - - if (min_lod_is_first) { - assert(min_lod.file != BAD_FILE); - bld.MOV(sources[length++], min_lod); - } - if (shadow_c.file != BAD_FILE) { bld.MOV(sources[length], shadow_c); length++; @@ -1279,7 +1253,7 @@ lower_sampler_logical_send_gfx7(const fs_builder &bld, elk_fs_inst *inst, elk_op offset(coordinate, bld, i)); } - if (min_lod.file != BAD_FILE && !min_lod_is_first) { + if (min_lod.file != BAD_FILE) { /* Account for all of the missing coordinate sources */ if (op == ELK_SHADER_OPCODE_TXD && devinfo->verx10 >= 125) { /* On DG2 and newer platforms, sample_d can only be used with 1D and @@ -1318,25 +1292,9 @@ lower_sampler_logical_send_gfx7(const fs_builder &bld, elk_fs_inst *inst, elk_op emit_load_payload_with_padding(bld, src_payload, sources, length, header_size, REG_SIZE * reg_unit(devinfo)); unsigned mlen = load_payload_inst->size_written / REG_SIZE; - unsigned simd_mode = 0; - if (devinfo->ver < 20) { - if (payload_type_bit_size == 16) { - assert(devinfo->ver >= 11); - simd_mode = inst->exec_size <= 8 ? GFX10_SAMPLER_SIMD_MODE_SIMD8H : - GFX10_SAMPLER_SIMD_MODE_SIMD16H; - } else { - simd_mode = inst->exec_size <= 8 ? ELK_SAMPLER_SIMD_MODE_SIMD8 : - ELK_SAMPLER_SIMD_MODE_SIMD16; - } - } else { - if (payload_type_bit_size == 16) { - simd_mode = inst->exec_size <= 16 ? XE2_SAMPLER_SIMD_MODE_SIMD16H : - XE2_SAMPLER_SIMD_MODE_SIMD32H; - } else { - simd_mode = inst->exec_size <= 16 ? XE2_SAMPLER_SIMD_MODE_SIMD16 : - XE2_SAMPLER_SIMD_MODE_SIMD32; - } - } + assert(payload_type_bit_size != 16); + unsigned simd_mode = inst->exec_size <= 8 ? ELK_SAMPLER_SIMD_MODE_SIMD8 : + ELK_SAMPLER_SIMD_MODE_SIMD16; /* Generate the SEND. */ inst->opcode = ELK_SHADER_OPCODE_SEND;