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 RGB{,A,X} formats definitions

Define several additional macros, capturing 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/688168/
Link: https://lore.kernel.org/r/20251114-dpu-formats-v3-4-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>

+158 -117
+158 -117
drivers/gpu/drm/msm/disp/mdp_format.c
··· 66 66 #define MDP_TILE_HEIGHT_UBWC 4 67 67 #define MDP_TILE_HEIGHT_NV12 8 68 68 69 - #define INTERLEAVED_RGB_FMT(fmt, a, r, g, b, e0, e1, e2, e3, uc, alpha, \ 70 - bp, flg) \ 69 + #define INTERLEAVED_RGB_FMT(fmt, bp, r, g, b, e0, e1, e2) \ 71 70 { \ 72 71 .pixel_format = DRM_FORMAT_ ## fmt, \ 73 72 .fetch_type = MDP_PLANE_INTERLEAVED, \ 74 - .alpha_enable = alpha, \ 73 + .alpha_enable = false, \ 74 + .element = { (e0), (e1), (e2), 0 }, \ 75 + .bpc_g_y = g, \ 76 + .bpc_b_cb = b, \ 77 + .bpc_r_cr = r, \ 78 + .bpc_a = 0, \ 79 + .chroma_sample = CHROMA_FULL, \ 80 + .unpack_count = 3, \ 81 + .bpp = bp, \ 82 + .fetch_mode = MDP_FETCH_LINEAR, \ 83 + .flags = MSM_FORMAT_FLAG_UNPACK_TIGHT, \ 84 + .num_planes = 1, \ 85 + .tile_height = MDP_TILE_HEIGHT_DEFAULT \ 86 + } 87 + 88 + #define INTERLEAVED_RGBA_FMT(fmt, bp, a, r, g, b, e0, e1, e2, e3) \ 89 + { \ 90 + .pixel_format = DRM_FORMAT_ ## fmt, \ 91 + .fetch_type = MDP_PLANE_INTERLEAVED, \ 92 + .alpha_enable = true, \ 75 93 .element = { (e0), (e1), (e2), (e3) }, \ 76 94 .bpc_g_y = g, \ 77 95 .bpc_b_cb = b, \ 78 96 .bpc_r_cr = r, \ 79 97 .bpc_a = a, \ 80 98 .chroma_sample = CHROMA_FULL, \ 81 - .unpack_count = uc, \ 99 + .unpack_count = 4, \ 82 100 .bpp = bp, \ 83 101 .fetch_mode = MDP_FETCH_LINEAR, \ 84 - .flags = MSM_FORMAT_FLAG_UNPACK_TIGHT | flg, \ 102 + .flags = MSM_FORMAT_FLAG_UNPACK_TIGHT, \ 103 + .num_planes = 1, \ 104 + .tile_height = MDP_TILE_HEIGHT_DEFAULT \ 105 + } 106 + 107 + #define INTERLEAVED_RGBX_FMT(fmt, bp, a, r, g, b, e0, e1, e2, e3) \ 108 + { \ 109 + .pixel_format = DRM_FORMAT_ ## fmt, \ 110 + .fetch_type = MDP_PLANE_INTERLEAVED, \ 111 + .alpha_enable = false, \ 112 + .element = { (e0), (e1), (e2), (e3) }, \ 113 + .bpc_g_y = g, \ 114 + .bpc_b_cb = b, \ 115 + .bpc_r_cr = r, \ 116 + .bpc_a = a, \ 117 + .chroma_sample = CHROMA_FULL, \ 118 + .unpack_count = 4, \ 119 + .bpp = bp, \ 120 + .fetch_mode = MDP_FETCH_LINEAR, \ 121 + .flags = MSM_FORMAT_FLAG_UNPACK_TIGHT, \ 122 + .num_planes = 1, \ 123 + .tile_height = MDP_TILE_HEIGHT_DEFAULT \ 124 + } 125 + 126 + #define INTERLEAVED_RGBA_DX_FMT(fmt, bp, a, r, g, b, e0, e1, e2, e3) \ 127 + { \ 128 + .pixel_format = DRM_FORMAT_ ## fmt, \ 129 + .fetch_type = MDP_PLANE_INTERLEAVED, \ 130 + .alpha_enable = true, \ 131 + .element = { (e0), (e1), (e2), (e3) }, \ 132 + .bpc_g_y = g, \ 133 + .bpc_b_cb = b, \ 134 + .bpc_r_cr = r, \ 135 + .bpc_a = a, \ 136 + .chroma_sample = CHROMA_FULL, \ 137 + .unpack_count = 4, \ 138 + .bpp = bp, \ 139 + .fetch_mode = MDP_FETCH_LINEAR, \ 140 + .flags = MSM_FORMAT_FLAG_UNPACK_TIGHT | \ 141 + MSM_FORMAT_FLAG_DX, \ 142 + .num_planes = 1, \ 143 + .tile_height = MDP_TILE_HEIGHT_DEFAULT \ 144 + } 145 + 146 + #define INTERLEAVED_RGBX_DX_FMT(fmt, bp, a, r, g, b, e0, e1, e2, e3) \ 147 + { \ 148 + .pixel_format = DRM_FORMAT_ ## fmt, \ 149 + .fetch_type = MDP_PLANE_INTERLEAVED, \ 150 + .alpha_enable = false, \ 151 + .element = { (e0), (e1), (e2), (e3) }, \ 152 + .bpc_g_y = g, \ 153 + .bpc_b_cb = b, \ 154 + .bpc_r_cr = r, \ 155 + .bpc_a = a, \ 156 + .chroma_sample = CHROMA_FULL, \ 157 + .unpack_count = 4, \ 158 + .bpp = bp, \ 159 + .fetch_mode = MDP_FETCH_LINEAR, \ 160 + .flags = MSM_FORMAT_FLAG_UNPACK_TIGHT | \ 161 + MSM_FORMAT_FLAG_DX, \ 85 162 .num_planes = 1, \ 86 163 .tile_height = MDP_TILE_HEIGHT_DEFAULT \ 87 164 } ··· 302 225 } 303 226 304 227 static const struct msm_format mdp_formats[] = { 305 - INTERLEAVED_RGB_FMT(ARGB8888, 228 + INTERLEAVED_RGBA_FMT(ARGB8888, 4, 306 229 BPC8A, BPC8, BPC8, BPC8, 307 - C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA, 4, 308 - true, 4, 0), 230 + C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA), 309 231 310 - INTERLEAVED_RGB_FMT(ABGR8888, 232 + INTERLEAVED_RGBA_FMT(ABGR8888, 4, 311 233 BPC8A, BPC8, BPC8, BPC8, 312 - C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA, 4, 313 - true, 4, 0), 234 + C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA), 314 235 315 - INTERLEAVED_RGB_FMT(XBGR8888, 236 + INTERLEAVED_RGBX_FMT(XBGR8888, 4, 316 237 BPC8A, BPC8, BPC8, BPC8, 317 - C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA, 4, 318 - false, 4, 0), 238 + C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA), 319 239 320 - INTERLEAVED_RGB_FMT(RGBA8888, 240 + INTERLEAVED_RGBA_FMT(RGBA8888, 4, 321 241 BPC8A, BPC8, BPC8, BPC8, 322 - C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr, 4, 323 - true, 4, 0), 242 + C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr), 324 243 325 - INTERLEAVED_RGB_FMT(BGRA8888, 244 + INTERLEAVED_RGBA_FMT(BGRA8888, 4, 326 245 BPC8A, BPC8, BPC8, BPC8, 327 - C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb, 4, 328 - true, 4, 0), 246 + C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb), 329 247 330 - INTERLEAVED_RGB_FMT(BGRX8888, 248 + INTERLEAVED_RGBX_FMT(BGRX8888, 4, 331 249 BPC8A, BPC8, BPC8, BPC8, 332 - C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb, 4, 333 - false, 4, 0), 250 + C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb), 334 251 335 - INTERLEAVED_RGB_FMT(XRGB8888, 252 + INTERLEAVED_RGBX_FMT(XRGB8888, 4, 336 253 BPC8A, BPC8, BPC8, BPC8, 337 - C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA, 4, 338 - false, 4, 0), 254 + C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA), 339 255 340 - INTERLEAVED_RGB_FMT(RGBX8888, 256 + INTERLEAVED_RGBX_FMT(RGBX8888, 4, 341 257 BPC8A, BPC8, BPC8, BPC8, 342 - C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr, 4, 343 - false, 4, 0), 258 + C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr), 344 259 345 - INTERLEAVED_RGB_FMT(RGB888, 346 - 0, BPC8, BPC8, BPC8, 347 - C1_B_Cb, C0_G_Y, C2_R_Cr, 0, 3, 348 - false, 3, 0), 260 + INTERLEAVED_RGB_FMT(RGB888, 3, 261 + BPC8, BPC8, BPC8, 262 + C1_B_Cb, C0_G_Y, C2_R_Cr), 349 263 350 - INTERLEAVED_RGB_FMT(BGR888, 351 - 0, BPC8, BPC8, BPC8, 352 - C2_R_Cr, C0_G_Y, C1_B_Cb, 0, 3, 353 - false, 3, 0), 264 + INTERLEAVED_RGB_FMT(BGR888, 3, 265 + BPC8, BPC8, BPC8, 266 + C2_R_Cr, C0_G_Y, C1_B_Cb), 354 267 355 - INTERLEAVED_RGB_FMT(RGB565, 356 - 0, BPC5, BPC6, BPC5, 357 - C1_B_Cb, C0_G_Y, C2_R_Cr, 0, 3, 358 - false, 2, 0), 268 + INTERLEAVED_RGB_FMT(RGB565, 2, 269 + BPC5, BPC6, BPC5, 270 + C1_B_Cb, C0_G_Y, C2_R_Cr), 359 271 360 - INTERLEAVED_RGB_FMT(BGR565, 361 - 0, BPC5, BPC6, BPC5, 362 - C2_R_Cr, C0_G_Y, C1_B_Cb, 0, 3, 363 - false, 2, 0), 272 + INTERLEAVED_RGB_FMT(BGR565, 2, 273 + BPC5, BPC6, BPC5, 274 + C2_R_Cr, C0_G_Y, C1_B_Cb), 364 275 365 - INTERLEAVED_RGB_FMT(ARGB1555, 276 + INTERLEAVED_RGBA_FMT(ARGB1555, 2, 366 277 BPC1A, BPC5, BPC5, BPC5, 367 - C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA, 4, 368 - true, 2, 0), 278 + C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA), 369 279 370 - INTERLEAVED_RGB_FMT(ABGR1555, 280 + INTERLEAVED_RGBA_FMT(ABGR1555, 2, 371 281 BPC1A, BPC5, BPC5, BPC5, 372 - C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA, 4, 373 - true, 2, 0), 282 + C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA), 374 283 375 - INTERLEAVED_RGB_FMT(RGBA5551, 284 + INTERLEAVED_RGBA_FMT(RGBA5551, 2, 376 285 BPC1A, BPC5, BPC5, BPC5, 377 - C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr, 4, 378 - true, 2, 0), 286 + C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr), 379 287 380 - INTERLEAVED_RGB_FMT(BGRA5551, 288 + INTERLEAVED_RGBA_FMT(BGRA5551, 2, 381 289 BPC1A, BPC5, BPC5, BPC5, 382 - C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb, 4, 383 - true, 2, 0), 290 + C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb), 384 291 385 - INTERLEAVED_RGB_FMT(XRGB1555, 292 + INTERLEAVED_RGBX_FMT(XRGB1555, 2, 386 293 BPC1A, BPC5, BPC5, BPC5, 387 - C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA, 4, 388 - false, 2, 0), 294 + C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA), 389 295 390 - INTERLEAVED_RGB_FMT(XBGR1555, 296 + INTERLEAVED_RGBX_FMT(XBGR1555, 2, 391 297 BPC1A, BPC5, BPC5, BPC5, 392 - C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA, 4, 393 - false, 2, 0), 298 + C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA), 394 299 395 - INTERLEAVED_RGB_FMT(RGBX5551, 300 + INTERLEAVED_RGBX_FMT(RGBX5551, 2, 396 301 BPC1A, BPC5, BPC5, BPC5, 397 - C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr, 4, 398 - false, 2, 0), 302 + C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr), 399 303 400 - INTERLEAVED_RGB_FMT(BGRX5551, 304 + INTERLEAVED_RGBX_FMT(BGRX5551, 2, 401 305 BPC1A, BPC5, BPC5, BPC5, 402 - C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb, 4, 403 - false, 2, 0), 306 + C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb), 404 307 405 - INTERLEAVED_RGB_FMT(ARGB4444, 308 + INTERLEAVED_RGBA_FMT(ARGB4444, 2, 406 309 BPC4A, BPC4, BPC4, BPC4, 407 - C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA, 4, 408 - true, 2, 0), 310 + C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA), 409 311 410 - INTERLEAVED_RGB_FMT(ABGR4444, 312 + INTERLEAVED_RGBA_FMT(ABGR4444, 2, 411 313 BPC4A, BPC4, BPC4, BPC4, 412 - C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA, 4, 413 - true, 2, 0), 314 + C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA), 414 315 415 - INTERLEAVED_RGB_FMT(RGBA4444, 316 + INTERLEAVED_RGBA_FMT(RGBA4444, 2, 416 317 BPC4A, BPC4, BPC4, BPC4, 417 - C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr, 4, 418 - true, 2, 0), 318 + C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr), 419 319 420 - INTERLEAVED_RGB_FMT(BGRA4444, 320 + INTERLEAVED_RGBA_FMT(BGRA4444, 2, 421 321 BPC4A, BPC4, BPC4, BPC4, 422 - C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb, 4, 423 - true, 2, 0), 322 + C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb), 424 323 425 - INTERLEAVED_RGB_FMT(XRGB4444, 324 + INTERLEAVED_RGBX_FMT(XRGB4444, 2, 426 325 BPC4A, BPC4, BPC4, BPC4, 427 - C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA, 4, 428 - false, 2, 0), 326 + C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA), 429 327 430 - INTERLEAVED_RGB_FMT(XBGR4444, 328 + INTERLEAVED_RGBX_FMT(XBGR4444, 2, 431 329 BPC4A, BPC4, BPC4, BPC4, 432 - C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA, 4, 433 - false, 2, 0), 330 + C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA), 434 331 435 - INTERLEAVED_RGB_FMT(RGBX4444, 332 + INTERLEAVED_RGBX_FMT(RGBX4444, 2, 436 333 BPC4A, BPC4, BPC4, BPC4, 437 - C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr, 4, 438 - false, 2, 0), 334 + C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr), 439 335 440 - INTERLEAVED_RGB_FMT(BGRX4444, 336 + INTERLEAVED_RGBX_FMT(BGRX4444, 2, 441 337 BPC4A, BPC4, BPC4, BPC4, 442 - C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb, 4, 443 - false, 2, 0), 338 + C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb), 444 339 445 - INTERLEAVED_RGB_FMT(BGRA1010102, 340 + INTERLEAVED_RGBA_DX_FMT(BGRA1010102, 4, 446 341 BPC8A, BPC8, BPC8, BPC8, 447 - C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb, 4, 448 - true, 4, MSM_FORMAT_FLAG_DX), 342 + C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb), 449 343 450 - INTERLEAVED_RGB_FMT(RGBA1010102, 344 + INTERLEAVED_RGBA_DX_FMT(RGBA1010102, 4, 451 345 BPC8A, BPC8, BPC8, BPC8, 452 - C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr, 4, 453 - true, 4, MSM_FORMAT_FLAG_DX), 346 + C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr), 454 347 455 - INTERLEAVED_RGB_FMT(ABGR2101010, 348 + INTERLEAVED_RGBA_DX_FMT(ABGR2101010, 4, 456 349 BPC8A, BPC8, BPC8, BPC8, 457 - C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA, 4, 458 - true, 4, MSM_FORMAT_FLAG_DX), 350 + C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA), 459 351 460 - INTERLEAVED_RGB_FMT(ARGB2101010, 352 + INTERLEAVED_RGBA_DX_FMT(ARGB2101010, 4, 461 353 BPC8A, BPC8, BPC8, BPC8, 462 - C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA, 4, 463 - true, 4, MSM_FORMAT_FLAG_DX), 354 + C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA), 464 355 465 - INTERLEAVED_RGB_FMT(XRGB2101010, 356 + INTERLEAVED_RGBX_DX_FMT(XRGB2101010, 4, 466 357 BPC8A, BPC8, BPC8, BPC8, 467 - C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA, 4, 468 - false, 4, MSM_FORMAT_FLAG_DX), 358 + C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA), 469 359 470 - INTERLEAVED_RGB_FMT(BGRX1010102, 360 + INTERLEAVED_RGBX_DX_FMT(BGRX1010102, 4, 471 361 BPC8A, BPC8, BPC8, BPC8, 472 - C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb, 4, 473 - false, 4, MSM_FORMAT_FLAG_DX), 362 + C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb), 474 363 475 - INTERLEAVED_RGB_FMT(XBGR2101010, 364 + INTERLEAVED_RGBX_DX_FMT(XBGR2101010, 4, 476 365 BPC8A, BPC8, BPC8, BPC8, 477 - C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA, 4, 478 - false, 4, MSM_FORMAT_FLAG_DX), 366 + C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA), 479 367 480 - INTERLEAVED_RGB_FMT(RGBX1010102, 368 + INTERLEAVED_RGBX_DX_FMT(RGBX1010102, 4, 481 369 BPC8A, BPC8, BPC8, BPC8, 482 - C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr, 4, 483 - false, 4, MSM_FORMAT_FLAG_DX), 370 + C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr), 484 371 485 372 /* --- RGB formats above / YUV formats below this line --- */ 486 373