From f89d31e1bab9a2ec0641b9c0f0b666ac7bbfbffa Mon Sep 17 00:00:00 2001 From: Marc Alcala Prieto Date: Wed, 22 Apr 2026 09:38:01 +0200 Subject: [PATCH] pan/afrc: Add v14+ AFRC YUV compression mappings v14+ no longer uses specific AFRC compression formats for YUV. Instead, generic R8/R8G8 and R10/R10G10 formats are used. Reviewed-by: Lars-Ivar Hesselberg Simonsen --- src/panfrost/lib/pan_afrc.h | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/panfrost/lib/pan_afrc.h b/src/panfrost/lib/pan_afrc.h index 4a96eb374ea..306e48fb55e 100644 --- a/src/panfrost/lib/pan_afrc.h +++ b/src/panfrost/lib/pan_afrc.h @@ -1,5 +1,6 @@ /* * Copyright (C) 2023 Collabora, Ltd. + * Copyright (C) 2026 Arm Ltd. * SPDX-License-Identifier: MIT */ @@ -347,6 +348,25 @@ pan_afrc_format(struct pan_afrc_format_info info, uint64_t modifier, return (scan ? MALI_AFRC_FORMAT_R10G10B10A10_SCAN : MALI_AFRC_FORMAT_R10G10B10A10_ROT); +#if PAN_ARCH >= 14 + case PAN_AFRC_ICHANGE_FORMAT_YUV444: + case PAN_AFRC_ICHANGE_FORMAT_YUV422: + case PAN_AFRC_ICHANGE_FORMAT_YUV420: + if (info.bpc == 8) { + if (plane == 0 || info.num_planes == 3) + return (scan ? MALI_AFRC_FORMAT_R8_SCAN : MALI_AFRC_FORMAT_R8_ROT); + + return (scan ? MALI_AFRC_FORMAT_R8G8_SCAN : MALI_AFRC_FORMAT_R8G8_ROT); + } + + if (plane == 0 || info.num_planes == 3) + return (scan ? MALI_AFRC_FORMAT_R10_SCAN : MALI_AFRC_FORMAT_R10_ROT); + + assert(info.ichange_fmt == PAN_AFRC_ICHANGE_FORMAT_YUV422 || + info.ichange_fmt == PAN_AFRC_ICHANGE_FORMAT_YUV420); + return (scan ? MALI_AFRC_FORMAT_R10G10_SCAN + : MALI_AFRC_FORMAT_R10G10_ROT); +#else case PAN_AFRC_ICHANGE_FORMAT_YUV444: if (info.bpc == 8) { if (plane == 0 || info.num_planes == 3) @@ -394,6 +414,7 @@ pan_afrc_format(struct pan_afrc_format_info info, uint64_t modifier, return (scan ? MALI_AFRC_FORMAT_R10G10_420_SCAN : MALI_AFRC_FORMAT_R10G10_420_ROT); +#endif /* PAN_ARCH >= 14 */ default: return MALI_AFRC_FORMAT_INVALID;