Re: [PATCH] drm/sun4i: Implement zpos for DE2

From: Jernej Åkrabec
Date: Wed Jun 27 2018 - 17:00:01 EST


Dne sreda, 27. junij 2018 ob 20:25:00 CEST je Maxime Ripard napisal(a):
> Hi!
>
> On Wed, Jun 27, 2018 at 06:45:14PM +0200, Jernej Skrabec wrote:
> > Initial implementation of DE2 planes only supported fixed zpos.
> >
> > Expand implementation with configurable zpos property.
> >
> > Signed-off-by: Jernej Skrabec <jernej.skrabec@xxxxxxxx>
>
> Thanks for that work. I guess you should expand a bit on the exact
> setup you're doing here.

OK.

>
> Are the pipes working the same way on the DE2 than on DE1, ie does the
> pipe blending applies before the alpha blending, and therefore you
> need to make sure that there's not two planes with alpha going to the
> same pipe?

I'm not familiar with DE1 and I'm not sure what the problem is.

However, there is an issue in DE2 when alpha blending multiple planes if
bottom-most plane doesn't cover all screen. In this case alpha blending
produce weird result on screen. Fortunately, there is elegant solution. Black
opaque fill color is enabled for pipe 0 (always at the bottom), which covers
any "undefined region" and that makes alpha blending happy again.

Alternatively, blending modes between planes could be tweaked or disabled, but
I found aforementioned solution is much simpler and you set it only once.

>
> Also, you seem to use the pipe and channels indifferently now, why is
> that?

Why do you think so?

Channel always represents HW unit, for example, on H3, mixer0, channel 0
always represents VI plane, channel 1, represents first UI, plane, channel 2,
second UI plane, etc.

Pipe 0 always represent channel at the bottom, pipe 1 channel on top pipe 0,
etc. Initial, fixed zpos implementation really had 1:1 mapping, but now it can
be different.

Register SUN8I_MIXER_BLEND_ROUTE holds pipe <-> channel mappings.
Bits 3:0 represents pipe 0 and holds channel number. Bits 7:4 represents pipe
1, etc.

Additionaly, there can be holes, for example, pipe 3 and pipe 0 are enabled
and pipe 1 and 2 are disabled.

I hope I answered your questions.

Best regards,
Jernej