<html><body><p>
<pre>
On Mon, 2024-09-23 at 03:51 +0000, CK Hu (胡俊光) wrote:
> Hi, Jason:
>
> On Wed, 2024-09-18 at 00:44 +0800, Jason-JH.Lin wrote:
> > OVL_CON_CLRFMT_MAN is a configuration for extending color format
> > settings of DISP_REG_OVL_CON(n).
> > It will change some of the original color format settings.
> >
> > Take the settings of (3 << 12) for example.
> > - If OVL_CON_CLRFMT_MAN = 0 means OVL_CON_CLRFMT_RGBA8888.
> > - If OVL_CON_CLRFMT_MAN = 1 means OVL_CON_CLRFMT_PARGB8888.
> >
> > Since OVL_CON_CLRFMT_MAN is not supported on previous SoCs,
> > It breaks the OVL color format setting of MT8173.
> >
> > Therefore, the fmt_convert function pointer is added to the driver
> > data
> > and mtk_ovl_fmt_convert_with_blend is implemented for MT8192 and
> > MT8195
> > that support OVL_CON_CLRFMT_MAN, and mtk_ovl_fmt_convert is
> > implemented
> > for other SoCs that do not support it to solve the degradation
> > problem.
> >
> > Fixes: a3f7f7ef4bfe ("drm/mediatek: Support "Pre-multiplied"
> > blending in OVL")
> > Signed-off-by: Jason-JH.Lin <jason-jh.lin@mediatek.com>
> > Tested-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
> > ---
> > drivers/gpu/drm/mediatek/mtk_disp_ovl.c | 63
> > ++++++++++++++++++++++---
> > 1 file changed, 56 insertions(+), 7 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/mediatek/mtk_disp_ovl.c
> > b/drivers/gpu/drm/mediatek/mtk_disp_ovl.c
> > index 89b439dcf3a6..4948f269fb81 100644
> > --- a/drivers/gpu/drm/mediatek/mtk_disp_ovl.c
> > +++ b/drivers/gpu/drm/mediatek/mtk_disp_ovl.c
> > @@ -143,6 +143,7 @@ struct mtk_disp_ovl_data {
> > unsigned int addr;
> > unsigned int gmc_bits;
> > unsigned int layer_nr;
> > +unsigned int (*fmt_convert)(struct device *dev, struct
> > mtk_plane_state *state);
> > bool fmt_rgb565_is_0;
> > bool smi_id_en;
> > bool supports_afbc;
> > @@ -386,13 +387,54 @@ void mtk_ovl_layer_off(struct device *dev,
> > unsigned int idx,
> > DISP_REG_OVL_RDMA_CTRL(idx));
> > }
> >
> > -static unsigned int ovl_fmt_convert(struct mtk_disp_ovl *ovl,
> > unsigned int fmt,
> > - unsigned int blend_mode)
> > +static unsigned int mtk_ovl_fmt_convert(struct device *dev, struct
> > mtk_plane_state *state)
> > {
> > -/* The return value in switch "MEM_MODE_INPUT_FORMAT_XXX"
> > - * is defined in mediatek HW data sheet.
> > - * The alphabet order in XXX is no relation to data
> > - * arrangement in memory.
> > +struct mtk_disp_ovl *ovl = dev_get_drvdata(dev);
> > +unsigned int fmt = state->pending.format;
> > +
> > +switch (fmt) {
> > +default:
> > +case DRM_FORMAT_RGB565:
> > +return OVL_CON_CLRFMT_RGB565(ovl);
> > +case DRM_FORMAT_BGR565:
> > +return OVL_CON_CLRFMT_RGB565(ovl) | OVL_CON_BYTE_SWAP;
> > +case DRM_FORMAT_RGB888:
> > +return OVL_CON_CLRFMT_RGB888(ovl);
> > +case DRM_FORMAT_BGR888:
> > +return OVL_CON_CLRFMT_RGB888(ovl) | OVL_CON_BYTE_SWAP;
> > +case DRM_FORMAT_RGBX8888:
> > +case DRM_FORMAT_RGBA8888:
> > +case DRM_FORMAT_RGBX1010102:
> > +case DRM_FORMAT_RGBA1010102:
> > +return OVL_CON_CLRFMT_RGBA8888;
>
> Comparing mtk_ovl_fmt_convert() with
> mtk_ovl_fmt_convert_with_blend(), some pixel formats are supported,
> such as BGRA8888.
> But in kernel v6.10, these formats are supported.
> Is the code wrong in v6.10?
>

Yes, I lost those parts...

I'll add the cases:

case BGRX8888:
case BGRA8888:
case BGRX1010102:
case BGRA1010102:
return OVL_CON_CLRFMT_BGRA8888;

and send the v4 soon.

Regards,
Jason-JH.Lin

> Regards,
> CK

</pre>
</p></body></html><!--type:text--><!--{--><pre>************* MEDIATEK Confidentiality Notice ********************
The information contained in this e-mail message (including any 
attachments) may be confidential, proprietary, privileged, or otherwise
exempt from disclosure under applicable laws. It is intended to be 
conveyed only to the designated recipient(s). Any use, dissemination, 
distribution, printing, retaining or copying of this e-mail (including its 
attachments) by unintended recipient(s) is strictly prohibited and may 
be unlawful. If you are not an intended recipient of this e-mail, or believe 
that you have received this e-mail in error, please notify the sender 
immediately (by replying to this e-mail), delete any and all copies of 
this e-mail (including any attachments) from your system, and do not
disclose the content of this e-mail to any other person. Thank you!
</pre><!--}-->