Skip to content

Commit 53e4f68

Browse files
author
Yu Qiaowei
committed
video/rockchip: rga2: Some new features of Alpha mode.
1. Support colorkey. 2. Support blend mode to restore real color. Signed-off-by: Yu Qiaowei <cerf.yu@rock-chips.com> Change-Id: I8eb6e60d4b9d3c5b6cc280e33edb9f0f3f08f2e2
1 parent f288015 commit 53e4f68

1 file changed

Lines changed: 22 additions & 4 deletions

File tree

drivers/video/rockchip/rga2/rga2_reg_info.c

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1168,6 +1168,8 @@ void RGA_MSG_2_RGA2_MSG(struct rga_req *req_rga, struct rga2_req *req)
11681168
req->rop_mode = req_rga->alpha_rop_mode;
11691169

11701170
req->color_fill_mode = req_rga->color_fill_mode;
1171+
req->alpha_zero_key = req_rga->alpha_rop_mode >> 4;
1172+
req->src_trans_mode = req_rga->src_trans_mode;
11711173
req->color_key_min = req_rga->color_key_min;
11721174
req->color_key_max = req_rga->color_key_max;
11731175

@@ -1233,8 +1235,8 @@ void RGA_MSG_2_RGA2_MSG(struct rga_req *req_rga, struct rga2_req *req)
12331235
req->alpha_mode_1 = alpha_mode_1;
12341236
break;
12351237
case 4: //dst = (sc*(256-da) + 256*dc) >> 8
1236-
req->alpha_mode_0 = 0x1232;
1237-
req->alpha_mode_1 = 0x1232;
1238+
req->alpha_mode_0 = 0x1A3A;
1239+
req->alpha_mode_1 = 0x1A3A;
12381240
break;
12391241
case 5: //dst = (da*sc) >> 8
12401242
break;
@@ -1259,6 +1261,13 @@ void RGA_MSG_2_RGA2_MSG(struct rga_req *req_rga, struct rga2_req *req)
12591261
default:
12601262
break;
12611263
}
1264+
/* Real color mode */
1265+
if ((req_rga->alpha_rop_flag >> 9) & 1) {
1266+
if (req->alpha_mode_0 & (0x01 << 1))
1267+
req->alpha_mode_0 |= (1 << 7);
1268+
if (req->alpha_mode_0 & (0x01 << 9))
1269+
req->alpha_mode_0 |= (1 << 15);
1270+
}
12621271
}
12631272
else {
12641273
if((req_rga->alpha_rop_mode & 3) == 0) {
@@ -1391,6 +1400,8 @@ void RGA_MSG_2_RGA2_MSG_32(struct rga_req_32 *req_rga, struct rga2_req *req)
13911400
req->rop_code = req_rga->rop_code;
13921401
req->rop_mode = req_rga->alpha_rop_mode;
13931402
req->color_fill_mode = req_rga->color_fill_mode;
1403+
req->alpha_zero_key = req_rga->alpha_rop_mode >> 4;
1404+
req->src_trans_mode = req_rga->src_trans_mode;
13941405
req->color_key_min = req_rga->color_key_min;
13951406
req->color_key_max = req_rga->color_key_max;
13961407
req->fg_color = req_rga->fg_color;
@@ -1446,8 +1457,8 @@ void RGA_MSG_2_RGA2_MSG_32(struct rga_req_32 *req_rga, struct rga2_req *req)
14461457
req->alpha_mode_1 = alpha_mode_1;
14471458
break;
14481459
case 4: //dst = (sc*(256-da) + 256*dc) >> 8
1449-
req->alpha_mode_0 = 0x1232;
1450-
req->alpha_mode_1 = 0x1232;
1460+
req->alpha_mode_0 = 0x1A3A;
1461+
req->alpha_mode_1 = 0x1A3A;
14511462
break;
14521463
case 5: //dst = (da*sc) >> 8
14531464
break;
@@ -1472,6 +1483,13 @@ void RGA_MSG_2_RGA2_MSG_32(struct rga_req_32 *req_rga, struct rga2_req *req)
14721483
default:
14731484
break;
14741485
}
1486+
/* Real color mode */
1487+
if ((req_rga->alpha_rop_flag >> 9) & 1) {
1488+
if (req->alpha_mode_0 & (0x01 << 1))
1489+
req->alpha_mode_0 |= (1 << 7);
1490+
if (req->alpha_mode_0 & (0x01 << 9))
1491+
req->alpha_mode_0 |= (1 << 15);
1492+
}
14751493
}
14761494
else {
14771495
if((req_rga->alpha_rop_mode & 3) == 0) {

0 commit comments

Comments
 (0)