diff --git a/src/intel/compiler/brw_disasm.c b/src/intel/compiler/brw_disasm.c index 9b1d9017fb6..4980ccbbde3 100644 --- a/src/intel/compiler/brw_disasm.c +++ b/src/intel/compiler/brw_disasm.c @@ -613,11 +613,13 @@ static const char *const gfx5_sampler_msg_type[] = { [GFX7_SAMPLER_MESSAGE_SAMPLE_LD2DSS] = "ld2dss", }; -static const char *const gfx5_sampler_simd_mode[4] = { +static const char *const gfx5_sampler_simd_mode[7] = { [BRW_SAMPLER_SIMD_MODE_SIMD4X2] = "SIMD4x2", [BRW_SAMPLER_SIMD_MODE_SIMD8] = "SIMD8", [BRW_SAMPLER_SIMD_MODE_SIMD16] = "SIMD16", [BRW_SAMPLER_SIMD_MODE_SIMD32_64] = "SIMD32/64", + [GFX10_SAMPLER_SIMD_MODE_SIMD8H] = "SIMD8H", + [GFX10_SAMPLER_SIMD_MODE_SIMD16H] = "SIMD16H", }; static const char *const sampler_target_format[4] = { @@ -2092,6 +2094,10 @@ brw_disassemble_inst(FILE *file, const struct intel_device_info *devinfo, err |= control(file, "sampler simd mode", gfx5_sampler_simd_mode, brw_sampler_desc_simd_mode(devinfo, imm_desc), &space); + if (devinfo->ver >= 8 && + brw_sampler_desc_return_format(devinfo, imm_desc)) { + string(file, " HP"); + } format(file, " Surface = %u Sampler = %u", brw_sampler_desc_binding_table_index(devinfo, imm_desc), brw_sampler_desc_sampler(devinfo, imm_desc)); diff --git a/src/intel/compiler/brw_eu.h b/src/intel/compiler/brw_eu.h index 99de21d8742..7d240590d0d 100644 --- a/src/intel/compiler/brw_eu.h +++ b/src/intel/compiler/brw_eu.h @@ -452,7 +452,9 @@ brw_sampler_desc_simd_mode(const struct intel_device_info *devinfo, uint32_t desc) { assert(devinfo->ver >= 5); - if (devinfo->ver >= 7) + if (devinfo->ver >= 8) + return GET_BITS(desc, 18, 17) | GET_BITS(desc, 29, 29) << 2; + else if (devinfo->ver >= 7) return GET_BITS(desc, 18, 17); else return GET_BITS(desc, 17, 16); @@ -462,8 +464,11 @@ static inline unsigned brw_sampler_desc_return_format(ASSERTED const struct intel_device_info *devinfo, uint32_t desc) { - assert(devinfo->verx10 == 40); - return GET_BITS(desc, 13, 12); + assert(devinfo->verx10 == 40 || devinfo->ver >= 8); + if (devinfo->ver >= 8) + return GET_BITS(desc, 30, 30); + else + return GET_BITS(desc, 13, 12); } /**