[PATCH v7 0/8] drm/vkms: Add support for multiple plane formats

Louis Chauvet posted 8 patches 3 months ago
drivers/gpu/drm/vkms/tests/vkms_format_test.c | 143 ++++++-----
drivers/gpu/drm/vkms/vkms_formats.c           | 331 +++++++++++++-------------
drivers/gpu/drm/vkms/vkms_formats.h           |   4 +-
drivers/gpu/drm/vkms/vkms_plane.c             |  13 +-
4 files changed, 251 insertions(+), 240 deletions(-)
[PATCH v7 0/8] drm/vkms: Add support for multiple plane formats
Posted by Louis Chauvet 3 months ago
@maíra: For the patch 6/8 I just removed the comment about yuv input 
size, is it good for you?

This series introduce a macro to generate a function to read simple
formats. It avoid duplication of the same logic for similar formats.

In addition, it also introduce multiple "easy" formats (rgb888 variants)
and also 16 bits yuv support (P01* formats).

PATCH 1 is the introduction of the macro and adaptation of the existing
code to avoid duplication
PATCH 2-5 introduce new formats with the help of this macro.
PATCH 6 adds support for 16-bit yuv formats
PATCH 7 introduces a macro to reduce code duplication between yuv formats
PATCH 8 adds support for P01* formats

I tested the implementation using kms_plane.

Signed-off-by: Louis Chauvet <louis.chauvet@bootlin.com>
---
Changes in v7:
- Fixed build warning
- Link to v6: https://lore.kernel.org/r/20250628-b4-new-color-formats-v6-0-2125b193f91a@bootlin.com

Changes in v6:
- Reformat commit message
- Remove outdated comment
- Link to v5: https://lore.kernel.org/r/20250627-b4-new-color-formats-v5-0-94452f119c72@bootlin.com

Changes in v5:
- Avoid code duplication in RGB565 and BRG565 readline functions
- Properly rename yuv_u8 to yuv_u16
- Fix useless indentatin
- Remove untested formats
- Link to v4: https://lore.kernel.org/r/20250530-b4-new-color-formats-v4-0-ef5f9f48376c@bootlin.com

Changes in v4:
- Update tests to test yuv 16 bits conversions, not only 8 bits
- Link to v3: https://lore.kernel.org/r/20241122-b4-new-color-formats-v3-0-23f7776197c9@bootlin.com

Changes in v3:
- Rebased on new YUV iterations
- Link to v2: https://lore.kernel.org/r/20241007-b4-new-color-formats-v2-0-d47da50d4674@bootlin.com

Changes in v2:
- Add proper casting/type to __le16 when needed to avoid warnings with
  sparse
- Change the function argb_u16_from_yuv8888 to argb_u16_from_yuv161616 to
  support 16 bits values.
- Add support for P010/P012/P016 format
- Link to v1: https://lore.kernel.org/r/20240516-b4-new-color-formats-v1-0-74cf9fe07317@bootlin.com

---
Louis Chauvet (8):
      drm/vkms: Create helpers macro to avoid code duplication in format callbacks
      drm/vkms: Add support for ARGB8888 formats
      drm/vkms: Add support for ARGB16161616 formats
      drm/vkms: Add support for RGB565 formats
      drm/vkms: Add support for RGB888 formats
      drm/vkms: Change YUV helpers to support u16 inputs for conversion
      drm/vkms: Create helper macro for YUV formats
      drm/vkms: Add P01* formats

 drivers/gpu/drm/vkms/tests/vkms_format_test.c | 143 ++++++-----
 drivers/gpu/drm/vkms/vkms_formats.c           | 331 +++++++++++++-------------
 drivers/gpu/drm/vkms/vkms_formats.h           |   4 +-
 drivers/gpu/drm/vkms/vkms_plane.c             |  13 +-
 4 files changed, 251 insertions(+), 240 deletions(-)
---
base-commit: b4cd18f485687a2061ee7a0ce6833851fc4438da
change-id: 20240312-b4-new-color-formats-1be9d688b21a

Best regards,
-- 
Louis Chauvet <louis.chauvet@bootlin.com>

Re: [PATCH v7 0/8] drm/vkms: Add support for multiple plane formats
Posted by Louis Chauvet 1 month ago
On Thu, 03 Jul 2025 09:56:56 +0200, Louis Chauvet wrote:
> @maíra: For the patch 6/8 I just removed the comment about yuv input
> size, is it good for you?
> 
> This series introduce a macro to generate a function to read simple
> formats. It avoid duplication of the same logic for similar formats.
> 
> In addition, it also introduce multiple "easy" formats (rgb888 variants)
> and also 16 bits yuv support (P01* formats).
> 
> [...]

Applied, thanks!

[1/8] drm/vkms: Create helpers macro to avoid code duplication in format callbacks
      commit: 544f161a88af0370ced87783246418aed63b619c
[2/8] drm/vkms: Add support for ARGB8888 formats
      commit: 985769b8b5c42666be91f5e60aeb93365c934b88
[3/8] drm/vkms: Add support for ARGB16161616 formats
      commit: bac5c590d42ce8a930950da716b7537e60153196
[4/8] drm/vkms: Add support for RGB565 formats
      commit: 39d80cee4207d937daf58179ae3c572bcf541f8a
[5/8] drm/vkms: Add support for RGB888 formats
      commit: 50c58f4f0562504256477ad153463d86500aa337
[6/8] drm/vkms: Change YUV helpers to support u16 inputs for conversion
      commit: 7766ae8de472be3e0167cf3652e6ae8d74ef0221
[7/8] drm/vkms: Create helper macro for YUV formats
      commit: 9e6600e9d3683cdf0196fde7439dba4c50946906
[8/8] drm/vkms: Add P01* formats
      commit: 9cd6b43a0f7fc0dfb779c73f4aeb4d3fe8820698

Best regards,
-- 
Louis Chauvet <louis.chauvet@bootlin.com>

Re: [PATCH v7 0/8] drm/vkms: Add support for multiple plane formats
Posted by Daniel Stone 1 month, 3 weeks ago
Hi Louis, Maira,

On Thu, 3 Jul 2025 at 08:57, Louis Chauvet <louis.chauvet@bootlin.com> wrote:
> @maíra: For the patch 6/8 I just removed the comment about yuv input
> size, is it good for you?
>
> This series introduce a macro to generate a function to read simple
> formats. It avoid duplication of the same logic for similar formats.
>
> In addition, it also introduce multiple "easy" formats (rgb888 variants)
> and also 16 bits yuv support (P01* formats).
>
> PATCH 1 is the introduction of the macro and adaptation of the existing
> code to avoid duplication
> PATCH 2-5 introduce new formats with the help of this macro.
> PATCH 6 adds support for 16-bit yuv formats
> PATCH 7 introduces a macro to reduce code duplication between yuv formats
> PATCH 8 adds support for P01* formats
>
> I tested the implementation using kms_plane.

This series has R-b on everything from Maira, and you can add my:
Acked-by: Daniel Stone <daniels@collabora.com>

How should we get this landed? Let me know if you need someone to help
land in to drm-misc.

Cheers,
Daniel