[PATCH v3 07/11] drm/mediatek: Support alpha blending in VDOSYS0

Shawn Sung (宋孝謙) Shawn.Sung at mediatek.com
Wed Nov 29 01:45:05 PST 2023


On Thu, 2023-11-23 at 09:22 +0000, CK Hu (胡俊光) wrote:
> Hi, Hsiao-chien:
> 

----
snip
----

> > @@ -420,14 +496,92 @@ void mtk_ovl_layer_config(struct device *dev,
> > unsigned int idx,
> >  
> >  	overlay_pitch.pitch = pitch;
> >  
> > -	if (!pending->enable) {
> > +	if (!pending->enable || !pending->width || !pending->height) {
> >  		mtk_ovl_layer_off(dev, idx, cmdq_pkt);
> >  		return;
> >  	}
> >  
> > -	con = ovl_fmt_convert(ovl, fmt);
> > -	if (state->base.fb && state->base.fb->format->has_alpha)
> > -		con |= OVL_CON_AEN | OVL_CON_ALPHA;
> > +	con = ovl_fmt_convert(ovl, fmt, blend_mode);
> > +	if (state->base.fb) {
> > +		con |= OVL_CON_AEN;
> 
> It seems all SoC ovl hardware support alpha blending, why in mmsys
> just
> some support?

Because alpha blending was not implemented before, and we only verified
this patch on MT8195 and MT8188. Will review this part again. Thanks.

> > +		con |= state->base.alpha & 0xff;
> > +	}
> > +
> > +	if (blend_mode == DRM_MODE_BLEND_PIXEL_NONE ||
> > +	    (state->base.fb && !state->base.fb->format->has_alpha))
> > +		ignore_pixel_alpha = OVL_CONST_BLEND;
> > +
> > +	/* need to do Y2R and R2R to reduce 10bit data to 8bit for CRC
> > calculation */
> 
> Reducing 10 bit to 8 bit would lose color detail. Just for CRC to
> lose
> this detail? Why not just use 10 bit to calculate CRC?
> 

This is a hardware limitation, OVL will only retrieve 8 bits per
channel for CRC calculation. Although we do limit this function to
8195/8188 only, the color detail will still lose on these platforms if
we must support CRC.

Regards,
Shawn


More information about the Linux-mediatek mailing list