From 42088cd6029653997d471b5f37e0c8fbf7663e0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tapani=20P=C3=A4lli?= Date: Mon, 4 Aug 2025 17:05:09 +0200 Subject: [PATCH] isl/blorp: handle failing 96bpp linear blit case MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix the aux usage assert in blorp for 96bpp linear blit and provide CMF values for RGB formats supported by isl_format_rgb_to_rgba. CC: mesa-stable Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/13670 Signed-off-by: Tapani Pälli Reviewed-by: Sagar Ghuge Reviewed-by: Nanley Chery Part-of: --- src/intel/blorp/blorp_blit.c | 6 ++++-- src/intel/isl/isl_genX_helpers.h | 4 ++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/intel/blorp/blorp_blit.c b/src/intel/blorp/blorp_blit.c index c3c5de92ab9..bb353ae6cc5 100644 --- a/src/intel/blorp/blorp_blit.c +++ b/src/intel/blorp/blorp_blit.c @@ -2490,8 +2490,10 @@ blorp_copy_supports_blitter(struct blorp_context *blorp, /* XY_BLOCK_COPY_BLT mentions it doesn't support clear colors for 96bpp * formats, but none of them support CCS anyway, so it's a moot point. */ - assert(src_aux_usage == ISL_AUX_USAGE_NONE); - assert(dst_aux_usage == ISL_AUX_USAGE_NONE); + if (devinfo->verx10 < 20) { + assert(src_aux_usage == ISL_AUX_USAGE_NONE); + assert(dst_aux_usage == ISL_AUX_USAGE_NONE); + } /* We can only support linear mode for 96bpp. */ if (src_surf->tiling != ISL_TILING_LINEAR || diff --git a/src/intel/isl/isl_genX_helpers.h b/src/intel/isl/isl_genX_helpers.h index 075a311c047..3e98909e4b1 100644 --- a/src/intel/isl/isl_genX_helpers.h +++ b/src/intel/isl/isl_genX_helpers.h @@ -204,6 +204,10 @@ isl_get_qpitch(const struct isl_surf *surf) UNUSED static uint8_t isl_get_render_compression_format(enum isl_format format) { + /* The spec gives no CMFs to NPOT RGB formats. Remap them to RGBA. */ + if (isl_format_get_layout(format)->bpb % 3 == 0) + format = isl_format_rgb_to_rgba(format); + /* Bspec 63919 (r60413): * * Table "[Enumeration] UNIFIED_COMPRESSION_FORMAT"