Hi Laurent, > -----Original Message----- > From: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> > Sent: 21 March 2025 22:33 > Subject: Re: [PATCH] drm: renesas: Extend RZ/G2L supported KMS formats > > Hi Kieran, > > Thank you for the patch. > > On Fri, Mar 21, 2025 at 05:22:19PM +0000, Kieran Bingham wrote: > > From: Kieran Bingham <kieran.bingham+renesas@xxxxxxxxxxxxxxxx> > > > > The RZ/G2L driver utilises the VSPD to read data from input sources. > > > > The rzg2l_du_kms component lists a restricted subset of the > > capabilities of the VSPd which prevents additional formats from being > > used for > > s/VSPd/VSPD/ > > > display planes. > > > > The supported display plane formats are mapped in rzg2l_du_vsp_formats[]. > > > > Extend the rzg2l_du_format_infos[] table with the corresponding > > mappings between the supported DRM formats and the formats exposed by > > the VSP in rzg2l_du_vsp_formats, maintaining the same ordering in both tables. > > Given the other replies to this patch, you may want to extend the commit message to explain why this > is fine, and how the VSPD will convert YUV formats to RGB. > > Now this makes realize we should implement support for colorspace in the VSPD driver... It's a > separate issue. > > > Signed-off-by: Kieran Bingham > > <kieran.bingham+renesas@xxxxxxxxxxxxxxxx> > > --- > > drivers/gpu/drm/renesas/rz-du/rzg2l_du_kms.c | 141 > > ++++++++++++++++++- > > 1 file changed, 136 insertions(+), 5 deletions(-) > > > > Prior to this patch, kmstest reports all of these formats as supported > > by the Planes, but using them fails during rzg2l_du_fb_create() as the > > corresponding format isn't found in rzg2l_du_format_info. > > > > This patch now lets me capture and render pixelformats from the > > Mali-C55 direct to an attached DSI panel on the Kakip board. > > > > Patch tested with kms-tests: > > > > PYTHONPATH=/usr/lib/aarch64-linux-gnu/python3.11/site-packages > > ./tests/kms-test-formats.py Testing plane formats: SUCCESS > > > > > > diff --git a/drivers/gpu/drm/renesas/rz-du/rzg2l_du_kms.c > > b/drivers/gpu/drm/renesas/rz-du/rzg2l_du_kms.c > > index b1266fbd9598..a5e96f863172 100644 > > --- a/drivers/gpu/drm/renesas/rz-du/rzg2l_du_kms.c > > +++ b/drivers/gpu/drm/renesas/rz-du/rzg2l_du_kms.c > > @@ -36,8 +36,61 @@ > > > > static const struct rzg2l_du_format_info rzg2l_du_format_infos[] = { > > { > > - .fourcc = DRM_FORMAT_XRGB8888, > > - .v4l2 = V4L2_PIX_FMT_XBGR32, > > + .fourcc = DRM_FORMAT_RGB332, > > + .v4l2 = V4L2_PIX_FMT_RGB332, > > + .bpp = 8, > > + .planes = 1, > > + .hsub = 1, > > hsub isn't used in the driver, should it be removed (in a separate patch of course) ? Or is that a > sign there's a bug somewhere ? > > Actually, bpp isn't used either. Biju, could you look into this, and check if we should remove the > fields or use them ? Both bpp and hsub unused previously. bpp still can be removed as it is unused like R-Car Gen3. Now this patch is extending to support YUV formats, I think hsub can be used for YUV like in rzg2l_du_fb_create(). /* * Calculate the chroma plane(s) pitch using the horizontal subsampling * factor. For semi-planar formats, the U and V planes are combined, the * pitch must thus be doubled. */ chroma_pitch = mode_cmd->pitches[0] / format->hsub; if (format->planes == 2) chroma_pitch *= 2; for (i = 1; i < format->planes; ++i) { if (mode_cmd->pitches[i] != chroma_pitch) { dev_dbg(dev->dev, "luma and chroma pitches are not compatible\n"); return ERR_PTR(-EINVAL); } } Cheers, Biju > > Regardless, with the commit message expanded, > > Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@xxxxxxxxxxxxxxxx> > > > + }, { > > + .fourcc = DRM_FORMAT_ARGB4444, > > + .v4l2 = V4L2_PIX_FMT_ARGB444, > > + .bpp = 16, > > + .planes = 1, > > + .hsub = 1, > > + }, { > > + .fourcc = DRM_FORMAT_XRGB4444, > > + .v4l2 = V4L2_PIX_FMT_XRGB444, > > + .bpp = 16, > > + .planes = 1, > > + .hsub = 1, > > + }, { > > + .fourcc = DRM_FORMAT_ARGB1555, > > + .v4l2 = V4L2_PIX_FMT_ARGB555, > > + .bpp = 16, > > + .planes = 1, > > + .hsub = 1, > > + }, { > > + .fourcc = DRM_FORMAT_XRGB1555, > > + .v4l2 = V4L2_PIX_FMT_XRGB555, > > + .bpp = 16, > > + .planes = 1, > > + }, { > > + .fourcc = DRM_FORMAT_RGB565, > > + .v4l2 = V4L2_PIX_FMT_RGB565, > > + .bpp = 16, > > + .planes = 1, > > + .hsub = 1, > > + }, { > > + .fourcc = DRM_FORMAT_BGR888, > > + .v4l2 = V4L2_PIX_FMT_RGB24, > > + .bpp = 24, > > + .planes = 1, > > + .hsub = 1, > > + }, { > > + .fourcc = DRM_FORMAT_RGB888, > > + .v4l2 = V4L2_PIX_FMT_BGR24, > > + .bpp = 24, > > + .planes = 1, > > + .hsub = 1, > > + }, { > > + .fourcc = DRM_FORMAT_BGRA8888, > > + .v4l2 = V4L2_PIX_FMT_ARGB32, > > + .bpp = 32, > > + .planes = 1, > > + .hsub = 1, > > + }, { > > + .fourcc = DRM_FORMAT_BGRX8888, > > + .v4l2 = V4L2_PIX_FMT_XRGB32, > > .bpp = 32, > > .planes = 1, > > .hsub = 1, > > @@ -48,11 +101,89 @@ static const struct rzg2l_du_format_info rzg2l_du_format_infos[] = { > > .planes = 1, > > .hsub = 1, > > }, { > > - .fourcc = DRM_FORMAT_RGB888, > > - .v4l2 = V4L2_PIX_FMT_BGR24, > > - .bpp = 24, > > + .fourcc = DRM_FORMAT_XRGB8888, > > + .v4l2 = V4L2_PIX_FMT_XBGR32, > > + .bpp = 32, > > .planes = 1, > > .hsub = 1, > > + }, { > > + .fourcc = DRM_FORMAT_UYVY, > > + .v4l2 = V4L2_PIX_FMT_UYVY, > > + .bpp = 16, > > + .planes = 1, > > + .hsub = 2, > > + }, { > > + .fourcc = DRM_FORMAT_YUYV, > > + .v4l2 = V4L2_PIX_FMT_YUYV, > > + .bpp = 16, > > + .planes = 1, > > + .hsub = 2, > > + }, { > > + .fourcc = DRM_FORMAT_YVYU, > > + .v4l2 = V4L2_PIX_FMT_YVYU, > > + .bpp = 16, > > + .planes = 1, > > + .hsub = 2, > > + }, { > > + .fourcc = DRM_FORMAT_NV12, > > + .v4l2 = V4L2_PIX_FMT_NV12M, > > + .bpp = 12, > > + .planes = 2, > > + .hsub = 2, > > + }, { > > + .fourcc = DRM_FORMAT_NV21, > > + .v4l2 = V4L2_PIX_FMT_NV21M, > > + .bpp = 12, > > + .planes = 2, > > + .hsub = 2, > > + }, { > > + .fourcc = DRM_FORMAT_NV16, > > + .v4l2 = V4L2_PIX_FMT_NV16M, > > + .bpp = 16, > > + .planes = 2, > > + .hsub = 2, > > + }, { > > + .fourcc = DRM_FORMAT_NV61, > > + .v4l2 = V4L2_PIX_FMT_NV61M, > > + .bpp = 16, > > + .planes = 2, > > + .hsub = 2, > > + }, { > > + .fourcc = DRM_FORMAT_YUV420, > > + .v4l2 = V4L2_PIX_FMT_YUV420M, > > + .bpp = 12, > > + .planes = 3, > > + .hsub = 2, > > + }, { > > + .fourcc = DRM_FORMAT_YVU420, > > + .v4l2 = V4L2_PIX_FMT_YVU420M, > > + .bpp = 12, > > + .planes = 3, > > + .hsub = 2, > > + }, { > > + .fourcc = DRM_FORMAT_YUV422, > > + .v4l2 = V4L2_PIX_FMT_YUV422M, > > + .bpp = 16, > > + .planes = 3, > > + .hsub = 2, > > + }, { > > + .fourcc = DRM_FORMAT_YVU422, > > + .v4l2 = V4L2_PIX_FMT_YVU422M, > > + .bpp = 16, > > + .planes = 3, > > + .hsub = 2, > > + }, { > > + .fourcc = DRM_FORMAT_YUV444, > > + .v4l2 = V4L2_PIX_FMT_YUV444M, > > + .bpp = 24, > > + .planes = 3, > > + .hsub = 1, > > + }, { > > + .fourcc = DRM_FORMAT_YVU444, > > + .v4l2 = V4L2_PIX_FMT_YVU444M, > > + .bpp = 24, > > + .planes = 3, > > + .hsub = 1, > > } > > }; > > > > -- > Regards, > > Laurent Pinchart