Re: [PATCH v3 2/3] drm/amd/display: fix missing blend-mode-prop warning for DCN
Alex Hung <[email protected]>
| Newsgroups | org.freedesktop.lists.dri-devel,org.freedesktop.lists.amd-gfx |
|---|---|
| Message-ID | <[email protected]> |
Reviewed-by: Alex Hung <[email protected]> On 8/13/26 08:30, Melissa Wen wrote: > validate_blend_mode_for_alpha_formats() warns when a plane supports > formats with alpha but doesn't expose the blend mode property. Fix this > by adding the same overlay plane blend modes to primary plane, since > they are all universal planes in DCN-generation. Cursor planes support > ARGB8888 format and CURSOR_MODE_COLOR_PRE_MULTIPLIED_ALPHA is set by > default (other color formats are not implemented), so only expose > support to PREMULTI, which is the default blend mode on DRM. > > 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: > - keep primary planes w/o alpha property > - re-order if-conditions for readability > --- > .../amd/display/amdgpu_dm/amdgpu_dm_plane.c | 21 ++++++++++++++++--- > 1 file changed, 18 insertions(+), 3 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 1b564cfe2120..ab9bbe8ca333 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,16 +1923,31 @@ int amdgpu_dm_plane_init(struct amdgpu_display_manager *dm, > if (res) > return res; > > - if (plane->type == DRM_PLANE_TYPE_OVERLAY && > - plane_cap && plane_cap->per_pixel_alpha) { > + /* 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. > + */ > + 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) { > unsigned int blend_caps = BIT(DRM_MODE_BLEND_PIXEL_NONE) | > BIT(DRM_MODE_BLEND_PREMULTI) | > BIT(DRM_MODE_BLEND_COVERAGE); > > - drm_plane_create_alpha_property(plane); > drm_plane_create_blend_mode_property(plane, blend_caps); > + > + if (plane->type == DRM_PLANE_TYPE_OVERLAY) > + drm_plane_create_alpha_property(plane); > } > > + /* Cursor color format is set to CURSOR_MODE_COLOR_PRE_MULTIPLIED_ALPHA > + * by default, so only advertise DRM_MODE_BLEND_PREMULTI blend mode for > + * this type of plane. > + */ > + if (plane->type == DRM_PLANE_TYPE_CURSOR) > + drm_plane_create_blend_mode_property(plane, BIT(DRM_MODE_BLEND_PREMULTI)); > + > if (plane->type == DRM_PLANE_TYPE_PRIMARY) { > /* > * Allow OVERLAY planes to be used as underlays by assigning an