* [PATCH v2] drm/imx: dc-plane: Add more RGB swizzling options
@ 2025-11-02 16:23 Marek Vasut
2025-11-04 3:09 ` Liu Ying
0 siblings, 1 reply; 4+ messages in thread
From: Marek Vasut @ 2025-11-02 16:23 UTC (permalink / raw)
To: dri-devel
Cc: Marek Vasut, Abel Vesa, Conor Dooley, Fabio Estevam,
Krzysztof Kozlowski, Laurent Pinchart, Liu Ying, Lucas Stach,
Peng Fan, Pengutronix Kernel Team, Rob Herring, Shawn Guo,
Thomas Zimmermann, devicetree, imx, linux-arm-kernel, linux-clk
Add additional buffer format swizzling options beyond XR24, the
hardware is capable of sampling other formats, fill them in.
Signed-off-by: Marek Vasut <marek.vasut@mailbox.org>
---
Cc: Abel Vesa <abelvesa@kernel.org>
Cc: Conor Dooley <conor+dt@kernel.org>
Cc: Fabio Estevam <festevam@gmail.com>
Cc: Krzysztof Kozlowski <krzk+dt@kernel.org>
Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
Cc: Liu Ying <victor.liu@nxp.com>
Cc: Lucas Stach <l.stach@pengutronix.de>
Cc: Peng Fan <peng.fan@nxp.com>
Cc: Pengutronix Kernel Team <kernel@pengutronix.de>
Cc: Rob Herring <robh@kernel.org>
Cc: Shawn Guo <shawnguo@kernel.org>
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: devicetree@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Cc: imx@lists.linux.dev
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-clk@vger.kernel.org
---
V2: - Adjust commit subject
- Drop the alpha formats for now, add RGB888/BGR888 to dc_plane_formats[]
---
drivers/gpu/drm/imx/dc/dc-fu.c | 24 ++++++++++++++++++++++++
drivers/gpu/drm/imx/dc/dc-plane.c | 6 ++++++
2 files changed, 30 insertions(+)
diff --git a/drivers/gpu/drm/imx/dc/dc-fu.c b/drivers/gpu/drm/imx/dc/dc-fu.c
index 1d8f74babef8a..b4a3f8c58cbb0 100644
--- a/drivers/gpu/drm/imx/dc/dc-fu.c
+++ b/drivers/gpu/drm/imx/dc/dc-fu.c
@@ -65,6 +65,30 @@ 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_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_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_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,
+ 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,
+ 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..4fd58afef16bb 100644
--- a/drivers/gpu/drm/imx/dc/dc-plane.c
+++ b/drivers/gpu/drm/imx/dc/dc-plane.c
@@ -33,6 +33,12 @@ do { \
static const uint32_t dc_plane_formats[] = {
DRM_FORMAT_XRGB8888,
+ DRM_FORMAT_XBGR8888,
+ DRM_FORMAT_RGBX8888,
+ DRM_FORMAT_BGRX8888,
+ DRM_FORMAT_RGB888,
+ DRM_FORMAT_BGR888,
+ DRM_FORMAT_RGB565,
};
static const struct drm_plane_funcs dc_plane_funcs = {
--
2.51.0
^ permalink raw reply related [flat|nested] 4+ messages in thread* Re: [PATCH v2] drm/imx: dc-plane: Add more RGB swizzling options
2025-11-02 16:23 [PATCH v2] drm/imx: dc-plane: Add more RGB swizzling options Marek Vasut
@ 2025-11-04 3:09 ` Liu Ying
2025-11-04 3:15 ` Marek Vasut
0 siblings, 1 reply; 4+ messages in thread
From: Liu Ying @ 2025-11-04 3:09 UTC (permalink / raw)
To: Marek Vasut, dri-devel
Cc: Abel Vesa, Conor Dooley, Fabio Estevam, Krzysztof Kozlowski,
Laurent Pinchart, Lucas Stach, Peng Fan, Pengutronix Kernel Team,
Rob Herring, Shawn Guo, Thomas Zimmermann, devicetree, imx,
linux-arm-kernel, linux-clk
On 11/3/25 00:23, Marek Vasut wrote:
> Add additional buffer format swizzling options beyond XR24, the
> hardware is capable of sampling other formats, fill them in.
>
> Signed-off-by: Marek Vasut <marek.vasut@mailbox.org>
> ---
> Cc: Abel Vesa <abelvesa@kernel.org>
> Cc: Conor Dooley <conor+dt@kernel.org>
> Cc: Fabio Estevam <festevam@gmail.com>
> Cc: Krzysztof Kozlowski <krzk+dt@kernel.org>
> Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
> Cc: Liu Ying <victor.liu@nxp.com>
> Cc: Lucas Stach <l.stach@pengutronix.de>
> Cc: Peng Fan <peng.fan@nxp.com>
> Cc: Pengutronix Kernel Team <kernel@pengutronix.de>
> Cc: Rob Herring <robh@kernel.org>
> Cc: Shawn Guo <shawnguo@kernel.org>
> Cc: Thomas Zimmermann <tzimmermann@suse.de>
> Cc: devicetree@vger.kernel.org
> Cc: dri-devel@lists.freedesktop.org
> Cc: imx@lists.linux.dev
> Cc: linux-arm-kernel@lists.infradead.org
> Cc: linux-clk@vger.kernel.org
> ---
> V2: - Adjust commit subject
> - Drop the alpha formats for now, add RGB888/BGR888 to dc_plane_formats[]
> ---
> drivers/gpu/drm/imx/dc/dc-fu.c | 24 ++++++++++++++++++++++++
> drivers/gpu/drm/imx/dc/dc-plane.c | 6 ++++++
> 2 files changed, 30 insertions(+)
>
> diff --git a/drivers/gpu/drm/imx/dc/dc-fu.c b/drivers/gpu/drm/imx/dc/dc-fu.c
> index 1d8f74babef8a..b4a3f8c58cbb0 100644
> --- a/drivers/gpu/drm/imx/dc/dc-fu.c
> +++ b/drivers/gpu/drm/imx/dc/dc-fu.c
> @@ -65,6 +65,30 @@ 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_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_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_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,
> + 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,
> + 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..4fd58afef16bb 100644
> --- a/drivers/gpu/drm/imx/dc/dc-plane.c
> +++ b/drivers/gpu/drm/imx/dc/dc-plane.c
> @@ -33,6 +33,12 @@ do { \
>
> static const uint32_t dc_plane_formats[] = {
> DRM_FORMAT_XRGB8888,
> + DRM_FORMAT_XBGR8888,
> + DRM_FORMAT_RGBX8888,
> + DRM_FORMAT_BGRX8888,
> + DRM_FORMAT_RGB888,
> + DRM_FORMAT_BGR888,
Can you please drop the above two formats, as I said in v1 comment that it
would the driver a lot more complicated when prefetch engines are added?
> + DRM_FORMAT_RGB565,
> };
>
> static const struct drm_plane_funcs dc_plane_funcs = {
--
Regards,
Liu Ying
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH v2] drm/imx: dc-plane: Add more RGB swizzling options
2025-11-04 3:09 ` Liu Ying
@ 2025-11-04 3:15 ` Marek Vasut
2025-11-04 6:01 ` Liu Ying
0 siblings, 1 reply; 4+ messages in thread
From: Marek Vasut @ 2025-11-04 3:15 UTC (permalink / raw)
To: Liu Ying, dri-devel
Cc: Abel Vesa, Conor Dooley, Fabio Estevam, Krzysztof Kozlowski,
Laurent Pinchart, Lucas Stach, Peng Fan, Pengutronix Kernel Team,
Rob Herring, Shawn Guo, Thomas Zimmermann, devicetree, imx,
linux-arm-kernel, linux-clk
On 11/4/25 4:09 AM, Liu Ying wrote:
> On 11/3/25 00:23, Marek Vasut wrote:
>> Add additional buffer format swizzling options beyond XR24, the
>> hardware is capable of sampling other formats, fill them in.
>>
>> Signed-off-by: Marek Vasut <marek.vasut@mailbox.org>
>> ---
>> Cc: Abel Vesa <abelvesa@kernel.org>
>> Cc: Conor Dooley <conor+dt@kernel.org>
>> Cc: Fabio Estevam <festevam@gmail.com>
>> Cc: Krzysztof Kozlowski <krzk+dt@kernel.org>
>> Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
>> Cc: Liu Ying <victor.liu@nxp.com>
>> Cc: Lucas Stach <l.stach@pengutronix.de>
>> Cc: Peng Fan <peng.fan@nxp.com>
>> Cc: Pengutronix Kernel Team <kernel@pengutronix.de>
>> Cc: Rob Herring <robh@kernel.org>
>> Cc: Shawn Guo <shawnguo@kernel.org>
>> Cc: Thomas Zimmermann <tzimmermann@suse.de>
>> Cc: devicetree@vger.kernel.org
>> Cc: dri-devel@lists.freedesktop.org
>> Cc: imx@lists.linux.dev
>> Cc: linux-arm-kernel@lists.infradead.org
>> Cc: linux-clk@vger.kernel.org
>> ---
>> V2: - Adjust commit subject
>> - Drop the alpha formats for now, add RGB888/BGR888 to dc_plane_formats[]
>> ---
>> drivers/gpu/drm/imx/dc/dc-fu.c | 24 ++++++++++++++++++++++++
>> drivers/gpu/drm/imx/dc/dc-plane.c | 6 ++++++
>> 2 files changed, 30 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/imx/dc/dc-fu.c b/drivers/gpu/drm/imx/dc/dc-fu.c
>> index 1d8f74babef8a..b4a3f8c58cbb0 100644
>> --- a/drivers/gpu/drm/imx/dc/dc-fu.c
>> +++ b/drivers/gpu/drm/imx/dc/dc-fu.c
>> @@ -65,6 +65,30 @@ 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_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_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_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,
>> + 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,
>> + 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..4fd58afef16bb 100644
>> --- a/drivers/gpu/drm/imx/dc/dc-plane.c
>> +++ b/drivers/gpu/drm/imx/dc/dc-plane.c
>> @@ -33,6 +33,12 @@ do { \
>>
>> static const uint32_t dc_plane_formats[] = {
>> DRM_FORMAT_XRGB8888,
>> + DRM_FORMAT_XBGR8888,
>> + DRM_FORMAT_RGBX8888,
>> + DRM_FORMAT_BGRX8888,
>> + DRM_FORMAT_RGB888,
>> + DRM_FORMAT_BGR888,
>
> Can you please drop the above two formats, as I said in v1 comment that it
> would the driver a lot more complicated when prefetch engines are added?
Can you elaborate on that ? RGB888 is not packed and should be similar
to RGBX8888, what kind of problem with prefetch would this cause ?
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH v2] drm/imx: dc-plane: Add more RGB swizzling options
2025-11-04 3:15 ` Marek Vasut
@ 2025-11-04 6:01 ` Liu Ying
0 siblings, 0 replies; 4+ messages in thread
From: Liu Ying @ 2025-11-04 6:01 UTC (permalink / raw)
To: Marek Vasut, dri-devel
Cc: Abel Vesa, Conor Dooley, Fabio Estevam, Krzysztof Kozlowski,
Laurent Pinchart, Lucas Stach, Peng Fan, Pengutronix Kernel Team,
Rob Herring, Shawn Guo, Thomas Zimmermann, devicetree, imx,
linux-arm-kernel, linux-clk
On 11/04/2025, Marek Vasut wrote:
> On 11/4/25 4:09 AM, Liu Ying wrote:
>> On 11/3/25 00:23, Marek Vasut wrote:
>>> Add additional buffer format swizzling options beyond XR24, the
>>> hardware is capable of sampling other formats, fill them in.
>>>
>>> Signed-off-by: Marek Vasut <marek.vasut@mailbox.org>
>>> ---
>>> Cc: Abel Vesa <abelvesa@kernel.org>
>>> Cc: Conor Dooley <conor+dt@kernel.org>
>>> Cc: Fabio Estevam <festevam@gmail.com>
>>> Cc: Krzysztof Kozlowski <krzk+dt@kernel.org>
>>> Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
>>> Cc: Liu Ying <victor.liu@nxp.com>
>>> Cc: Lucas Stach <l.stach@pengutronix.de>
>>> Cc: Peng Fan <peng.fan@nxp.com>
>>> Cc: Pengutronix Kernel Team <kernel@pengutronix.de>
>>> Cc: Rob Herring <robh@kernel.org>
>>> Cc: Shawn Guo <shawnguo@kernel.org>
>>> Cc: Thomas Zimmermann <tzimmermann@suse.de>
>>> Cc: devicetree@vger.kernel.org
>>> Cc: dri-devel@lists.freedesktop.org
>>> Cc: imx@lists.linux.dev
>>> Cc: linux-arm-kernel@lists.infradead.org
>>> Cc: linux-clk@vger.kernel.org
>>> ---
>>> V2: - Adjust commit subject
>>> - Drop the alpha formats for now, add RGB888/BGR888 to dc_plane_formats[]
>>> ---
>>> drivers/gpu/drm/imx/dc/dc-fu.c | 24 ++++++++++++++++++++++++
>>> drivers/gpu/drm/imx/dc/dc-plane.c | 6 ++++++
>>> 2 files changed, 30 insertions(+)
>>>
>>> diff --git a/drivers/gpu/drm/imx/dc/dc-fu.c b/drivers/gpu/drm/imx/dc/dc-fu.c
>>> index 1d8f74babef8a..b4a3f8c58cbb0 100644
>>> --- a/drivers/gpu/drm/imx/dc/dc-fu.c
>>> +++ b/drivers/gpu/drm/imx/dc/dc-fu.c
>>> @@ -65,6 +65,30 @@ 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_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_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_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,
>>> + 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,
>>> + 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..4fd58afef16bb 100644
>>> --- a/drivers/gpu/drm/imx/dc/dc-plane.c
>>> +++ b/drivers/gpu/drm/imx/dc/dc-plane.c
>>> @@ -33,6 +33,12 @@ do { \
>>> static const uint32_t dc_plane_formats[] = {
>>> DRM_FORMAT_XRGB8888,
>>> + DRM_FORMAT_XBGR8888,
>>> + DRM_FORMAT_RGBX8888,
>>> + DRM_FORMAT_BGRX8888,
>>> + DRM_FORMAT_RGB888,
>>> + DRM_FORMAT_BGR888,
>>
>> Can you please drop the above two formats, as I said in v1 comment that it
>> would the driver a lot more complicated when prefetch engines are added?
>
> Can you elaborate on that ? RGB888 is not packed and should be similar to
> RGBX8888, what kind of problem with prefetch would this cause ?
As I mentioned in v1 comment, prefetch engines don't support these two formats.
For example, if you want to switch formats between DRM_FORMAT_XRGB8888 and
DRM_FORMAT_RGB888, then display driver needs to support enabling prefetch
engine and bypassing prefetch engine, plus disabling display controller
properly w/wo prefetch engine. Also, primary and overlay planes may use
different formats. This adds branches to display driver and hence a lot more
complicated. So, please set these two formats aside first. Prefetch engine
has attractive tile resolving feature. If you really want to support these
two formats, revisit after prefetch engine is added(I hope I don't need to
go into that rabbit hole).
--
Regards,
Liu Ying
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2025-11-04 6:00 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-11-02 16:23 [PATCH v2] drm/imx: dc-plane: Add more RGB swizzling options Marek Vasut
2025-11-04 3:09 ` Liu Ying
2025-11-04 3:15 ` Marek Vasut
2025-11-04 6:01 ` Liu Ying
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).