On 10/17/2025, Marek Vasut wrote:
> Add additional buffer format swizzling options beyond XR24, the
> hardware is capable of sampling other formats, fill them in.

This would make me change my patch series of adding i.MX8qxp DC
prefetch engine support, because that patch series supports only XR24.
But, I don't mind doing that as long as this doesn't support RG24 and
BG24.

> 
> Signed-off-by: Marek Vasut <[email protected]>

The subject prefix should be specific to "drm/imx: dc-plane:".

> ---
> Cc: Abel Vesa <[email protected]>
> Cc: Conor Dooley <[email protected]>
> Cc: Fabio Estevam <[email protected]>
> Cc: Krzysztof Kozlowski <[email protected]>
> Cc: Laurent Pinchart <[email protected]>
> Cc: Liu Ying <[email protected]>
> Cc: Lucas Stach <[email protected]>
> Cc: Peng Fan <[email protected]>
> Cc: Pengutronix Kernel Team <[email protected]>
> Cc: Rob Herring <[email protected]>
> Cc: Shawn Guo <[email protected]>
> Cc: Thomas Zimmermann <[email protected]>
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> ---
> Liu, please test on MX8qxp , I do not have that hardware.

I've tested XB24, RX24, BX24 and RG16 on i.MX8qxp MEK board.

> ---
>  drivers/gpu/drm/imx/dc/dc-fu.c    | 40 +++++++++++++++++++++++++++++++
>  drivers/gpu/drm/imx/dc/dc-plane.c |  8 +++++++
>  2 files changed, 48 insertions(+)
> 
> diff --git a/drivers/gpu/drm/imx/dc/dc-fu.c b/drivers/gpu/drm/imx/dc/dc-fu.c
> index 1d8f74babef8a..397af0e9b0236 100644
> --- a/drivers/gpu/drm/imx/dc/dc-fu.c
> +++ b/drivers/gpu/drm/imx/dc/dc-fu.c
> @@ -65,6 +65,46 @@ static const struct dc_fu_pixel_format pixel_formats[] = {
>               DRM_FORMAT_XRGB8888,
>               R_BITS(8)   | G_BITS(8)   | B_BITS(8)   | A_BITS(0),
>               R_SHIFT(16) | G_SHIFT(8)  | B_SHIFT(0)  | A_SHIFT(0),
> +     }, {
> +             DRM_FORMAT_ARGB8888,

Since we only support primary plane and this one contains alpha component,
I'd prefer to seeing it being supported when overlay plane is enabled in the
future, not now.

Same to the other formats with alpha component.

> +             R_BITS(8)   | G_BITS(8)   | B_BITS(8)   | A_BITS(8),
> +             R_SHIFT(16) | G_SHIFT(8)  | B_SHIFT(0)  | A_SHIFT(24),
> +     }, {
> +             DRM_FORMAT_ABGR8888,
> +             R_BITS(8)   | G_BITS(8)   | B_BITS(8)   | A_BITS(8),
> +             R_SHIFT(0)  | G_SHIFT(8)  | B_SHIFT(16) | A_SHIFT(24),
> +     }, {
> +             DRM_FORMAT_XBGR8888,
> +             R_BITS(8)   | G_BITS(8)   | B_BITS(8)   | A_BITS(0),
> +             R_SHIFT(0)  | G_SHIFT(8)  | B_SHIFT(16) | A_SHIFT(0),
> +     }, {
> +             DRM_FORMAT_RGBA8888,
> +             R_BITS(8)   | G_BITS(8)   | B_BITS(8)   | A_BITS(8),
> +             R_SHIFT(24) | G_SHIFT(16) | B_SHIFT(8)  | A_SHIFT(0),
> +     }, {
> +             DRM_FORMAT_RGBX8888,
> +             R_BITS(8)   | G_BITS(8)   | B_BITS(8)   | A_BITS(0),
> +             R_SHIFT(24) | G_SHIFT(16) | B_SHIFT(8)  | A_SHIFT(0),
> +     }, {
> +             DRM_FORMAT_BGRA8888,
> +             R_BITS(8)   | G_BITS(8)   | B_BITS(8)   | A_BITS(8),
> +             R_SHIFT(8)  | G_SHIFT(16) | B_SHIFT(24) | A_SHIFT(0),
> +     }, {
> +             DRM_FORMAT_BGRX8888,
> +             R_BITS(8)   | G_BITS(8)   | B_BITS(8)   | A_BITS(0),
> +             R_SHIFT(8)  | G_SHIFT(16) | B_SHIFT(24) | A_SHIFT(0),
> +     }, {
> +             DRM_FORMAT_RGB888,

This is not in dc_plane_formats[] below.

Also, I don't think the prefetch engines(DPRC + PRG) of i.MX8qxp/qm DC
support this pixel format, though the DC itself seems to support it(but
NXP downstream kernel doesn't support it).  So, in order not to support
bypassing the prefetch engines in runtime(which makes the driver a lot
more complicated), I hope that we don't bother to support it(even forever).

> +             R_BITS(8)   | G_BITS(8)   | B_BITS(8)   | A_BITS(0),
> +             R_SHIFT(16) | G_SHIFT(8)  | B_SHIFT(0)  | A_SHIFT(0),
> +     }, {
> +             DRM_FORMAT_BGR888,

Ditto.

> +             R_BITS(8)   | G_BITS(8)   | B_BITS(8)   | A_BITS(0),
> +             R_SHIFT(0)  | G_SHIFT(8)  | B_SHIFT(16) | A_SHIFT(0),
> +     }, {
> +             DRM_FORMAT_RGB565,
> +             R_BITS(5)   | G_BITS(6)   | B_BITS(5)   | A_BITS(0),
> +             R_SHIFT(11) | G_SHIFT(5)  | B_SHIFT(0)  | A_SHIFT(0),
>       },
>  };
>  
> diff --git a/drivers/gpu/drm/imx/dc/dc-plane.c 
> b/drivers/gpu/drm/imx/dc/dc-plane.c
> index e40d5d66c5c1f..68d32b76fab95 100644
> --- a/drivers/gpu/drm/imx/dc/dc-plane.c
> +++ b/drivers/gpu/drm/imx/dc/dc-plane.c
> @@ -33,6 +33,14 @@ do {                                                       
>                 \
>  
>  static const uint32_t dc_plane_formats[] = {
>       DRM_FORMAT_XRGB8888,
> +     DRM_FORMAT_ARGB8888,
> +     DRM_FORMAT_ABGR8888,
> +     DRM_FORMAT_XBGR8888,
> +     DRM_FORMAT_RGBA8888,
> +     DRM_FORMAT_RGBX8888,
> +     DRM_FORMAT_BGRA8888,
> +     DRM_FORMAT_BGRX8888,
> +     DRM_FORMAT_RGB565,

I suppose that this patch may support only the below formats for now.

+       DRM_FORMAT_XBGR8888,
+       DRM_FORMAT_RGBX8888,
+       DRM_FORMAT_BGRX8888,
+       DRM_FORMAT_RGB565,

>  };
>  
>  static const struct drm_plane_funcs dc_plane_funcs = {


-- 
Regards,
Liu Ying

Reply via email to