video: rockchip: rga3: compatible with legacy global alpha config

Change-Id: I8dcccad5638f1fa7f16dcd9945562596cae047bc
Signed-off-by: Yu Qiaowei <cerf.yu@rock-chips.com>
This commit is contained in:
Yu Qiaowei
2023-08-31 10:05:00 +08:00
committed by Tao Huang
parent 9550ca04e8
commit 7291693b01
3 changed files with 43 additions and 25 deletions

View File

@@ -678,7 +678,11 @@ struct rga_req {
uint8_t fg_global_alpha;
uint8_t bg_global_alpha;
uint8_t reservr[57];
struct {
uint32_t global_alpha_en:1;
} feature;
uint8_t reservr[51];
};
struct rga_alpha_config {

View File

@@ -2087,19 +2087,26 @@ static void rga_cmd_to_rga2_cmd(struct rga_scheduler_t *scheduler,
req->alpha_config.bg_pixel_alpha_en =
rga_is_alpha_format(req->dst.format);
if (req_rga->fg_global_alpha < 0xff) {
req->alpha_config.fg_global_alpha_en = true;
req->alpha_config.fg_global_alpha_value = req_rga->fg_global_alpha;
} else if (!req->alpha_config.fg_pixel_alpha_en) {
req->alpha_config.fg_global_alpha_en = true;
req->alpha_config.fg_global_alpha_value = 0xff;
}
if (req_rga->feature.global_alpha_en) {
if (req_rga->fg_global_alpha < 0xff) {
req->alpha_config.fg_global_alpha_en = true;
req->alpha_config.fg_global_alpha_value =
req_rga->fg_global_alpha;
} else if (!req->alpha_config.fg_pixel_alpha_en) {
req->alpha_config.fg_global_alpha_en = true;
req->alpha_config.fg_global_alpha_value = 0xff;
}
if (req_rga->bg_global_alpha < 0xff) {
req->alpha_config.bg_global_alpha_en = true;
req->alpha_config.bg_global_alpha_value = req_rga->bg_global_alpha;
} else if (!req->alpha_config.bg_pixel_alpha_en) {
req->alpha_config.bg_global_alpha_en = true;
if (req_rga->bg_global_alpha < 0xff) {
req->alpha_config.bg_global_alpha_en = true;
req->alpha_config.bg_global_alpha_value =
req_rga->bg_global_alpha;
} else if (!req->alpha_config.bg_pixel_alpha_en) {
req->alpha_config.bg_global_alpha_en = true;
req->alpha_config.bg_global_alpha_value = 0xff;
}
} else {
req->alpha_config.bg_global_alpha_value = 0xff;
req->alpha_config.bg_global_alpha_value = 0xff;
}

View File

@@ -1643,19 +1643,26 @@ static void rga_cmd_to_rga3_cmd(struct rga_req *req_rga, struct rga3_req *req)
req->alpha_config.fg_pixel_alpha_en = rga_is_alpha_format(req->win1.format);
req->alpha_config.bg_pixel_alpha_en = rga_is_alpha_format(req->win0.format);
if (req_rga->fg_global_alpha < 0xff) {
req->alpha_config.fg_global_alpha_en = true;
req->alpha_config.fg_global_alpha_value = req_rga->fg_global_alpha;
} else if (!req->alpha_config.fg_pixel_alpha_en) {
req->alpha_config.fg_global_alpha_en = true;
req->alpha_config.fg_global_alpha_value = 0xff;
}
if (req_rga->feature.global_alpha_en) {
if (req_rga->fg_global_alpha < 0xff) {
req->alpha_config.fg_global_alpha_en = true;
req->alpha_config.fg_global_alpha_value =
req_rga->fg_global_alpha;
} else if (!req->alpha_config.fg_pixel_alpha_en) {
req->alpha_config.fg_global_alpha_en = true;
req->alpha_config.fg_global_alpha_value = 0xff;
}
if (req_rga->bg_global_alpha < 0xff) {
req->alpha_config.bg_global_alpha_en = true;
req->alpha_config.bg_global_alpha_value = req_rga->bg_global_alpha;
} else if (!req->alpha_config.bg_pixel_alpha_en) {
req->alpha_config.bg_global_alpha_en = true;
if (req_rga->bg_global_alpha < 0xff) {
req->alpha_config.bg_global_alpha_en = true;
req->alpha_config.bg_global_alpha_value =
req_rga->bg_global_alpha;
} else if (!req->alpha_config.bg_pixel_alpha_en) {
req->alpha_config.bg_global_alpha_en = true;
req->alpha_config.bg_global_alpha_value = 0xff;
}
} else {
req->alpha_config.bg_global_alpha_value = 0xff;
req->alpha_config.bg_global_alpha_value = 0xff;
}