Hello Hayama-san, Thank you for the patch. On Wed, Aug 10, 2022 at 05:37:11PM +0900, Takanari Hayama wrote: > DRM_MODE_BLEND_PIXEL_NONE ignores an alpha channel. > > Rcar-du driver supports only 3 formats with an alpha channel > (DRM_FORMAT_ARGB1555, DRM_FORMAT_ARGB8888 and DRM_FORMAT_ARGB4444). We > simply override the format passed to VSP1 for blending with the pixel > format without alpha channel. > > Suggested-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> > Signed-off-by: Takanari Hayama <taki@xxxxxxxxxx> Reviewed-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/rcar-du/rcar_du_vsp.c | 20 +++++++++++++++++++- > 1 file changed, 19 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/rcar-du/rcar_du_vsp.c b/drivers/gpu/drm/rcar-du/rcar_du_vsp.c > index b9580fcfec7a..7cce2d414ced 100644 > --- a/drivers/gpu/drm/rcar-du/rcar_du_vsp.c > +++ b/drivers/gpu/drm/rcar-du/rcar_du_vsp.c > @@ -151,6 +151,7 @@ static void rcar_du_vsp_plane_setup(struct rcar_du_vsp_plane *plane) > .alpha = state->state.alpha >> 8, > .zpos = state->state.zpos, > }; > + u32 fourcc = state->format->fourcc; > unsigned int i; > > cfg.src.left = state->state.src.x1 >> 16; > @@ -169,7 +170,23 @@ static void rcar_du_vsp_plane_setup(struct rcar_du_vsp_plane *plane) > > cfg.premult = (state->state.pixel_blend_mode == DRM_MODE_BLEND_PREMULTI); > > - format = rcar_du_format_info(state->format->fourcc); > + if (state->state.pixel_blend_mode == DRM_MODE_BLEND_PIXEL_NONE) { > + switch (fourcc) { > + case DRM_FORMAT_ARGB1555: > + fourcc = DRM_FORMAT_XRGB1555; > + break; > + > + case DRM_FORMAT_ARGB4444: > + fourcc = DRM_FORMAT_XRGB4444; > + break; > + > + case DRM_FORMAT_ARGB8888: > + fourcc = DRM_FORMAT_XRGB8888; > + break; > + } > + } > + > + format = rcar_du_format_info(fourcc); > cfg.pixelformat = format->v4l2; > > vsp1_du_atomic_update(plane->vsp->vsp, crtc->vsp_pipe, > @@ -447,6 +464,7 @@ int rcar_du_vsp_init(struct rcar_du_vsp *vsp, struct device_node *np, > } > > drm_plane_create_blend_mode_property(&plane->plane, > + BIT(DRM_MODE_BLEND_PIXEL_NONE) | > BIT(DRM_MODE_BLEND_PREMULTI) | > BIT(DRM_MODE_BLEND_COVERAGE)); > -- Regards, Laurent Pinchart