.. | .. |
---|
86 | 86 | RGA_SCALE_DOWN_AVG = 0x1, |
---|
87 | 87 | }; |
---|
88 | 88 | |
---|
| 89 | +enum RGA_SCHEDULER_CORE { |
---|
| 90 | + RGA_SCHEDULER_RGA3_CORE0 = 1 << 0, |
---|
| 91 | + RGA_SCHEDULER_RGA3_CORE1 = 1 << 1, |
---|
| 92 | + RGA_SCHEDULER_RGA2_CORE0 = 1 << 2, |
---|
| 93 | +}; |
---|
| 94 | + |
---|
89 | 95 | /* RGA process mode enum */ |
---|
90 | 96 | enum { |
---|
91 | 97 | BITBLT_MODE = 0x0, |
---|
.. | .. |
---|
139 | 145 | RGA_YUV_VDS = 0x1 << 10, |
---|
140 | 146 | RGA_OSD = 0x1 << 11, |
---|
141 | 147 | RGA_PRE_INTR = 0x1 << 12, |
---|
| 148 | + RGA_FULL_CSC = 0x1 << 13, |
---|
142 | 149 | }; |
---|
143 | 150 | |
---|
144 | 151 | enum rga_surf_format { |
---|
.. | .. |
---|
201 | 208 | RGA_FORMAT_RGBA_2BPP = 0x30, |
---|
202 | 209 | |
---|
203 | 210 | RGA_FORMAT_UNKNOWN = 0x100, |
---|
| 211 | +}; |
---|
| 212 | + |
---|
| 213 | +enum rga_alpha_mode { |
---|
| 214 | + RGA_ALPHA_STRAIGHT = 0, |
---|
| 215 | + RGA_ALPHA_INVERSE = 1, |
---|
| 216 | +}; |
---|
| 217 | + |
---|
| 218 | +enum rga_global_blend_mode { |
---|
| 219 | + RGA_ALPHA_GLOBAL = 0, |
---|
| 220 | + RGA_ALPHA_PER_PIXEL = 1, |
---|
| 221 | + RGA_ALPHA_PER_PIXEL_GLOBAL = 2, |
---|
| 222 | +}; |
---|
| 223 | + |
---|
| 224 | +enum rga_alpha_cal_mode { |
---|
| 225 | + RGA_ALPHA_SATURATION = 0, |
---|
| 226 | + RGA_ALPHA_NO_SATURATION = 1, |
---|
| 227 | +}; |
---|
| 228 | + |
---|
| 229 | +enum rga_factor_mode { |
---|
| 230 | + RGA_ALPHA_ZERO = 0, |
---|
| 231 | + RGA_ALPHA_ONE = 1, |
---|
| 232 | + /* |
---|
| 233 | + * When used as a factor for the SRC channel, it indicates |
---|
| 234 | + * the use of the DST channel's alpha value, and vice versa. |
---|
| 235 | + */ |
---|
| 236 | + RGA_ALPHA_OPPOSITE = 2, |
---|
| 237 | + RGA_ALPHA_OPPOSITE_INVERSE = 3, |
---|
| 238 | + RGA_ALPHA_OWN = 4, |
---|
| 239 | +}; |
---|
| 240 | + |
---|
| 241 | +enum rga_color_mode { |
---|
| 242 | + RGA_ALPHA_PRE_MULTIPLIED = 0, |
---|
| 243 | + RGA_ALPHA_NO_PRE_MULTIPLIED = 1, |
---|
| 244 | +}; |
---|
| 245 | + |
---|
| 246 | +enum rga_alpha_blend_mode { |
---|
| 247 | + RGA_ALPHA_NONE = 0, |
---|
| 248 | + RGA_ALPHA_BLEND_SRC, |
---|
| 249 | + RGA_ALPHA_BLEND_DST, |
---|
| 250 | + RGA_ALPHA_BLEND_SRC_OVER, |
---|
| 251 | + RGA_ALPHA_BLEND_DST_OVER, |
---|
| 252 | + RGA_ALPHA_BLEND_SRC_IN, |
---|
| 253 | + RGA_ALPHA_BLEND_DST_IN, |
---|
| 254 | + RGA_ALPHA_BLEND_SRC_OUT, |
---|
| 255 | + RGA_ALPHA_BLEND_DST_OUT, |
---|
| 256 | + RGA_ALPHA_BLEND_SRC_ATOP, |
---|
| 257 | + RGA_ALPHA_BLEND_DST_ATOP, |
---|
| 258 | + RGA_ALPHA_BLEND_XOR, |
---|
| 259 | + RGA_ALPHA_BLEND_CLEAR, |
---|
204 | 260 | }; |
---|
205 | 261 | |
---|
206 | 262 | #define RGA_SCHED_PRIORITY_DEFAULT 0 |
---|
.. | .. |
---|
329 | 385 | struct rga_csc_coe coe_y; |
---|
330 | 386 | struct rga_csc_coe coe_u; |
---|
331 | 387 | struct rga_csc_coe coe_v; |
---|
| 388 | +}; |
---|
| 389 | + |
---|
| 390 | +struct rga_csc_range { |
---|
| 391 | + uint16_t max; |
---|
| 392 | + uint16_t min; |
---|
| 393 | +}; |
---|
| 394 | + |
---|
| 395 | +struct rga_csc_clip { |
---|
| 396 | + struct rga_csc_range y; |
---|
| 397 | + struct rga_csc_range uv; |
---|
332 | 398 | }; |
---|
333 | 399 | |
---|
334 | 400 | struct rga_mosaic_info { |
---|
.. | .. |
---|
507 | 573 | uint16_t enable; |
---|
508 | 574 | }; |
---|
509 | 575 | |
---|
| 576 | +struct rga_feature { |
---|
| 577 | + uint32_t global_alpha_en:1; |
---|
| 578 | + uint32_t full_csc_clip_en:1; |
---|
| 579 | + uint32_t user_close_fence:1; |
---|
| 580 | +}; |
---|
| 581 | + |
---|
510 | 582 | struct rga_req { |
---|
511 | 583 | /* (enum) process mode sel */ |
---|
512 | 584 | uint8_t render_mode; |
---|
.. | .. |
---|
563 | 635 | /* porter duff alpha mode sel */ |
---|
564 | 636 | uint8_t PD_mode; |
---|
565 | 637 | |
---|
566 | | - /* global alpha value */ |
---|
| 638 | + /* legacy: global alpha value */ |
---|
567 | 639 | uint8_t alpha_global_value; |
---|
568 | 640 | |
---|
569 | 641 | /* rop2/3/4 code scan from rop code table*/ |
---|
.. | .. |
---|
625 | 697 | |
---|
626 | 698 | struct rga_pre_intr_info pre_intr_info; |
---|
627 | 699 | |
---|
628 | | - uint8_t reservr[59]; |
---|
| 700 | + /* global alpha */ |
---|
| 701 | + uint8_t fg_global_alpha; |
---|
| 702 | + uint8_t bg_global_alpha; |
---|
| 703 | + |
---|
| 704 | + struct rga_feature feature; |
---|
| 705 | + |
---|
| 706 | + struct rga_csc_clip full_csc_clip; |
---|
| 707 | + |
---|
| 708 | + uint8_t reservr[43]; |
---|
| 709 | +}; |
---|
| 710 | + |
---|
| 711 | +struct rga_alpha_config { |
---|
| 712 | + bool enable; |
---|
| 713 | + bool fg_pre_multiplied; |
---|
| 714 | + bool bg_pre_multiplied; |
---|
| 715 | + bool fg_pixel_alpha_en; |
---|
| 716 | + bool bg_pixel_alpha_en; |
---|
| 717 | + bool fg_global_alpha_en; |
---|
| 718 | + bool bg_global_alpha_en; |
---|
| 719 | + uint16_t fg_global_alpha_value; |
---|
| 720 | + uint16_t bg_global_alpha_value; |
---|
| 721 | + enum rga_alpha_blend_mode mode; |
---|
629 | 722 | }; |
---|
630 | 723 | |
---|
631 | 724 | struct rga2_req { |
---|
.. | .. |
---|
672 | 765 | /* ([7] = 1 gradient fill mode sel) */ |
---|
673 | 766 | u16 alpha_rop_flag; |
---|
674 | 767 | |
---|
675 | | - /* [0] SrcAlphaMode0 */ |
---|
676 | | - /* [2:1] SrcGlobalAlphaMode0 */ |
---|
677 | | - /* [3] SrcAlphaSelectMode0 */ |
---|
678 | | - /* [6:4] SrcFactorMode0 */ |
---|
679 | | - /* [7] SrcColorMode */ |
---|
680 | | - |
---|
681 | | - /* [8] DstAlphaMode0 */ |
---|
682 | | - /* [10:9] DstGlobalAlphaMode0 */ |
---|
683 | | - /* [11] DstAlphaSelectMode0 */ |
---|
684 | | - /* [14:12] DstFactorMode0 */ |
---|
685 | | - /* [15] DstColorMode0 */ |
---|
686 | | - u16 alpha_mode_0; |
---|
687 | | - |
---|
688 | | - /* [0] SrcAlphaMode1 */ |
---|
689 | | - /* [2:1] SrcGlobalAlphaMode1 */ |
---|
690 | | - /* [3] SrcAlphaSelectMode1 */ |
---|
691 | | - /* [6:4] SrcFactorMode1 */ |
---|
692 | | - |
---|
693 | | - /* [8] DstAlphaMode1 */ |
---|
694 | | - /* [10:9] DstGlobalAlphaMode1 */ |
---|
695 | | - /* [11] DstAlphaSelectMode1 */ |
---|
696 | | - /* [14:12] DstFactorMode1 */ |
---|
697 | | - u16 alpha_mode_1; |
---|
| 768 | + struct rga_alpha_config alpha_config; |
---|
698 | 769 | |
---|
699 | 770 | /* 0 1 2 3 */ |
---|
700 | 771 | u8 scale_bicu_mode; |
---|
.. | .. |
---|
782 | 853 | |
---|
783 | 854 | u16 alpha_rop_flag; |
---|
784 | 855 | |
---|
785 | | - u16 alpha_mode_0; |
---|
786 | | - u16 alpha_mode_1; |
---|
| 856 | + struct rga_alpha_config alpha_config; |
---|
| 857 | + |
---|
| 858 | + /* for abb mode presever alpha. */ |
---|
| 859 | + bool abb_alpha_pass; |
---|
787 | 860 | |
---|
788 | 861 | u8 scale_bicu_mode; |
---|
789 | 862 | |
---|