mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 04:58:05 +02:00
intel/elk: Remove Gfx9+ sampler messages and modes
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
9b709e31cb
commit
05d78994a7
3 changed files with 7 additions and 121 deletions
|
|
@ -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] = "gather4_po",
|
||||||
[GFX7_SAMPLER_MESSAGE_SAMPLE_GATHER4_PO_C] = "gather4_po_c",
|
[GFX7_SAMPLER_MESSAGE_SAMPLE_GATHER4_PO_C] = "gather4_po_c",
|
||||||
[HSW_SAMPLER_MESSAGE_SAMPLE_DERIV_COMPARE] = "sample_d_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_LD_MCS] = "ld_mcs",
|
||||||
[GFX7_SAMPLER_MESSAGE_SAMPLE_LD2DMS] = "ld2dms",
|
[GFX7_SAMPLER_MESSAGE_SAMPLE_LD2DMS] = "ld2dms",
|
||||||
[GFX7_SAMPLER_MESSAGE_SAMPLE_LD2DSS] = "ld2dss",
|
[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_SIMD8] = "SIMD8",
|
||||||
[ELK_SAMPLER_SIMD_MODE_SIMD16] = "SIMD16",
|
[ELK_SAMPLER_SIMD_MODE_SIMD16] = "SIMD16",
|
||||||
[ELK_SAMPLER_SIMD_MODE_SIMD32_64] = "SIMD32/64",
|
[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] = {
|
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);
|
elk_inst_math_msg_precision(devinfo, inst), &space);
|
||||||
break;
|
break;
|
||||||
case ELK_SFID_SAMPLER:
|
case ELK_SFID_SAMPLER:
|
||||||
if (devinfo->ver >= 20) {
|
if (devinfo->ver >= 5) {
|
||||||
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) {
|
|
||||||
err |= control(file, "sampler message", gfx5_sampler_msg_type,
|
err |= control(file, "sampler message", gfx5_sampler_msg_type,
|
||||||
elk_sampler_desc_msg_type(devinfo, imm_desc),
|
elk_sampler_desc_msg_type(devinfo, imm_desc),
|
||||||
&space);
|
&space);
|
||||||
|
|
|
||||||
|
|
@ -575,13 +575,7 @@ enum elk_message_target {
|
||||||
#define GFX7_SAMPLER_MESSAGE_SAMPLE_GATHER4_C 16
|
#define GFX7_SAMPLER_MESSAGE_SAMPLE_GATHER4_C 16
|
||||||
#define GFX7_SAMPLER_MESSAGE_SAMPLE_GATHER4_PO 17
|
#define GFX7_SAMPLER_MESSAGE_SAMPLE_GATHER4_PO 17
|
||||||
#define GFX7_SAMPLER_MESSAGE_SAMPLE_GATHER4_PO_C 18
|
#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 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_LD_MCS 29
|
||||||
#define GFX7_SAMPLER_MESSAGE_SAMPLE_LD2DMS 30
|
#define GFX7_SAMPLER_MESSAGE_SAMPLE_LD2DMS 30
|
||||||
#define GFX7_SAMPLER_MESSAGE_SAMPLE_LD2DSS 31
|
#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_SIMD16 2
|
||||||
#define ELK_SAMPLER_SIMD_MODE_SIMD32_64 3
|
#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_OWORDLOW 0
|
||||||
#define ELK_DATAPORT_OWORD_BLOCK_1_OWORDHIGH 1
|
#define ELK_DATAPORT_OWORD_BLOCK_1_OWORDHIGH 1
|
||||||
#define ELK_DATAPORT_OWORD_BLOCK_2_OWORDS 2
|
#define ELK_DATAPORT_OWORD_BLOCK_2_OWORDS 2
|
||||||
|
|
|
||||||
|
|
@ -842,13 +842,8 @@ sampler_msg_type(const intel_device_info *devinfo,
|
||||||
assert(devinfo->ver >= 5);
|
assert(devinfo->ver >= 5);
|
||||||
switch (opcode) {
|
switch (opcode) {
|
||||||
case ELK_SHADER_OPCODE_TEX:
|
case ELK_SHADER_OPCODE_TEX:
|
||||||
if (devinfo->ver >= 20 && has_min_lod) {
|
return shadow_compare ? GFX5_SAMPLER_MESSAGE_SAMPLE_COMPARE :
|
||||||
return shadow_compare ? XE2_SAMPLER_MESSAGE_SAMPLE_COMPARE_MLOD :
|
GFX5_SAMPLER_MESSAGE_SAMPLE;
|
||||||
XE2_SAMPLER_MESSAGE_SAMPLE_MLOD;
|
|
||||||
} else {
|
|
||||||
return shadow_compare ? GFX5_SAMPLER_MESSAGE_SAMPLE_COMPARE :
|
|
||||||
GFX5_SAMPLER_MESSAGE_SAMPLE;
|
|
||||||
}
|
|
||||||
case ELK_FS_OPCODE_TXB:
|
case ELK_FS_OPCODE_TXB:
|
||||||
return shadow_compare ? GFX5_SAMPLER_MESSAGE_SAMPLE_BIAS_COMPARE :
|
return shadow_compare ? GFX5_SAMPLER_MESSAGE_SAMPLE_BIAS_COMPARE :
|
||||||
GFX5_SAMPLER_MESSAGE_SAMPLE_BIAS;
|
GFX5_SAMPLER_MESSAGE_SAMPLE_BIAS;
|
||||||
|
|
@ -856,10 +851,6 @@ sampler_msg_type(const intel_device_info *devinfo,
|
||||||
assert(!has_min_lod);
|
assert(!has_min_lod);
|
||||||
return shadow_compare ? GFX5_SAMPLER_MESSAGE_SAMPLE_LOD_COMPARE :
|
return shadow_compare ? GFX5_SAMPLER_MESSAGE_SAMPLE_LOD_COMPARE :
|
||||||
GFX5_SAMPLER_MESSAGE_SAMPLE_LOD;
|
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_TXS:
|
||||||
case ELK_SHADER_OPCODE_IMAGE_SIZE_LOGICAL:
|
case ELK_SHADER_OPCODE_IMAGE_SIZE_LOGICAL:
|
||||||
assert(!has_min_lod);
|
assert(!has_min_lod);
|
||||||
|
|
@ -871,14 +862,6 @@ sampler_msg_type(const intel_device_info *devinfo,
|
||||||
case ELK_SHADER_OPCODE_TXF:
|
case ELK_SHADER_OPCODE_TXF:
|
||||||
assert(!has_min_lod);
|
assert(!has_min_lod);
|
||||||
return GFX5_SAMPLER_MESSAGE_SAMPLE_LD;
|
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:
|
case ELK_SHADER_OPCODE_TXF_CMS:
|
||||||
assert(!has_min_lod);
|
assert(!has_min_lod);
|
||||||
return devinfo->ver >= 7 ? GFX7_SAMPLER_MESSAGE_SAMPLE_LD2DMS :
|
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,
|
sampler_msg_type(devinfo, op, inst->shadow_compare,
|
||||||
min_lod.file != BAD_FILE);
|
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) {
|
if (shadow_c.file != BAD_FILE) {
|
||||||
bld.MOV(sources[length], shadow_c);
|
bld.MOV(sources[length], shadow_c);
|
||||||
length++;
|
length++;
|
||||||
|
|
@ -1279,7 +1253,7 @@ lower_sampler_logical_send_gfx7(const fs_builder &bld, elk_fs_inst *inst, elk_op
|
||||||
offset(coordinate, bld, i));
|
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 */
|
/* Account for all of the missing coordinate sources */
|
||||||
if (op == ELK_SHADER_OPCODE_TXD && devinfo->verx10 >= 125) {
|
if (op == ELK_SHADER_OPCODE_TXD && devinfo->verx10 >= 125) {
|
||||||
/* On DG2 and newer platforms, sample_d can only be used with 1D and
|
/* 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,
|
emit_load_payload_with_padding(bld, src_payload, sources, length,
|
||||||
header_size, REG_SIZE * reg_unit(devinfo));
|
header_size, REG_SIZE * reg_unit(devinfo));
|
||||||
unsigned mlen = load_payload_inst->size_written / REG_SIZE;
|
unsigned mlen = load_payload_inst->size_written / REG_SIZE;
|
||||||
unsigned simd_mode = 0;
|
assert(payload_type_bit_size != 16);
|
||||||
if (devinfo->ver < 20) {
|
unsigned simd_mode = inst->exec_size <= 8 ? ELK_SAMPLER_SIMD_MODE_SIMD8 :
|
||||||
if (payload_type_bit_size == 16) {
|
ELK_SAMPLER_SIMD_MODE_SIMD16;
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Generate the SEND. */
|
/* Generate the SEND. */
|
||||||
inst->opcode = ELK_SHADER_OPCODE_SEND;
|
inst->opcode = ELK_SHADER_OPCODE_SEND;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue