On Fri Jun 5 15:32:01 2026 +0200, Sven Püschel wrote:
> 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: 24a63d4c9d3c ("media: rockchip: rga: add rga3 support")
> Cc: [email protected]
> Signed-off-by: Sven Püschel <[email protected]>
> Reviewed-by: Nicolas Dufresne <[email protected]>
> Signed-off-by: Nicolas Dufresne <[email protected]>
> Signed-off-by: Hans Verkuil <[email protected]>

Patch committed.

Thanks,
Hans Verkuil

 drivers/media/platform/rockchip/rga/rga3-hw.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

---

diff --git a/drivers/media/platform/rockchip/rga/rga3-hw.c 
b/drivers/media/platform/rockchip/rga/rga3-hw.c
index ca1c268303dd..c4a71306278b 100644
--- a/drivers/media/platform/rockchip/rga/rga3-hw.c
+++ b/drivers/media/platform/rockchip/rga/rga3-hw.c
@@ -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.
_______________________________________________
linuxtv-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to