* [PATCH] drm/modeset-helper: Add blend mode property to the legacy primary plane
@ 2026-09-02 3:12 oushixiong1025
2026-09-02 7:20 ` Thomas Zimmermann
0 siblings, 1 reply; 3+ messages in thread
From: oushixiong1025 @ 2026-09-02 3:12 UTC (permalink / raw)
To: Maarten Lankhorst
Cc: Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
dri-devel, linux-kernel, Shixiong Ou
From: Shixiong Ou <oushixiong@kylinos.cn>
The primary plane created by drm_crtc_init() exposes ARGB8888, which
has an alpha channel, but never gets a "pixel blend mode" property, so
drm_mode_config_validate() warns for every driver using this helper
(radeon, gma500, legacy amdgpu DCE). Advertise only
DRM_MODE_BLEND_PREMULTI, the mode userspace always assumed when the
property was absent.
Fixes: 860e748bddcc ("drm: ensure blend mode supported if pixel format with alpha exposed")
Signed-off-by: Shixiong Ou <oushixiong@kylinos.cn>
---
drivers/gpu/drm/drm_modeset_helper.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/drivers/gpu/drm/drm_modeset_helper.c b/drivers/gpu/drm/drm_modeset_helper.c
index e54584da4c3d..4c59e82af2f1 100644
--- a/drivers/gpu/drm/drm_modeset_helper.c
+++ b/drivers/gpu/drm/drm_modeset_helper.c
@@ -23,6 +23,7 @@
#include <linux/export.h>
#include <drm/drm_atomic_helper.h>
+#include <drm/drm_blend.h>
#include <drm/drm_client_event.h>
#include <drm/drm_fourcc.h>
#include <drm/drm_framebuffer.h>
@@ -160,6 +161,17 @@ int drm_crtc_init(struct drm_device *dev, struct drm_crtc *crtc,
*/
primary->format_default = true;
+ /*
+ * safe_modeset_formats[] includes ARGB8888, which has an alpha
+ * channel. Advertise the blend mode userspace has always assumed
+ * for such planes when the "pixel blend mode" property was absent,
+ * to satisfy drm_mode_config_validate().
+ */
+ ret = drm_plane_create_blend_mode_property(primary,
+ BIT(DRM_MODE_BLEND_PREMULTI));
+ if (ret)
+ goto err_drm_plane_cleanup;
+
ret = drm_crtc_init_with_planes(dev, crtc, primary, NULL, funcs, NULL);
if (ret)
goto err_drm_plane_cleanup;
--
2.25.1
No virus found
Checked by Hillstone Network AntiVirus
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] drm/modeset-helper: Add blend mode property to the legacy primary plane
2026-09-02 3:12 [PATCH] drm/modeset-helper: Add blend mode property to the legacy primary plane oushixiong1025
@ 2026-09-02 7:20 ` Thomas Zimmermann
2026-09-02 9:58 ` Shixiong Ou
0 siblings, 1 reply; 3+ messages in thread
From: Thomas Zimmermann @ 2026-09-02 7:20 UTC (permalink / raw)
To: oushixiong1025, Maarten Lankhorst
Cc: Maxime Ripard, David Airlie, Simona Vetter, dri-devel,
linux-kernel, Shixiong Ou
Hi
Am 02.09.26 um 05:12 schrieb oushixiong1025@163.com:
> From: Shixiong Ou <oushixiong@kylinos.cn>
>
> The primary plane created by drm_crtc_init() exposes ARGB8888, which
> has an alpha channel, but never gets a "pixel blend mode" property, so
> drm_mode_config_validate() warns for every driver using this helper
> (radeon, gma500, legacy amdgpu DCE). Advertise only
> DRM_MODE_BLEND_PREMULTI, the mode userspace always assumed when the
> property was absent.
I'd like to suggest a different strategy. The helper drm_crtc_init() is
deprecated and there are only 3 drivers left that call it: amdgpu,
gma500 and radeon. It would be better to make a series for each that
integrates the helper into the driver and adapts the format array to the
hardware/driver's actual functionality. For gma500 at least, I'm pretty
sure it does not support ARGB on its primary plane.
There's also work happening already for fixing amdgpu blend properties IIRC.
Best regards
Thomas
>
> Fixes: 860e748bddcc ("drm: ensure blend mode supported if pixel format with alpha exposed")
> Signed-off-by: Shixiong Ou <oushixiong@kylinos.cn>
> ---
> drivers/gpu/drm/drm_modeset_helper.c | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
>
> diff --git a/drivers/gpu/drm/drm_modeset_helper.c b/drivers/gpu/drm/drm_modeset_helper.c
> index e54584da4c3d..4c59e82af2f1 100644
> --- a/drivers/gpu/drm/drm_modeset_helper.c
> +++ b/drivers/gpu/drm/drm_modeset_helper.c
> @@ -23,6 +23,7 @@
> #include <linux/export.h>
>
> #include <drm/drm_atomic_helper.h>
> +#include <drm/drm_blend.h>
> #include <drm/drm_client_event.h>
> #include <drm/drm_fourcc.h>
> #include <drm/drm_framebuffer.h>
> @@ -160,6 +161,17 @@ int drm_crtc_init(struct drm_device *dev, struct drm_crtc *crtc,
> */
> primary->format_default = true;
>
> + /*
> + * safe_modeset_formats[] includes ARGB8888, which has an alpha
> + * channel. Advertise the blend mode userspace has always assumed
> + * for such planes when the "pixel blend mode" property was absent,
> + * to satisfy drm_mode_config_validate().
> + */
> + ret = drm_plane_create_blend_mode_property(primary,
> + BIT(DRM_MODE_BLEND_PREMULTI));
> + if (ret)
> + goto err_drm_plane_cleanup;
> +
> ret = drm_crtc_init_with_planes(dev, crtc, primary, NULL, funcs, NULL);
> if (ret)
> goto err_drm_plane_cleanup;
--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com
GF: Jochen Jaser, Andrew McDonald, (HRB 36809, AG Nürnberg)
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] drm/modeset-helper: Add blend mode property to the legacy primary plane
2026-09-02 7:20 ` Thomas Zimmermann
@ 2026-09-02 9:58 ` Shixiong Ou
0 siblings, 0 replies; 3+ messages in thread
From: Shixiong Ou @ 2026-09-02 9:58 UTC (permalink / raw)
To: Thomas Zimmermann, oushixiong1025, Maarten Lankhorst
Cc: Maxime Ripard, David Airlie, Simona Vetter, dri-devel,
linux-kernel
[-- Attachment #1: Type: text/plain, Size: 3078 bytes --]
Hi Thomas,
Thank you for your review.
Following your suggestion, I have withdrawn the original approach of
modifying the deprecated drm_crtc_init() helper. Instead, I have
prepared a new patch series that converts the remaining users of this
deprecated API (gma500, and radeon) to use drm_crtc_init_with_planes() directly.
The new series is now ready and I will be submitting it shortly.
Best regards
Shixiong
On 2026/9/2 15:20, Thomas Zimmermann wrote:
> Hi
>
> Am 02.09.26 um 05:12 schrieb oushixiong1025@163.com:
>> From: Shixiong Ou <oushixiong@kylinos.cn>
>>
>> The primary plane created by drm_crtc_init() exposes ARGB8888, which
>> has an alpha channel, but never gets a "pixel blend mode" property, so
>> drm_mode_config_validate() warns for every driver using this helper
>> (radeon, gma500, legacy amdgpu DCE). Advertise only
>> DRM_MODE_BLEND_PREMULTI, the mode userspace always assumed when the
>> property was absent.
>
> I'd like to suggest a different strategy. The helper drm_crtc_init()
> is deprecated and there are only 3 drivers left that call it: amdgpu,
> gma500 and radeon. It would be better to make a series for each that
> integrates the helper into the driver and adapts the format array to
> the hardware/driver's actual functionality. For gma500 at least, I'm
> pretty sure it does not support ARGB on its primary plane.
>
> There's also work happening already for fixing amdgpu blend properties
> IIRC.
>
> Best regards
> Thomas
>
>>
>> Fixes: 860e748bddcc ("drm: ensure blend mode supported if pixel
>> format with alpha exposed")
>> Signed-off-by: Shixiong Ou <oushixiong@kylinos.cn>
>> ---
>> drivers/gpu/drm/drm_modeset_helper.c | 12 ++++++++++++
>> 1 file changed, 12 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/drm_modeset_helper.c
>> b/drivers/gpu/drm/drm_modeset_helper.c
>> index e54584da4c3d..4c59e82af2f1 100644
>> --- a/drivers/gpu/drm/drm_modeset_helper.c
>> +++ b/drivers/gpu/drm/drm_modeset_helper.c
>> @@ -23,6 +23,7 @@
>> #include <linux/export.h>
>> #include <drm/drm_atomic_helper.h>
>> +#include <drm/drm_blend.h>
>> #include <drm/drm_client_event.h>
>> #include <drm/drm_fourcc.h>
>> #include <drm/drm_framebuffer.h>
>> @@ -160,6 +161,17 @@ int drm_crtc_init(struct drm_device *dev, struct
>> drm_crtc *crtc,
>> */
>> primary->format_default = true;
>> + /*
>> + * safe_modeset_formats[] includes ARGB8888, which has an alpha
>> + * channel. Advertise the blend mode userspace has always assumed
>> + * for such planes when the "pixel blend mode" property was absent,
>> + * to satisfy drm_mode_config_validate().
>> + */
>> + ret = drm_plane_create_blend_mode_property(primary,
>> + BIT(DRM_MODE_BLEND_PREMULTI));
>> + if (ret)
>> + goto err_drm_plane_cleanup;
>> +
>> ret = drm_crtc_init_with_planes(dev, crtc, primary, NULL,
>> funcs, NULL);
>> if (ret)
>> goto err_drm_plane_cleanup;
>
[-- Attachment #2: Type: text/html, Size: 5521 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-09-02 9:58 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-02 3:12 [PATCH] drm/modeset-helper: Add blend mode property to the legacy primary plane oushixiong1025
2026-09-02 7:20 ` Thomas Zimmermann
2026-09-02 9:58 ` Shixiong Ou
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.