Le 13/03/24 - 12:20, Randy Dunlap a écrit : > Hi, > > On 3/13/24 10:45, Louis Chauvet wrote: > > From: Arthur Grillo <arthurgrillo@xxxxxxxxxx> > > > > > > > Signed-off-by: Arthur Grillo <arthurgrillo@xxxxxxxxxx> > > [Louis Chauvet: > > - Adapted Arthur's work > > - Implemented the read_line_t callbacks for yuv > > - add struct conversion_matrix > > - remove struct pixel_yuv_u8 > > - update the commit message > > - Merge the modifications from Arthur] > > Signed-off-by: Louis Chauvet <louis.chauvet@xxxxxxxxxxx> > > --- > > drivers/gpu/drm/vkms/vkms_drv.h | 22 ++ > > drivers/gpu/drm/vkms/vkms_formats.c | 431 ++++++++++++++++++++++++++++++++++++ > > drivers/gpu/drm/vkms/vkms_formats.h | 4 + > > drivers/gpu/drm/vkms/vkms_plane.c | 17 +- > > 4 files changed, 473 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/gpu/drm/vkms/vkms_drv.h b/drivers/gpu/drm/vkms/vkms_drv.h > > index 23e1d247468d..f3116084de5a 100644 > > --- a/drivers/gpu/drm/vkms/vkms_drv.h > > +++ b/drivers/gpu/drm/vkms/vkms_drv.h > > @@ -99,6 +99,27 @@ typedef void (*pixel_read_line_t)(const struct vkms_plane_state *plane, int x_st > > int y_start, enum pixel_read_direction direction, int count, > > struct pixel_argb_u16 out_pixel[]); > > > > +/** > > + * CONVERSION_MATRIX_FLOAT_DEPTH - Number of digits after the point for conversion matrix values > > This should be > > + * define CONVERSION_MATRIX_FLOAT_DEPTH - Number of digits after the point for conversion matrix values > > to conform to kernel-doc format. > > > + */ > > +#define CONVERSION_MATRIX_FLOAT_DEPTH 32 > > + Hi Randy, Thanks for your feedback. I missed it while squashing Arthur's work, but this constant is not needed anymore, it will be removed in v6. For all other kernel-doc formatting (PATCHv5 03/16, PATCH V5 05/16), I will correct them in the v6. Kind regards, Louis Chauvet > > diff --git a/drivers/gpu/drm/vkms/vkms_formats.c b/drivers/gpu/drm/vkms/vkms_formats.c > > index 1449a0e6c706..edbf4b321b91 100644 > > --- a/drivers/gpu/drm/vkms/vkms_formats.c > > +++ b/drivers/gpu/drm/vkms/vkms_formats.c > > > +/** > > + * get_conversion_matrix_to_argb_u16() - Retrieve the correct yuv to rgb conversion matrix for a > > + * given encoding and range. > > + * > > + * If the matrix is not found, return a null pointer. In all other cases, it return a simple > > + * diagonal matrix, which act as a "no-op". > > + * > > + * @format: DRM_FORMAT_* value for which to obtain a conversion function (see [drm_fourcc.h]) > > + * @encoding: DRM_COLOR_* value for which to obtain a conversion matrix > > + * @range: DRM_COLOR_*_RANGE value for which to obtain a conversion matrix > > + */ > > +struct conversion_matrix * > > +get_conversion_matrix_to_argb_u16(u32 format, enum drm_color_encoding encoding, > > + enum drm_color_range range) > > +{ > > + static struct conversion_matrix no_operation = { > > + .matrix = { > > + { 4294967296, 0, 0, }, > > + { 0, 4294967296, 0, }, > > + { 0, 0, 4294967296, }, > > + }, > > + .y_offset = 0, > > + }; > > + > > + /* > > + * Those matrixies were generated using the colour python framework > > matrices > > > + * > > + * Below are the function calls used to generate eac matrix, go to > > each > > > + * https://colour.readthedocs.io/en/develop/generated/colour.matrix_YCbCr.html > > + * for more info: > > + * > > + * numpy.around(colour.matrix_YCbCr(K=colour.WEIGHTS_YCBCR["ITU-R BT.601"], > > + * is_legal = False, > > + * bits = 8) * 2**32).astype(int) > > + */ > > > + > > /** > > Please convert this comment to kernel-doc format or just use "/*" to begin > the comment. > > > * Retrieve the correct write_pixel function for a specific format. > > * If the format is not supported by VKMS a warn is emitted and a dummy "don't do anything" > > > diff --git a/drivers/gpu/drm/vkms/vkms_plane.c b/drivers/gpu/drm/vkms/vkms_plane.c > > index 8875bed76410..987dd2b686a8 100644 > > --- a/drivers/gpu/drm/vkms/vkms_plane.c > > +++ b/drivers/gpu/drm/vkms/vkms_plane.c > > > thanks. > -- > #Randy -- Louis Chauvet, Bootlin Embedded Linux and Kernel engineering https://bootlin.com