[PATCH v2 1/2] drm/vkms: allow full alpha blending on all planes
Arthur Grillo Queiroz Cabral
arthurgrillo at riseup.net
Fri Apr 21 11:36:07 UTC 2023
On 20/04/23 20:22, Maíra Canal wrote:
> Before commit bc0d7fdefec6 ("drm: vkms: Supports to the case where
> primary plane doesn't match the CRTC"), the composition was executed on
> top of the primary plane. Therefore, the primary plane was not able to
> support the alpha channel. After commit bc0d7fdefec6, this is possible,
> as the composition is now executed on top of the CRTC.
>
> So, allow all planes to support the alpha channel, making full alpha
> blending possible in vkms.
>
> Signed-off-by: Maíra Canal <mcanal at igalia.com>
> Reviewed-by: Melissa Wen <mwen at igalia.com>
> ---
On both:
Reviewed-by: Arthur Grillo <arthurgrillo at riseup.net>
Best Regards,
~Arthur Grillo
>
> v1 -> v2: https://lore.kernel.org/dri-devel/20230414190913.106633-1-mcanal@igalia.com/T/
>
> * s/vkms_primary_helper_funcs/vkms_plane_helper_funcs (Melissa Wen)
> * Add Melissa's Reviewed-by
>
> ---
> drivers/gpu/drm/vkms/vkms_plane.c | 34 +++----------------------------
> 1 file changed, 3 insertions(+), 31 deletions(-)
>
> diff --git a/drivers/gpu/drm/vkms/vkms_plane.c b/drivers/gpu/drm/vkms/vkms_plane.c
> index c41cec7dcb70..c2888e5266bc 100644
> --- a/drivers/gpu/drm/vkms/vkms_plane.c
> +++ b/drivers/gpu/drm/vkms/vkms_plane.c
> @@ -12,12 +12,6 @@
> #include "vkms_formats.h"
>
> static const u32 vkms_formats[] = {
> - DRM_FORMAT_XRGB8888,
> - DRM_FORMAT_XRGB16161616,
> - DRM_FORMAT_RGB565
> -};
> -
> -static const u32 vkms_plane_formats[] = {
> DRM_FORMAT_ARGB8888,
> DRM_FORMAT_XRGB8888,
> DRM_FORMAT_XRGB16161616,
> @@ -185,7 +179,7 @@ static void vkms_cleanup_fb(struct drm_plane *plane,
> drm_gem_fb_vunmap(fb, shadow_plane_state->map);
> }
>
> -static const struct drm_plane_helper_funcs vkms_primary_helper_funcs = {
> +static const struct drm_plane_helper_funcs vkms_plane_helper_funcs = {
> .atomic_update = vkms_plane_atomic_update,
> .atomic_check = vkms_plane_atomic_check,
> .prepare_fb = vkms_prepare_fb,
> @@ -196,38 +190,16 @@ struct vkms_plane *vkms_plane_init(struct vkms_device *vkmsdev,
> enum drm_plane_type type, int index)
> {
> struct drm_device *dev = &vkmsdev->drm;
> - const struct drm_plane_helper_funcs *funcs;
> struct vkms_plane *plane;
> - const u32 *formats;
> - int nformats;
> -
> - switch (type) {
> - case DRM_PLANE_TYPE_PRIMARY:
> - formats = vkms_formats;
> - nformats = ARRAY_SIZE(vkms_formats);
> - funcs = &vkms_primary_helper_funcs;
> - break;
> - case DRM_PLANE_TYPE_CURSOR:
> - case DRM_PLANE_TYPE_OVERLAY:
> - formats = vkms_plane_formats;
> - nformats = ARRAY_SIZE(vkms_plane_formats);
> - funcs = &vkms_primary_helper_funcs;
> - break;
> - default:
> - formats = vkms_formats;
> - nformats = ARRAY_SIZE(vkms_formats);
> - funcs = &vkms_primary_helper_funcs;
> - break;
> - }
>
> plane = drmm_universal_plane_alloc(dev, struct vkms_plane, base, 1 << index,
> &vkms_plane_funcs,
> - formats, nformats,
> + vkms_formats, ARRAY_SIZE(vkms_formats),
> NULL, type, NULL);
> if (IS_ERR(plane))
> return plane;
>
> - drm_plane_helper_add(&plane->base, funcs);
> + drm_plane_helper_add(&plane->base, &vkms_plane_helper_funcs);
>
> return plane;
> }
More information about the dri-devel
mailing list