From 6778948f9de86c3cfaf36725a7c87dcff9ba247f Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Mon, 11 Dec 2023 08:20:59 +0000 Subject: [PATCH] kernel_5.10 no rt --- kernel/drivers/video/rockchip/rga3/include/rga.h | 121 +++++++++++++++++++++++++++++++--------- 1 files changed, 94 insertions(+), 27 deletions(-) diff --git a/kernel/drivers/video/rockchip/rga3/include/rga.h b/kernel/drivers/video/rockchip/rga3/include/rga.h index f6be6eaf..34a9245 100644 --- a/kernel/drivers/video/rockchip/rga3/include/rga.h +++ b/kernel/drivers/video/rockchip/rga3/include/rga.h @@ -139,6 +139,7 @@ RGA_YUV_VDS = 0x1 << 10, RGA_OSD = 0x1 << 11, RGA_PRE_INTR = 0x1 << 12, + RGA_FULL_CSC = 0x1 << 13, }; enum rga_surf_format { @@ -201,6 +202,55 @@ RGA_FORMAT_RGBA_2BPP = 0x30, RGA_FORMAT_UNKNOWN = 0x100, +}; + +enum rga_alpha_mode { + RGA_ALPHA_STRAIGHT = 0, + RGA_ALPHA_INVERSE = 1, +}; + +enum rga_global_blend_mode { + RGA_ALPHA_GLOBAL = 0, + RGA_ALPHA_PER_PIXEL = 1, + RGA_ALPHA_PER_PIXEL_GLOBAL = 2, +}; + +enum rga_alpha_cal_mode { + RGA_ALPHA_SATURATION = 0, + RGA_ALPHA_NO_SATURATION = 1, +}; + +enum rga_factor_mode { + RGA_ALPHA_ZERO = 0, + RGA_ALPHA_ONE = 1, + /* + * When used as a factor for the SRC channel, it indicates + * the use of the DST channel's alpha value, and vice versa. + */ + RGA_ALPHA_OPPOSITE = 2, + RGA_ALPHA_OPPOSITE_INVERSE = 3, + RGA_ALPHA_OWN = 4, +}; + +enum rga_color_mode { + RGA_ALPHA_PRE_MULTIPLIED = 0, + RGA_ALPHA_NO_PRE_MULTIPLIED = 1, +}; + +enum rga_alpha_blend_mode { + RGA_ALPHA_NONE = 0, + RGA_ALPHA_BLEND_SRC, + RGA_ALPHA_BLEND_DST, + RGA_ALPHA_BLEND_SRC_OVER, + RGA_ALPHA_BLEND_DST_OVER, + RGA_ALPHA_BLEND_SRC_IN, + RGA_ALPHA_BLEND_DST_IN, + RGA_ALPHA_BLEND_SRC_OUT, + RGA_ALPHA_BLEND_DST_OUT, + RGA_ALPHA_BLEND_SRC_ATOP, + RGA_ALPHA_BLEND_DST_ATOP, + RGA_ALPHA_BLEND_XOR, + RGA_ALPHA_BLEND_CLEAR, }; #define RGA_SCHED_PRIORITY_DEFAULT 0 @@ -329,6 +379,16 @@ struct rga_csc_coe coe_y; struct rga_csc_coe coe_u; struct rga_csc_coe coe_v; +}; + +struct rga_csc_range { + uint16_t max; + uint16_t min; +}; + +struct rga_csc_clip { + struct rga_csc_range y; + struct rga_csc_range uv; }; struct rga_mosaic_info { @@ -507,6 +567,12 @@ uint16_t enable; }; +struct rga_feature { + uint32_t global_alpha_en:1; + uint32_t full_csc_clip_en:1; + uint32_t user_close_fence:1; +}; + struct rga_req { /* (enum) process mode sel */ uint8_t render_mode; @@ -563,7 +629,7 @@ /* porter duff alpha mode sel */ uint8_t PD_mode; - /* global alpha value */ + /* legacy: global alpha value */ uint8_t alpha_global_value; /* rop2/3/4 code scan from rop code table*/ @@ -625,7 +691,28 @@ struct rga_pre_intr_info pre_intr_info; - uint8_t reservr[59]; + /* global alpha */ + uint8_t fg_global_alpha; + uint8_t bg_global_alpha; + + struct rga_feature feature; + + struct rga_csc_clip full_csc_clip; + + uint8_t reservr[43]; +}; + +struct rga_alpha_config { + bool enable; + bool fg_pre_multiplied; + bool bg_pre_multiplied; + bool fg_pixel_alpha_en; + bool bg_pixel_alpha_en; + bool fg_global_alpha_en; + bool bg_global_alpha_en; + uint16_t fg_global_alpha_value; + uint16_t bg_global_alpha_value; + enum rga_alpha_blend_mode mode; }; struct rga2_req { @@ -672,29 +759,7 @@ /* ([7] = 1 gradient fill mode sel) */ u16 alpha_rop_flag; - /* [0] SrcAlphaMode0 */ - /* [2:1] SrcGlobalAlphaMode0 */ - /* [3] SrcAlphaSelectMode0 */ - /* [6:4] SrcFactorMode0 */ - /* [7] SrcColorMode */ - - /* [8] DstAlphaMode0 */ - /* [10:9] DstGlobalAlphaMode0 */ - /* [11] DstAlphaSelectMode0 */ - /* [14:12] DstFactorMode0 */ - /* [15] DstColorMode0 */ - u16 alpha_mode_0; - - /* [0] SrcAlphaMode1 */ - /* [2:1] SrcGlobalAlphaMode1 */ - /* [3] SrcAlphaSelectMode1 */ - /* [6:4] SrcFactorMode1 */ - - /* [8] DstAlphaMode1 */ - /* [10:9] DstGlobalAlphaMode1 */ - /* [11] DstAlphaSelectMode1 */ - /* [14:12] DstFactorMode1 */ - u16 alpha_mode_1; + struct rga_alpha_config alpha_config; /* 0 1 2 3 */ u8 scale_bicu_mode; @@ -782,8 +847,10 @@ u16 alpha_rop_flag; - u16 alpha_mode_0; - u16 alpha_mode_1; + struct rga_alpha_config alpha_config; + + /* for abb mode presever alpha. */ + bool abb_alpha_pass; u8 scale_bicu_mode; -- Gitblit v1.6.2