Module: Mesa Branch: main Commit: c1ad78476d52085203d22596d1eb59521d43a5ce URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=c1ad78476d52085203d22596d1eb59521d43a5ce
Author: Italo Nicola <[email protected]> Date: Thu Jun 22 11:55:01 2023 +0000 panfrost: advertise support for YUYV and variants Signed-off-by: Italo Nicola <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21109> --- src/panfrost/lib/pan_format.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/panfrost/lib/pan_format.c b/src/panfrost/lib/pan_format.c index 7c758c2ec5f..ee47c36a91f 100644 --- a/src/panfrost/lib/pan_format.c +++ b/src/panfrost/lib/pan_format.c @@ -170,10 +170,32 @@ const struct pan_blendable_format } #endif +#if PAN_ARCH == 7 +#define YUV_NO_SWAP (0) +#define YUV_SWAP (1) + +#define FMT_YUV(pipe, mali, swizzle, swap, siting, flags) \ + [PIPE_FORMAT_##pipe] = { \ + .hw = (MALI_YUV_SWIZZLE_##swizzle) | ((YUV_##swap) << 3) | \ + ((MALI_YUV_CR_SITING_##siting) << 9) | ((MALI_##mali) << 12), \ + .bind = FLAGS_##flags, \ + } +#endif + /* clang-format off */ const struct panfrost_format GENX(panfrost_pipe_format)[PIPE_FORMAT_COUNT] = { FMT(NONE, CONSTANT, 0000, L, VTR_), +#if PAN_ARCH == 7 + /* Multiplane formats */ + FMT_YUV(R8G8_R8B8_UNORM, YUYV8, UVYA, NO_SWAP, CO_SITED, _T__), + FMT_YUV(G8R8_B8R8_UNORM, VYUY8, UYVA, SWAP, CO_SITED, _T__), + FMT_YUV(R8B8_R8G8_UNORM, YUYV8, VYUA, NO_SWAP, CO_SITED, _T__), + FMT_YUV(B8R8_G8R8_UNORM, VYUY8, VUYA, SWAP, CO_SITED, _T__), + FMT_YUV(R8_G8B8_420_UNORM, Y8_UV8_420, YUVA, NO_SWAP, CO_SITED, _T__), + FMT_YUV(G8_B8R8_420_UNORM, Y8_UV8_420, YVUA, NO_SWAP, CO_SITED, _T__), +#endif + #if PAN_ARCH <= 7 FMT(ETC1_RGB8, ETC2_RGB8, RGB1, L, _T__), FMT(ETC2_RGB8, ETC2_RGB8, RGB1, L, _T__),
