From dbb3dbcdd2dc66b7cd734f8ac05d0e0b262b850d Mon Sep 17 00:00:00 2001 From: Li Huang Date: Wed, 9 Mar 2022 19:30:17 +0800 Subject: [PATCH] video: rockchip: rga3: rga3_reg: fixup yuv/rgb convert to rgba missing alpha channel Signed-off-by: Li Huang Change-Id: I1ca62b1481b1b2968567c3a9714d757a690bfb8d --- drivers/video/rockchip/rga3/rga3_reg_info.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/drivers/video/rockchip/rga3/rga3_reg_info.c b/drivers/video/rockchip/rga3/rga3_reg_info.c index 153fb05c27ea..1c6dee8b7166 100644 --- a/drivers/video/rockchip/rga3/rga3_reg_info.c +++ b/drivers/video/rockchip/rga3/rga3_reg_info.c @@ -1338,6 +1338,18 @@ void rga_cmd_to_rga3_cmd(struct rga_req *req_rga, struct rga3_req *req) if (rga_is_alpha_format(req_rga->src.format)) req->alpha_mode_1 = 0x0a00; + req->win0_a_global_val = req_rga->alpha_global_value; + req->win1_a_global_val = req_rga->alpha_global_value; + + /* fixup yuv/rgb convert to rgba missing alpha channel */ + if (!(req_rga->alpha_rop_flag & 1)) { + if (!rga_is_alpha_format(req_rga->src.format) && + rga_is_alpha_format(req_rga->dst.format)) { + req->win0_a_global_val = 0xff; + req->win1_a_global_val = 0xff; + } + } + /* * Layer binding: * src => win1 @@ -1533,9 +1545,6 @@ void rga_cmd_to_rga3_cmd(struct rga_req *req_rga, struct rga3_req *req) } } - req->win0_a_global_val = req_rga->alpha_global_value; - req->win1_a_global_val = req_rga->alpha_global_value; - /* yuv to rgb */ /* 601 limit */ if (req_rga->yuv2rgb_mode == 1) {