From d3770381b8b07eaf0be119deb9d00952cd87fc9d Mon Sep 17 00:00:00 2001 From: Vincent Wei Date: Sat, 21 Mar 2020 19:16:07 +0800 Subject: [PATCH] add support for alpha_pixel_blt --- src/newgal/drm/drmvideo.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/newgal/drm/drmvideo.c b/src/newgal/drm/drmvideo.c index b1cd7062..c5b49a63 100644 --- a/src/newgal/drm/drmvideo.c +++ b/src/newgal/drm/drmvideo.c @@ -3069,7 +3069,12 @@ static int DRM_HWBlit(GAL_Surface *src, GAL_Rect *src_rc, src_buf = (DrmSurfaceBuffer*)src->hwdata; dst_buf = (DrmSurfaceBuffer*)dst->hwdata; - if ((src->flags & GAL_SRCALPHA) == GAL_SRCALPHA && + if ((src->flags & GAL_SRCPIXELALPHA) == GAL_SRCPIXELALPHA) { + return vdata->driver_ops->alpha_pixel_blit(vdata->driver, + src_buf, src_rc, dst_buf, dst_rc, + COLOR_BLEND_PD_SRC_OVER); + } + else if ((src->flags & GAL_SRCALPHA) == GAL_SRCALPHA && (src->flags & GAL_SRCCOLORKEY) == GAL_SRCCOLORKEY) { return vdata->driver_ops->alpha_key_blit(vdata->driver, src_buf, src_rc, dst_buf, dst_rc, @@ -3106,7 +3111,11 @@ static int DRM_CheckHWBlit_Accl(_THIS, GAL_Surface *src, GAL_Surface *dst) src->flags |= GAL_HWACCEL; /* Set the surface attributes */ - if ((src->flags & GAL_SRCALPHA) == GAL_SRCALPHA && + if ((src->flags & GAL_SRCPIXELALPHA) == GAL_SRCPIXELALPHA && + (vdata->driver_ops->alpha_pixel_blit == NULL)) { + src->flags &= ~GAL_HWACCEL; + } + else if ((src->flags & GAL_SRCALPHA) == GAL_SRCALPHA && (src->flags & GAL_SRCCOLORKEY) == GAL_SRCCOLORKEY && (vdata->driver_ops->alpha_key_blit == NULL)) { src->flags &= ~GAL_HWACCEL;