[ Adding Timur ]

On 8/13/26 16:30, Melissa Wen wrote:
> DCE can support PREMULTI and COVERAGE blend mode depending on its
> generation, however current driver implementation either doesn't expose
> more than primary and cursor plane, or doesn't program registers for any
> blend mode other than PIXEL_NONE. To fix the missing-blend-mode-prop
> warning according to current DCE plane caps, create blend mode property
> with PIXEL_NONE only for primary planes, instead of the DRM default
> PREMULTI.
> 
> Fixes: 860e748bddcc ("drm: ensure blend mode supported if pixel format with 
> alpha exposed")
> Reviewed-by: Leandro Ribeiro <[email protected]>
> Signed-off-by: Melissa Wen <[email protected]>
> 
> ---
> v3:
> - fix indentation (Alex H)
> ---
>  .../amd/display/amdgpu_dm/amdgpu_dm_plane.c    | 18 +++++++++++-------
>  1 file changed, 11 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c 
> b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c
> index ab9bbe8ca333..3b5b6943b67d 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c
> @@ -1923,14 +1923,18 @@ int amdgpu_dm_plane_init(struct 
> amdgpu_display_manager *dm,
>       if (res)
>               return res;
>  
> -     /* TODO: Check which blend modes are supported in DCE-generation
> -      * planes, i.e. DC_PLANE_TYPE_DCE_RGB/UNDERLAY and expose blend mode
> -      * property accordingly.
> +     /* Blend mode support varies on DCE generations according to HW caps
> +      * and number of planes per CRTC. However, as current driver
> +      * implementation only creates one primary and one cursor plane per
> +      * CRTC for DCE (overlay is only created if
> +      * DC_PLANE_TYPE_DCN_UNIVERSAL), the primary plane blend mode ends up
> +      * being always PIXEL_NONE across DCE versions.
>        */
> -     if ((plane->type == DRM_PLANE_TYPE_OVERLAY ||
> -          plane->type == DRM_PLANE_TYPE_PRIMARY) &&
> -         plane_cap && plane_cap->per_pixel_alpha &&
> -         plane_cap->type == DC_PLANE_TYPE_DCN_UNIVERSAL) {
> +     if (plane_cap && plane_cap->type != DC_PLANE_TYPE_DCN_UNIVERSAL) {
> +             drm_plane_create_blend_mode_property(plane, 
> BIT(DRM_MODE_BLEND_PIXEL_NONE));
> +     } else if ((plane->type == DRM_PLANE_TYPE_OVERLAY ||
> +                 plane->type == DRM_PLANE_TYPE_PRIMARY) &&
> +                plane_cap && plane_cap->per_pixel_alpha) {
>               unsigned int blend_caps = BIT(DRM_MODE_BLEND_PIXEL_NONE) |
>                                         BIT(DRM_MODE_BLEND_PREMULTI) |
>                                         BIT(DRM_MODE_BLEND_COVERAGE);

With this patch applied to the mainline kernel, my display freezes when
Kwin is started (either by SDDM or by launching a KDE Plasma session).
GDM and Gnome work fine. The journal doesn't have much information, it's
mainly this:

kwin_wayland[8402]: Applying output configuration failed!

and after that several KDE processes with:

<kde_process>[xxxx]: There are no outputs - creating placeholder screen

Any idea how I can debug this further? Maybe ask the KDE developers?

With only the first two patches of this series applied, Kwin works as
before, but I get the warnings of course.

Viktor

Reply via email to