On Mon, Mar 02, 2020 at 12:31:38PM +0200, Roman Stratiienko wrote: > Allwinner display engine blender consists of 3 pipelined blending units. > > PIPE0->\ > BLD0-\ > PIPE1->/ BLD1-\ > PIPE2->------/ BLD2->OUT > PIPE3->------------/ > > This pipeline produces incorrect composition if PIPE0 buffer has alpha. Why? What happens in that case? > Correct solution is to add one more blending step and mix PIPE0 with > background, but it is not supported by the hardware. > > Use premultiplied alpha buffer of PIPE0 overlay channel as is. > In this case we got same effect as mixing PIPE0 with black background. > > Signed-off-by: Roman Stratiienko > > --- > > v4: > - Initial version, depends on other unmerged patches in the patchset. > --- > drivers/gpu/drm/sun4i/sun8i_ui_layer.c | 2 +- > drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c > index dd6145f80c36..d94f4d8b9128 100644 > --- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c > +++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c > @@ -106,7 +106,7 @@ static void sun8i_ui_layer_update_alpha(struct sun8i_mixer *mixer, int channel, > regmap_update_bits(mixer->engine.regs, > SUN8I_MIXER_BLEND_PREMULTIPLY(bld_base), > SUN8I_MIXER_BLEND_PREMULTIPLY_EN(zpos), > - SUN8I_MIXER_BLEND_PREMULTIPLY_EN(zpos)); > + zpos ? SUN8I_MIXER_BLEND_PREMULTIPLY_EN(zpos) : 0); Can you really use the zpos here? What happens if the zpos doesn't match the pipe? Maxime