Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/msm/disp: simplify tiled RGB{,A,X} formats definitions

Define several additional macros, capturing tiled RGB format classes, in
order to simplify defining particular RGB* format.

Reviewed-by: Jessica Zhang <jessica.zhang@oss.qualcomm.com>
Patchwork: https://patchwork.freedesktop.org/patch/688169/
Link: https://lore.kernel.org/r/20251114-dpu-formats-v3-5-cae312379d49@oss.qualcomm.com
Tested-by: Luca Weiss <luca.weiss@fairphone.com> # qcm6490-fairphone-fp5
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>

+85 -33
+85 -33
drivers/gpu/drm/msm/disp/mdp_format.c
··· 163 163 .tile_height = MDP_TILE_HEIGHT_DEFAULT \ 164 164 } 165 165 166 - #define INTERLEAVED_RGB_FMT_TILED(fmt, a, r, g, b, e0, e1, e2, e3, uc, \ 167 - alpha, bp, flg) \ 166 + #define INTERLEAVED_RGB_FMT_TILED(fmt, bp, r, g, b, e0, e1, e2) \ 168 167 { \ 169 168 .pixel_format = DRM_FORMAT_ ## fmt, \ 170 169 .fetch_type = MDP_PLANE_INTERLEAVED, \ 171 - .alpha_enable = alpha, \ 170 + .alpha_enable = false, \ 171 + .element = { (e0), (e1), (e2), 0 }, \ 172 + .bpc_g_y = g, \ 173 + .bpc_b_cb = b, \ 174 + .bpc_r_cr = r, \ 175 + .bpc_a = 0, \ 176 + .chroma_sample = CHROMA_FULL, \ 177 + .unpack_count = 3, \ 178 + .bpp = bp, \ 179 + .fetch_mode = MDP_FETCH_UBWC, \ 180 + .flags = MSM_FORMAT_FLAG_UNPACK_TIGHT | \ 181 + MSM_FORMAT_FLAG_COMPRESSED, \ 182 + .num_planes = 2, \ 183 + .tile_height = MDP_TILE_HEIGHT_UBWC, \ 184 + } 185 + 186 + #define INTERLEAVED_RGBA_FMT_TILED(fmt, bp, a, r, g, b, e0, e1, e2, e3) \ 187 + { \ 188 + .pixel_format = DRM_FORMAT_ ## fmt, \ 189 + .fetch_type = MDP_PLANE_INTERLEAVED, \ 190 + .alpha_enable = true, \ 172 191 .element = { (e0), (e1), (e2), (e3) }, \ 173 192 .bpc_g_y = g, \ 174 193 .bpc_b_cb = b, \ 175 194 .bpc_r_cr = r, \ 176 195 .bpc_a = a, \ 177 196 .chroma_sample = CHROMA_FULL, \ 178 - .unpack_count = uc, \ 197 + .unpack_count = 4, \ 179 198 .bpp = bp, \ 180 199 .fetch_mode = MDP_FETCH_UBWC, \ 181 - .flags = MSM_FORMAT_FLAG_UNPACK_TIGHT | flg, \ 200 + .flags = MSM_FORMAT_FLAG_UNPACK_TIGHT | \ 201 + MSM_FORMAT_FLAG_COMPRESSED, \ 202 + .num_planes = 2, \ 203 + .tile_height = MDP_TILE_HEIGHT_UBWC, \ 204 + } 205 + 206 + #define INTERLEAVED_RGBX_FMT_TILED(fmt, bp, a, r, g, b, e0, e1, e2, e3) \ 207 + { \ 208 + .pixel_format = DRM_FORMAT_ ## fmt, \ 209 + .fetch_type = MDP_PLANE_INTERLEAVED, \ 210 + .alpha_enable = false, \ 211 + .element = { (e0), (e1), (e2), (e3) }, \ 212 + .bpc_g_y = g, \ 213 + .bpc_b_cb = b, \ 214 + .bpc_r_cr = r, \ 215 + .bpc_a = a, \ 216 + .chroma_sample = CHROMA_FULL, \ 217 + .unpack_count = 4, \ 218 + .bpp = bp, \ 219 + .fetch_mode = MDP_FETCH_UBWC, \ 220 + .flags = MSM_FORMAT_FLAG_UNPACK_TIGHT | \ 221 + MSM_FORMAT_FLAG_COMPRESSED, \ 222 + .num_planes = 2, \ 223 + .tile_height = MDP_TILE_HEIGHT_UBWC, \ 224 + } 225 + 226 + #define INTERLEAVED_RGBA_DX_FMT_TILED(fmt, bp, a, r, g, b, e0, e1, e2, e3) \ 227 + { \ 228 + .pixel_format = DRM_FORMAT_ ## fmt, \ 229 + .fetch_type = MDP_PLANE_INTERLEAVED, \ 230 + .alpha_enable = true, \ 231 + .element = { (e0), (e1), (e2), (e3) }, \ 232 + .bpc_g_y = g, \ 233 + .bpc_b_cb = b, \ 234 + .bpc_r_cr = r, \ 235 + .bpc_a = a, \ 236 + .chroma_sample = CHROMA_FULL, \ 237 + .unpack_count = 4, \ 238 + .bpp = bp, \ 239 + .fetch_mode = MDP_FETCH_UBWC, \ 240 + .flags = MSM_FORMAT_FLAG_UNPACK_TIGHT | \ 241 + MSM_FORMAT_FLAG_DX | \ 242 + MSM_FORMAT_FLAG_COMPRESSED, \ 182 243 .num_planes = 2, \ 183 244 .tile_height = MDP_TILE_HEIGHT_UBWC, \ 184 245 } ··· 586 525 * the data will be passed by user-space. 587 526 */ 588 527 static const struct msm_format mdp_formats_ubwc[] = { 589 - INTERLEAVED_RGB_FMT_TILED(BGR565, 590 - 0, BPC5, BPC6, BPC5, 591 - C2_R_Cr, C0_G_Y, C1_B_Cb, 0, 3, 592 - false, 2, MSM_FORMAT_FLAG_COMPRESSED), 528 + INTERLEAVED_RGB_FMT_TILED(BGR565, 2, 529 + BPC5, BPC6, BPC5, 530 + C2_R_Cr, C0_G_Y, C1_B_Cb), 593 531 594 - INTERLEAVED_RGB_FMT_TILED(ABGR8888, 532 + INTERLEAVED_RGBA_FMT_TILED(ABGR8888, 4, 595 533 BPC8A, BPC8, BPC8, BPC8, 596 - C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA, 4, 597 - true, 4, MSM_FORMAT_FLAG_COMPRESSED), 534 + C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA), 598 535 599 536 /* ARGB8888 and ABGR8888 purposely have the same color 600 537 * ordering. The hardware only supports ABGR8888 UBWC 601 538 * natively. 602 539 */ 603 - INTERLEAVED_RGB_FMT_TILED(ARGB8888, 540 + INTERLEAVED_RGBA_FMT_TILED(ARGB8888, 4, 604 541 BPC8A, BPC8, BPC8, BPC8, 605 - C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA, 4, 606 - true, 4, MSM_FORMAT_FLAG_COMPRESSED), 542 + C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA), 607 543 608 - INTERLEAVED_RGB_FMT_TILED(XBGR8888, 544 + INTERLEAVED_RGBX_FMT_TILED(XBGR8888, 4, 609 545 BPC8A, BPC8, BPC8, BPC8, 610 - C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA, 4, 611 - false, 4, MSM_FORMAT_FLAG_COMPRESSED), 546 + C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA), 612 547 613 - INTERLEAVED_RGB_FMT_TILED(XRGB8888, 548 + INTERLEAVED_RGBX_FMT_TILED(XRGB8888, 4, 614 549 BPC8A, BPC8, BPC8, BPC8, 615 - C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA, 4, 616 - false, 4, MSM_FORMAT_FLAG_COMPRESSED), 550 + C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA), 617 551 618 - INTERLEAVED_RGB_FMT_TILED(ABGR2101010, 552 + INTERLEAVED_RGBA_DX_FMT_TILED(ABGR2101010, 4, 619 553 BPC8A, BPC8, BPC8, BPC8, 620 - C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA, 4, 621 - true, 4, MSM_FORMAT_FLAG_DX | MSM_FORMAT_FLAG_COMPRESSED), 554 + C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA), 622 555 623 - INTERLEAVED_RGB_FMT_TILED(XBGR2101010, 556 + INTERLEAVED_RGBA_DX_FMT_TILED(XBGR2101010, 4, 624 557 BPC8A, BPC8, BPC8, BPC8, 625 - C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA, 4, 626 - true, 4, MSM_FORMAT_FLAG_DX | MSM_FORMAT_FLAG_COMPRESSED), 558 + C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA), 627 559 628 - INTERLEAVED_RGB_FMT_TILED(XRGB2101010, 560 + INTERLEAVED_RGBA_DX_FMT_TILED(XRGB2101010, 4, 629 561 BPC8A, BPC8, BPC8, BPC8, 630 - C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA, 4, 631 - true, 4, MSM_FORMAT_FLAG_DX | MSM_FORMAT_FLAG_COMPRESSED), 562 + C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA), 632 563 633 564 /* XRGB2101010 and ARGB2101010 purposely have the same color 634 565 * ordering. The hardware only supports ARGB2101010 UBWC 635 566 * natively. 636 567 */ 637 - INTERLEAVED_RGB_FMT_TILED(ARGB2101010, 568 + INTERLEAVED_RGBA_DX_FMT_TILED(ARGB2101010, 4, 638 569 BPC8A, BPC8, BPC8, BPC8, 639 - C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA, 4, 640 - true, 4, MSM_FORMAT_FLAG_DX | MSM_FORMAT_FLAG_COMPRESSED), 570 + C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA), 641 571 642 572 PSEUDO_YUV_FMT_TILED(NV12, 643 573 0, BPC8, BPC8, BPC8,