Message ID | 20230918084207.23604-7-shawn.sung@mediatek.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Support IGT in display driver | expand |
Hi, Hsiao-chien: On Mon, 2023-09-18 at 16:42 +0800, Hsiao Chien Sung wrote: > Support alpha blending by adding correct blend mode and > alpha property in plane initialization. > > Reviewed-by: AngeloGioacchino Del Regno < > angelogioacchino.delregno@collabora.com> > Signed-off-by: Hsiao Chien Sung <shawn.sung@mediatek.com> > --- > drivers/gpu/drm/mediatek/mtk_drm_plane.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_plane.c > b/drivers/gpu/drm/mediatek/mtk_drm_plane.c > index db2f70ae060d..f87cf56fb846 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_plane.c > +++ b/drivers/gpu/drm/mediatek/mtk_drm_plane.c > @@ -301,6 +301,9 @@ int mtk_plane_init(struct drm_device *dev, struct > drm_plane *plane, > size_t num_formats) > { > int err; > + u32 blend_mode = BIT(DRM_MODE_BLEND_PIXEL_NONE) | > + BIT(DRM_MODE_BLEND_PREMULTI) | > + BIT(DRM_MODE_BLEND_COVERAGE); > > if (!formats || !num_formats) { > DRM_ERROR("no formats for plane\n"); > @@ -323,6 +326,14 @@ int mtk_plane_init(struct drm_device *dev, > struct drm_plane *plane, > DRM_INFO("Create rotation property failed\n"); > } > > + err = drm_plane_create_alpha_property(plane); > + if (err) > + DRM_ERROR("failed to create property: alpha\n"); > + > + err = drm_plane_create_blend_mode_property(plane, blend_mode); > + if (err) > + DRM_ERROR("failed to create property: blend_mode\n"); Do not always enable alpha function. Enable it depend on hardware capability. Regards, CK > + > drm_plane_helper_add(plane, &mtk_plane_helper_funcs); > > return 0;
diff --git a/drivers/gpu/drm/mediatek/mtk_drm_plane.c b/drivers/gpu/drm/mediatek/mtk_drm_plane.c index db2f70ae060d..f87cf56fb846 100644 --- a/drivers/gpu/drm/mediatek/mtk_drm_plane.c +++ b/drivers/gpu/drm/mediatek/mtk_drm_plane.c @@ -301,6 +301,9 @@ int mtk_plane_init(struct drm_device *dev, struct drm_plane *plane, size_t num_formats) { int err; + u32 blend_mode = BIT(DRM_MODE_BLEND_PIXEL_NONE) | + BIT(DRM_MODE_BLEND_PREMULTI) | + BIT(DRM_MODE_BLEND_COVERAGE); if (!formats || !num_formats) { DRM_ERROR("no formats for plane\n"); @@ -323,6 +326,14 @@ int mtk_plane_init(struct drm_device *dev, struct drm_plane *plane, DRM_INFO("Create rotation property failed\n"); } + err = drm_plane_create_alpha_property(plane); + if (err) + DRM_ERROR("failed to create property: alpha\n"); + + err = drm_plane_create_blend_mode_property(plane, blend_mode); + if (err) + DRM_ERROR("failed to create property: blend_mode\n"); + drm_plane_helper_add(plane, &mtk_plane_helper_funcs); return 0;