From ceb79e399eb2a2c6a992f986a5d3b6b5feb47582 Mon Sep 17 00:00:00 2001 From: Boris Brezillon Date: Wed, 7 May 2025 11:07:38 +0200 Subject: [PATCH] util/format: Handle emulated YUV formats in util_format_get_plane_{height,width}() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Useful to drivers doing the CSC in software, but still needing to account for width/height adjusment based on the subsampling. Signed-off-by: Boris Brezillon Tested-by: Eric R. Smith Reviewed-by: Eric R. Smith Reviewed-by: Marek Olšák Reviewed-by: Mary Guillemard Part-of: --- src/util/format/u_format.h | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/util/format/u_format.h b/src/util/format/u_format.h index 4cf1b29f33e..ceb66a5adb3 100644 --- a/src/util/format/u_format.h +++ b/src/util/format/u_format.h @@ -1353,6 +1353,19 @@ util_format_get_plane_width(enum pipe_format format, unsigned plane, case PIPE_FORMAT_Y16_U16_V16_420_UNORM: case PIPE_FORMAT_Y16_U16_V16_422_UNORM: case PIPE_FORMAT_Y16_U16V16_422_UNORM: + case PIPE_FORMAT_R8_G8B8_420_UNORM: + case PIPE_FORMAT_R8_B8G8_420_UNORM: + case PIPE_FORMAT_G8_B8R8_420_UNORM: + case PIPE_FORMAT_R8_G8B8_422_UNORM: + case PIPE_FORMAT_R8_B8G8_422_UNORM: + case PIPE_FORMAT_G8_B8R8_422_UNORM: + case PIPE_FORMAT_R8_G8_B8_420_UNORM: + case PIPE_FORMAT_R8_B8_G8_420_UNORM: + case PIPE_FORMAT_G8_B8_R8_420_UNORM: + case PIPE_FORMAT_R10_G10B10_420_UNORM: + case PIPE_FORMAT_R10_G10B10_422_UNORM: + case PIPE_FORMAT_X6G10_X6B10X6R10_420_UNORM: + case PIPE_FORMAT_X4G12_X4B12X4R12_420_UNORM: return !plane ? width : (width + 1) / 2; default: return width; @@ -1374,6 +1387,15 @@ util_format_get_plane_height(enum pipe_format format, unsigned plane, case PIPE_FORMAT_P030: case PIPE_FORMAT_Y16_U16_V16_420_UNORM: case PIPE_FORMAT_Y8_U8_V8_440_UNORM: + case PIPE_FORMAT_R8_G8B8_420_UNORM: + case PIPE_FORMAT_R8_B8G8_420_UNORM: + case PIPE_FORMAT_G8_B8R8_420_UNORM: + case PIPE_FORMAT_R8_G8_B8_420_UNORM: + case PIPE_FORMAT_R8_B8_G8_420_UNORM: + case PIPE_FORMAT_G8_B8_R8_420_UNORM: + case PIPE_FORMAT_R10_G10B10_420_UNORM: + case PIPE_FORMAT_X6G10_X6B10X6R10_420_UNORM: + case PIPE_FORMAT_X4G12_X4B12X4R12_420_UNORM: return !plane ? height : (height + 1) / 2; case PIPE_FORMAT_YV16: default: