From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Arthur Grillo <arthurgrillo@riseup.net>
Cc: igt-dev@lists.freedesktop.org,
Petri Latvala <adrinael@adrinael.net>,
Arkadiusz Hiler <arek@hiler.eu>,
Kamil Konieczny <kamil.konieczny@linux.intel.com>,
Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>,
Bhanuprakash Modem <bhanuprakash.modem@intel.com>,
Ashutosh Dixit <ashutosh.dixit@intel.com>,
Pekka Paalanen <pekka.paalanen@collabora.com>,
Louis Chauvet <louis.chauvet@bootlin.com>
Subject: Re: [PATCH i-g-t v6 12/12] lib/igt_fb: Add non sub-sampled YUV formats
Date: Mon, 28 Oct 2024 18:07:49 +0200 [thread overview]
Message-ID: <Zx-21REAlrgC3DHs@intel.com> (raw)
In-Reply-To: <20240912-kms_fb_stress-dev-v6-12-71e9a65397e9@riseup.net>
On Thu, Sep 12, 2024 at 09:39:36PM -0300, Arthur Grillo wrote:
> This adds support for the formats:
> - NV24
> - NV42
> - YU24
> - YU42
I would split this into two patches: 2 plane vs. 3 plane
>
> Signed-off-by: Arthur Grillo <arthurgrillo@riseup.net>
> ---
> lib/igt_fb.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 46 insertions(+)
>
> diff --git a/lib/igt_fb.c b/lib/igt_fb.c
> index 7f87d40ed3d6..b1301d08d9f8 100644
> --- a/lib/igt_fb.c
> +++ b/lib/igt_fb.c
> @@ -257,6 +257,16 @@ static const struct format_desc_struct {
> .num_planes = 2, .plane_bpp = { 8, 16, },
> .hsub = 2, .vsub = 2,
> },
> + { .name = "NV24", .depth = -1, .drm_id = DRM_FORMAT_NV24,
> + .cairo_id = CAIRO_FORMAT_RGB24, .convert = true,
> + .num_planes = 2, .plane_bpp = { 8, 16, },
> + .hsub = 1, .vsub = 1,
> + },
> + { .name = "NV42", .depth = -1, .drm_id = DRM_FORMAT_NV42,
> + .cairo_id = CAIRO_FORMAT_RGB24, .convert = true,
> + .num_planes = 2, .plane_bpp = { 8, 16, },
> + .hsub = 1, .vsub = 1,
> + },
> { .name = "NV61", .depth = -1, .drm_id = DRM_FORMAT_NV61,
> .cairo_id = CAIRO_FORMAT_RGB24, .convert = true,
> .num_planes = 2, .plane_bpp = { 8, 16, },
> @@ -292,6 +302,11 @@ static const struct format_desc_struct {
> .num_planes = 3, .plane_bpp = { 8, 8, 8, },
> .hsub = 2, .vsub = 1,
> },
> + { .name = "YU24", .depth = -1, .drm_id = DRM_FORMAT_YUV444,
> + .cairo_id = CAIRO_FORMAT_RGB24, .convert = true,
> + .num_planes = 3, .plane_bpp = { 8, 8, 8, },
> + .hsub = 1, .vsub = 1,
> + },
> { .name = "YV12", .depth = -1, .drm_id = DRM_FORMAT_YVU420,
> .cairo_id = CAIRO_FORMAT_RGB24, .convert = true,
> .num_planes = 3, .plane_bpp = { 8, 8, 8, },
> @@ -302,6 +317,11 @@ static const struct format_desc_struct {
> .num_planes = 3, .plane_bpp = { 8, 8, 8, },
> .hsub = 2, .vsub = 1,
> },
> + { .name = "YV24", .depth = -1, .drm_id = DRM_FORMAT_YVU444,
> + .cairo_id = CAIRO_FORMAT_RGB24, .convert = true,
> + .num_planes = 3, .plane_bpp = { 8, 8, 8, },
> + .hsub = 1, .vsub = 1,
> + },
> { .name = "Y410", .depth = -1, .drm_id = DRM_FORMAT_Y410,
> .cairo_id = CAIRO_FORMAT_RGBA128F, .convert = true,
> .num_planes = 1, .plane_bpp = { 32, },
> @@ -1166,8 +1186,10 @@ static void clear_yuv_buffer(struct igt_fb *fb)
> break;
> case DRM_FORMAT_YUV420:
> case DRM_FORMAT_YUV422:
> + case DRM_FORMAT_YUV444:
> case DRM_FORMAT_YVU420:
> case DRM_FORMAT_YVU422:
> + case DRM_FORMAT_YVU444:
Where's the corresponding stuff for the 2 plane formats?
I was also pondering about using igt_reduce_format() to
make the switch a bit less bloated, but I suppose that
won't work for eg. YUYV vs. UYVY. Maybe it could be used
in some other places though.
> igt_assert(ARRAY_SIZE(plane_size) == 3);
> memset(ptr + fb->offsets[0],
> full_range ? 0x00 : 0x10,
> @@ -3495,6 +3517,8 @@ static void get_yuv_parameters(struct igt_fb *fb, struct yuv_parameters *params)
> case DRM_FORMAT_NV12:
> case DRM_FORMAT_NV16:
> case DRM_FORMAT_NV21:
> + case DRM_FORMAT_NV24:
> + case DRM_FORMAT_NV42:
> case DRM_FORMAT_NV61:
> case DRM_FORMAT_P010:
> case DRM_FORMAT_P012:
> @@ -3505,8 +3529,10 @@ static void get_yuv_parameters(struct igt_fb *fb, struct yuv_parameters *params)
>
> case DRM_FORMAT_YUV420:
> case DRM_FORMAT_YUV422:
> + case DRM_FORMAT_YUV444:
> case DRM_FORMAT_YVU420:
> case DRM_FORMAT_YVU422:
> + case DRM_FORMAT_YVU444:
> params->ay_inc = 1;
> params->uv_inc = 1;
> break;
> @@ -3536,11 +3562,15 @@ static void get_yuv_parameters(struct igt_fb *fb, struct yuv_parameters *params)
> case DRM_FORMAT_NV12:
> case DRM_FORMAT_NV16:
> case DRM_FORMAT_NV21:
> + case DRM_FORMAT_NV24:
> + case DRM_FORMAT_NV42:
> case DRM_FORMAT_NV61:
> case DRM_FORMAT_YUV420:
> case DRM_FORMAT_YUV422:
> + case DRM_FORMAT_YUV444:
> case DRM_FORMAT_YVU420:
> case DRM_FORMAT_YVU422:
> + case DRM_FORMAT_YVU444:
> case DRM_FORMAT_P010:
> case DRM_FORMAT_P012:
> case DRM_FORMAT_P016:
> @@ -3568,12 +3598,14 @@ static void get_yuv_parameters(struct igt_fb *fb, struct yuv_parameters *params)
> switch (fb->drm_format) {
> case DRM_FORMAT_NV12:
> case DRM_FORMAT_NV16:
> + case DRM_FORMAT_NV24:
> params->y_offset = fb->offsets[0];
> params->u_offset = fb->offsets[1];
> params->v_offset = fb->offsets[1] + 1;
> break;
>
> case DRM_FORMAT_NV21:
> + case DRM_FORMAT_NV42:
> case DRM_FORMAT_NV61:
> params->y_offset = fb->offsets[0];
> params->u_offset = fb->offsets[1] + 1;
> @@ -3582,6 +3614,7 @@ static void get_yuv_parameters(struct igt_fb *fb, struct yuv_parameters *params)
>
> case DRM_FORMAT_YUV420:
> case DRM_FORMAT_YUV422:
> + case DRM_FORMAT_YUV444:
> params->y_offset = fb->offsets[0];
> params->u_offset = fb->offsets[1];
> params->v_offset = fb->offsets[2];
> @@ -3589,6 +3622,7 @@ static void get_yuv_parameters(struct igt_fb *fb, struct yuv_parameters *params)
>
> case DRM_FORMAT_YVU420:
> case DRM_FORMAT_YVU422:
> + case DRM_FORMAT_YVU444:
> params->y_offset = fb->offsets[0];
> params->u_offset = fb->offsets[2];
> params->v_offset = fb->offsets[1];
> @@ -4322,14 +4356,18 @@ static void fb_convert(struct fb_convert *cvt)
> case DRM_FORMAT_NV12:
> case DRM_FORMAT_NV16:
> case DRM_FORMAT_NV21:
> + case DRM_FORMAT_NV24:
> + case DRM_FORMAT_NV42:
> case DRM_FORMAT_NV61:
> case DRM_FORMAT_UYVY:
> case DRM_FORMAT_VYUY:
> case DRM_FORMAT_YUV420:
> case DRM_FORMAT_YUV422:
> + case DRM_FORMAT_YUV444:
> case DRM_FORMAT_YUYV:
> case DRM_FORMAT_YVU420:
> case DRM_FORMAT_YVU422:
> + case DRM_FORMAT_YVU444:
> case DRM_FORMAT_YVYU:
> convert_yuv_to_rgb24(cvt);
> return;
> @@ -4340,14 +4378,18 @@ static void fb_convert(struct fb_convert *cvt)
> case DRM_FORMAT_NV12:
> case DRM_FORMAT_NV16:
> case DRM_FORMAT_NV21:
> + case DRM_FORMAT_NV24:
> + case DRM_FORMAT_NV42:
> case DRM_FORMAT_NV61:
> case DRM_FORMAT_UYVY:
> case DRM_FORMAT_VYUY:
> case DRM_FORMAT_YUV420:
> case DRM_FORMAT_YUV422:
> + case DRM_FORMAT_YUV444:
> case DRM_FORMAT_YUYV:
> case DRM_FORMAT_YVU420:
> case DRM_FORMAT_YVU422:
> + case DRM_FORMAT_YVU444:
> case DRM_FORMAT_YVYU:
> convert_rgb24_to_yuv(cvt);
> return;
> @@ -4921,11 +4963,15 @@ bool igt_format_is_yuv(uint32_t drm_format)
> case DRM_FORMAT_NV12:
> case DRM_FORMAT_NV16:
> case DRM_FORMAT_NV21:
> + case DRM_FORMAT_NV24:
> + case DRM_FORMAT_NV42:
> case DRM_FORMAT_NV61:
> case DRM_FORMAT_YUV420:
> case DRM_FORMAT_YUV422:
> + case DRM_FORMAT_YUV444:
> case DRM_FORMAT_YVU420:
> case DRM_FORMAT_YVU422:
> + case DRM_FORMAT_YVU444:
> case DRM_FORMAT_P010:
> case DRM_FORMAT_P012:
> case DRM_FORMAT_P016:
>
> --
> 2.46.0
--
Ville Syrjälä
Intel
next prev parent reply other threads:[~2024-10-28 16:07 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-13 0:39 [PATCH i-g-t v6 00/12] benchmarks/kms_fb_stress: benchmark formats Arthur Grillo
2024-09-13 0:39 ` [PATCH i-g-t v6 01/12] benchmarks/kms_fb_stress: Set DRM_CLIENT_CAP_WRITEBACK_CONNECTORS before igt_require() Arthur Grillo
2024-10-22 16:41 ` Kamil Konieczny
2024-09-13 0:39 ` [PATCH i-g-t v6 02/12] benchmarks/kms_fb_stress: Assert that we have a supported pipe Arthur Grillo
2024-09-13 0:39 ` [PATCH i-g-t v6 03/12] benchmarks/kms_fb_stress: Separate the benchmark in a subtest Arthur Grillo
2024-09-13 0:39 ` [PATCH i-g-t v6 04/12] benchmarks/kms_fb_stress: Free resources on the stress procedure Arthur Grillo
2024-09-13 0:39 ` [PATCH i-g-t v6 05/12] benchmarks/kms_fb_stress: Move FB creation to a separate function Arthur Grillo
2024-09-13 0:39 ` [PATCH i-g-t v6 06/12] benchmarks/kms_fb_stress: Don't paint the FB's if the format is not supported by Pixman Arthur Grillo
2024-09-13 0:39 ` [PATCH i-g-t v6 07/12] benchmarks/kms_fb_stress: Set writeback rectangle size outside the loop Arthur Grillo
2024-09-13 0:39 ` [PATCH i-g-t v6 08/12] benchmarks/kms_fb_stress: Add enable switches for every plane Arthur Grillo
2024-09-13 0:39 ` [PATCH i-g-t v6 09/12] benchmarks/kms_fb_stress: Log the KMS structure Arthur Grillo
2024-09-13 0:39 ` [PATCH i-g-t v6 10/12] benchmarks/kms_fb_stress: Create a benchmark for primary plane formats Arthur Grillo
2024-09-13 0:39 ` [PATCH i-g-t v6 11/12] benchmarks/kms_fb_stress: Create a benchmark for writeback formats Arthur Grillo
2024-09-13 0:39 ` [PATCH i-g-t v6 12/12] lib/igt_fb: Add non sub-sampled YUV formats Arthur Grillo
2024-10-22 15:06 ` Kamil Konieczny
2024-10-28 15:34 ` Kamil Konieczny
2024-10-28 16:07 ` Ville Syrjälä [this message]
2024-09-13 1:26 ` ✓ CI.xeBAT: success for benchmarks/kms_fb_stress: benchmark formats (rev3) Patchwork
2024-09-13 1:46 ` ✗ Fi.CI.BAT: failure " Patchwork
2024-09-13 12:03 ` Arthur Grillo
2024-09-13 18:36 ` ✗ CI.xeFULL: " Patchwork
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Zx-21REAlrgC3DHs@intel.com \
--to=ville.syrjala@linux.intel.com \
--cc=adrinael@adrinael.net \
--cc=arek@hiler.eu \
--cc=arthurgrillo@riseup.net \
--cc=ashutosh.dixit@intel.com \
--cc=bhanuprakash.modem@intel.com \
--cc=igt-dev@lists.freedesktop.org \
--cc=juhapekka.heikkila@gmail.com \
--cc=kamil.konieczny@linux.intel.com \
--cc=louis.chauvet@bootlin.com \
--cc=pekka.paalanen@collabora.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox