@@ -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