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