.. | .. |
---|
139 | 139 | RGA_YUV_VDS = 0x1 << 10, |
---|
140 | 140 | RGA_OSD = 0x1 << 11, |
---|
141 | 141 | RGA_PRE_INTR = 0x1 << 12, |
---|
| 142 | + RGA_FULL_CSC = 0x1 << 13, |
---|
142 | 143 | }; |
---|
143 | 144 | |
---|
144 | 145 | enum rga_surf_format { |
---|
.. | .. |
---|
201 | 202 | RGA_FORMAT_RGBA_2BPP = 0x30, |
---|
202 | 203 | |
---|
203 | 204 | RGA_FORMAT_UNKNOWN = 0x100, |
---|
| 205 | +}; |
---|
| 206 | + |
---|
| 207 | +enum rga_alpha_mode { |
---|
| 208 | + RGA_ALPHA_STRAIGHT = 0, |
---|
| 209 | + RGA_ALPHA_INVERSE = 1, |
---|
| 210 | +}; |
---|
| 211 | + |
---|
| 212 | +enum rga_global_blend_mode { |
---|
| 213 | + RGA_ALPHA_GLOBAL = 0, |
---|
| 214 | + RGA_ALPHA_PER_PIXEL = 1, |
---|
| 215 | + RGA_ALPHA_PER_PIXEL_GLOBAL = 2, |
---|
| 216 | +}; |
---|
| 217 | + |
---|
| 218 | +enum rga_alpha_cal_mode { |
---|
| 219 | + RGA_ALPHA_SATURATION = 0, |
---|
| 220 | + RGA_ALPHA_NO_SATURATION = 1, |
---|
| 221 | +}; |
---|
| 222 | + |
---|
| 223 | +enum rga_factor_mode { |
---|
| 224 | + RGA_ALPHA_ZERO = 0, |
---|
| 225 | + RGA_ALPHA_ONE = 1, |
---|
| 226 | + /* |
---|
| 227 | + * When used as a factor for the SRC channel, it indicates |
---|
| 228 | + * the use of the DST channel's alpha value, and vice versa. |
---|
| 229 | + */ |
---|
| 230 | + RGA_ALPHA_OPPOSITE = 2, |
---|
| 231 | + RGA_ALPHA_OPPOSITE_INVERSE = 3, |
---|
| 232 | + RGA_ALPHA_OWN = 4, |
---|
| 233 | +}; |
---|
| 234 | + |
---|
| 235 | +enum rga_color_mode { |
---|
| 236 | + RGA_ALPHA_PRE_MULTIPLIED = 0, |
---|
| 237 | + RGA_ALPHA_NO_PRE_MULTIPLIED = 1, |
---|
| 238 | +}; |
---|
| 239 | + |
---|
| 240 | +enum rga_alpha_blend_mode { |
---|
| 241 | + RGA_ALPHA_NONE = 0, |
---|
| 242 | + RGA_ALPHA_BLEND_SRC, |
---|
| 243 | + RGA_ALPHA_BLEND_DST, |
---|
| 244 | + RGA_ALPHA_BLEND_SRC_OVER, |
---|
| 245 | + RGA_ALPHA_BLEND_DST_OVER, |
---|
| 246 | + RGA_ALPHA_BLEND_SRC_IN, |
---|
| 247 | + RGA_ALPHA_BLEND_DST_IN, |
---|
| 248 | + RGA_ALPHA_BLEND_SRC_OUT, |
---|
| 249 | + RGA_ALPHA_BLEND_DST_OUT, |
---|
| 250 | + RGA_ALPHA_BLEND_SRC_ATOP, |
---|
| 251 | + RGA_ALPHA_BLEND_DST_ATOP, |
---|
| 252 | + RGA_ALPHA_BLEND_XOR, |
---|
| 253 | + RGA_ALPHA_BLEND_CLEAR, |
---|
204 | 254 | }; |
---|
205 | 255 | |
---|
206 | 256 | #define RGA_SCHED_PRIORITY_DEFAULT 0 |
---|
.. | .. |
---|
329 | 379 | struct rga_csc_coe coe_y; |
---|
330 | 380 | struct rga_csc_coe coe_u; |
---|
331 | 381 | struct rga_csc_coe coe_v; |
---|
| 382 | +}; |
---|
| 383 | + |
---|
| 384 | +struct rga_csc_range { |
---|
| 385 | + uint16_t max; |
---|
| 386 | + uint16_t min; |
---|
| 387 | +}; |
---|
| 388 | + |
---|
| 389 | +struct rga_csc_clip { |
---|
| 390 | + struct rga_csc_range y; |
---|
| 391 | + struct rga_csc_range uv; |
---|
332 | 392 | }; |
---|
333 | 393 | |
---|
334 | 394 | struct rga_mosaic_info { |
---|
.. | .. |
---|
507 | 567 | uint16_t enable; |
---|
508 | 568 | }; |
---|
509 | 569 | |
---|
| 570 | +struct rga_feature { |
---|
| 571 | + uint32_t global_alpha_en:1; |
---|
| 572 | + uint32_t full_csc_clip_en:1; |
---|
| 573 | + uint32_t user_close_fence:1; |
---|
| 574 | +}; |
---|
| 575 | + |
---|
510 | 576 | struct rga_req { |
---|
511 | 577 | /* (enum) process mode sel */ |
---|
512 | 578 | uint8_t render_mode; |
---|
.. | .. |
---|
563 | 629 | /* porter duff alpha mode sel */ |
---|
564 | 630 | uint8_t PD_mode; |
---|
565 | 631 | |
---|
566 | | - /* global alpha value */ |
---|
| 632 | + /* legacy: global alpha value */ |
---|
567 | 633 | uint8_t alpha_global_value; |
---|
568 | 634 | |
---|
569 | 635 | /* rop2/3/4 code scan from rop code table*/ |
---|
.. | .. |
---|
625 | 691 | |
---|
626 | 692 | struct rga_pre_intr_info pre_intr_info; |
---|
627 | 693 | |
---|
628 | | - uint8_t reservr[59]; |
---|
| 694 | + /* global alpha */ |
---|
| 695 | + uint8_t fg_global_alpha; |
---|
| 696 | + uint8_t bg_global_alpha; |
---|
| 697 | + |
---|
| 698 | + struct rga_feature feature; |
---|
| 699 | + |
---|
| 700 | + struct rga_csc_clip full_csc_clip; |
---|
| 701 | + |
---|
| 702 | + uint8_t reservr[43]; |
---|
| 703 | +}; |
---|
| 704 | + |
---|
| 705 | +struct rga_alpha_config { |
---|
| 706 | + bool enable; |
---|
| 707 | + bool fg_pre_multiplied; |
---|
| 708 | + bool bg_pre_multiplied; |
---|
| 709 | + bool fg_pixel_alpha_en; |
---|
| 710 | + bool bg_pixel_alpha_en; |
---|
| 711 | + bool fg_global_alpha_en; |
---|
| 712 | + bool bg_global_alpha_en; |
---|
| 713 | + uint16_t fg_global_alpha_value; |
---|
| 714 | + uint16_t bg_global_alpha_value; |
---|
| 715 | + enum rga_alpha_blend_mode mode; |
---|
629 | 716 | }; |
---|
630 | 717 | |
---|
631 | 718 | struct rga2_req { |
---|
.. | .. |
---|
672 | 759 | /* ([7] = 1 gradient fill mode sel) */ |
---|
673 | 760 | u16 alpha_rop_flag; |
---|
674 | 761 | |
---|
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; |
---|
| 762 | + struct rga_alpha_config alpha_config; |
---|
698 | 763 | |
---|
699 | 764 | /* 0 1 2 3 */ |
---|
700 | 765 | u8 scale_bicu_mode; |
---|
.. | .. |
---|
782 | 847 | |
---|
783 | 848 | u16 alpha_rop_flag; |
---|
784 | 849 | |
---|
785 | | - u16 alpha_mode_0; |
---|
786 | | - u16 alpha_mode_1; |
---|
| 850 | + struct rga_alpha_config alpha_config; |
---|
| 851 | + |
---|
| 852 | + /* for abb mode presever alpha. */ |
---|
| 853 | + bool abb_alpha_pass; |
---|
787 | 854 | |
---|
788 | 855 | u8 scale_bicu_mode; |
---|
789 | 856 | |
---|