media: rockchip: rga: don't change RGB quantization

Don't change the quantization of an RGB format when converting between
RGB and YUV with the RGA3. As the RGA3 only supports doing conversions
to full range YUV with BT601, it wants to announce it through
try_fmt/s_fmt.

As it is only relevant, when converting between RGB and YUV, it's
guarded by a given condition. But the condition also causes the
RGB format quantization to be adjusted to limited range, which
is incorrect.

Therefore simplify the condition to only apply when the current format
is a YUV format. Also document the reason for checking if the other
format is an RGB format.

Fixes: 24a63d4c9d ("media: rockchip: rga: add rga3 support")
Cc: stable@vger.kernel.org
Signed-off-by: Sven Püschel <s.pueschel@pengutronix.de>
Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
This commit is contained in:
Sven Püschel
2026-06-05 15:32:01 +02:00
committed by Hans Verkuil
parent 22c0f8e2d9
commit 7acc334cf0

View File

@@ -450,10 +450,14 @@ static void *rga3_adjust_and_map_format(struct rga_ctx *ctx,
other_format = is_output ? &ctx->out.pix : &ctx->in.pix;
other_format_info = v4l2_format_info(other_format->pixelformat);
if ((v4l2_is_format_rgb(format_info) &&
v4l2_is_format_yuv(other_format_info)) ||
(v4l2_is_format_yuv(format_info) &&
v4l2_is_format_rgb(other_format_info))) {
/*
* Only apply the quantization restrictions when we need to
* convert between RGB and YUV. Otherwise there is no point
* to limit the quantization for operations like scaling or
* rotations.
*/
if (v4l2_is_format_yuv(format_info) &&
v4l2_is_format_rgb(other_format_info)) {
/*
* The RGA3 only supports BT601, BT709 and BT2020 RGB<->YUV conversions
* Additionally BT709 and BT2020 only support limited range YUV.