From: "José Expósito" <jose.exposito89@gmail.com>
To: Thomas Zimmermann <tzimmermann@suse.de>
Cc: arthurgrillo@riseup.net, javierm@redhat.com,
maarten.lankhorst@linux.intel.com, mripard@kernel.org,
dri-devel@lists.freedesktop.org
Subject: Re: [PATCH v2 1/3] drm/tests: Do not use drm_fb_blit() in format-helper tests
Date: Fri, 13 Jun 2025 16:00:23 +0200 [thread overview]
Message-ID: <aEwu91r9WfjGB6Ny@fedora> (raw)
In-Reply-To: <20250612135658.232535-2-tzimmermann@suse.de>
Hi Thomas,
On Thu, Jun 12, 2025 at 03:52:22PM +0200, Thomas Zimmermann wrote:
> Export additional helpers from the format-helper library and open-code
> drm_fb_blit() in tests. Prepares for the removal of drm_fb_blit(). Only
> sysfb drivers use drm_fb_blit(). The function will soon be removed from
> format helpers and be refactored within sysfb helpers.
>
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> Acked-by: Maxime Ripard <mripard@kernel.org>
Reviewed and run the tests, they work, thanks.
Reviewed-by: José Expósito <jose.exposito89@gmail.com>
> ---
> drivers/gpu/drm/drm_format_helper.c | 108 ++++++++++++++++--
> drivers/gpu/drm/drm_format_internal.h | 8 ++
> .../gpu/drm/tests/drm_format_helper_test.c | 108 +++---------------
> include/drm/drm_format_helper.h | 9 ++
> 4 files changed, 131 insertions(+), 102 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_format_helper.c b/drivers/gpu/drm/drm_format_helper.c
> index d36e6cacc575..73b5a80771cc 100644
> --- a/drivers/gpu/drm/drm_format_helper.c
> +++ b/drivers/gpu/drm/drm_format_helper.c
> @@ -857,11 +857,33 @@ static void drm_fb_xrgb8888_to_abgr8888_line(void *dbuf, const void *sbuf, unsig
> drm_fb_xfrm_line_32to32(dbuf, sbuf, pixels, drm_pixel_xrgb8888_to_abgr8888);
> }
>
> -static void drm_fb_xrgb8888_to_abgr8888(struct iosys_map *dst, const unsigned int *dst_pitch,
> - const struct iosys_map *src,
> - const struct drm_framebuffer *fb,
> - const struct drm_rect *clip,
> - struct drm_format_conv_state *state)
> +/**
> + * drm_fb_xrgb8888_to_abgr8888 - Convert XRGB8888 to ABGR8888 clip buffer
> + * @dst: Array of ABGR8888 destination buffers
> + * @dst_pitch: Array of numbers of bytes between the start of two consecutive scanlines
> + * within @dst; can be NULL if scanlines are stored next to each other.
> + * @src: Array of XRGB8888 source buffer
> + * @fb: DRM framebuffer
> + * @clip: Clip rectangle area to copy
> + * @state: Transform and conversion state
> + *
> + * This function copies parts of a framebuffer to display memory and converts the
> + * color format during the process. The parameters @dst, @dst_pitch and @src refer
> + * to arrays. Each array must have at least as many entries as there are planes in
> + * @fb's format. Each entry stores the value for the format's respective color plane
> + * at the same index.
> + *
> + * This function does not apply clipping on @dst (i.e. the destination is at the
> + * top-left corner).
> + *
> + * Drivers can use this function for ABGR8888 devices that don't support XRGB8888
> + * natively. It sets an opaque alpha channel as part of the conversion.
> + */
> +void drm_fb_xrgb8888_to_abgr8888(struct iosys_map *dst, const unsigned int *dst_pitch,
> + const struct iosys_map *src,
> + const struct drm_framebuffer *fb,
> + const struct drm_rect *clip,
> + struct drm_format_conv_state *state)
> {
> static const u8 dst_pixsize[DRM_FORMAT_MAX_PLANES] = {
> 4,
> @@ -870,17 +892,40 @@ static void drm_fb_xrgb8888_to_abgr8888(struct iosys_map *dst, const unsigned in
> drm_fb_xfrm(dst, dst_pitch, dst_pixsize, src, fb, clip, false, state,
> drm_fb_xrgb8888_to_abgr8888_line);
> }
> +EXPORT_SYMBOL(drm_fb_xrgb8888_to_abgr8888);
>
> static void drm_fb_xrgb8888_to_xbgr8888_line(void *dbuf, const void *sbuf, unsigned int pixels)
> {
> drm_fb_xfrm_line_32to32(dbuf, sbuf, pixels, drm_pixel_xrgb8888_to_xbgr8888);
> }
>
> -static void drm_fb_xrgb8888_to_xbgr8888(struct iosys_map *dst, const unsigned int *dst_pitch,
> - const struct iosys_map *src,
> - const struct drm_framebuffer *fb,
> - const struct drm_rect *clip,
> - struct drm_format_conv_state *state)
> +/**
> + * drm_fb_xrgb8888_to_xbgr8888 - Convert XRGB8888 to XBGR8888 clip buffer
> + * @dst: Array of XBGR8888 destination buffers
> + * @dst_pitch: Array of numbers of bytes between the start of two consecutive scanlines
> + * within @dst; can be NULL if scanlines are stored next to each other.
> + * @src: Array of XRGB8888 source buffer
> + * @fb: DRM framebuffer
> + * @clip: Clip rectangle area to copy
> + * @state: Transform and conversion state
> + *
> + * This function copies parts of a framebuffer to display memory and converts the
> + * color format during the process. The parameters @dst, @dst_pitch and @src refer
> + * to arrays. Each array must have at least as many entries as there are planes in
> + * @fb's format. Each entry stores the value for the format's respective color plane
> + * at the same index.
> + *
> + * This function does not apply clipping on @dst (i.e. the destination is at the
> + * top-left corner).
> + *
> + * Drivers can use this function for XBGR8888 devices that don't support XRGB8888
> + * natively.
> + */
> +void drm_fb_xrgb8888_to_xbgr8888(struct iosys_map *dst, const unsigned int *dst_pitch,
> + const struct iosys_map *src,
> + const struct drm_framebuffer *fb,
> + const struct drm_rect *clip,
> + struct drm_format_conv_state *state)
> {
> static const u8 dst_pixsize[DRM_FORMAT_MAX_PLANES] = {
> 4,
> @@ -889,6 +934,49 @@ static void drm_fb_xrgb8888_to_xbgr8888(struct iosys_map *dst, const unsigned in
> drm_fb_xfrm(dst, dst_pitch, dst_pixsize, src, fb, clip, false, state,
> drm_fb_xrgb8888_to_xbgr8888_line);
> }
> +EXPORT_SYMBOL(drm_fb_xrgb8888_to_xbgr8888);
> +
> +static void drm_fb_xrgb8888_to_bgrx8888_line(void *dbuf, const void *sbuf, unsigned int pixels)
> +{
> + drm_fb_xfrm_line_32to32(dbuf, sbuf, pixels, drm_pixel_xrgb8888_to_bgrx8888);
> +}
> +
> +/**
> + * drm_fb_xrgb8888_to_bgrx8888 - Convert XRGB8888 to BGRX8888 clip buffer
> + * @dst: Array of BGRX8888 destination buffers
> + * @dst_pitch: Array of numbers of bytes between the start of two consecutive scanlines
> + * within @dst; can be NULL if scanlines are stored next to each other.
> + * @src: Array of XRGB8888 source buffer
> + * @fb: DRM framebuffer
> + * @clip: Clip rectangle area to copy
> + * @state: Transform and conversion state
> + *
> + * This function copies parts of a framebuffer to display memory and converts the
> + * color format during the process. The parameters @dst, @dst_pitch and @src refer
> + * to arrays. Each array must have at least as many entries as there are planes in
> + * @fb's format. Each entry stores the value for the format's respective color plane
> + * at the same index.
> + *
> + * This function does not apply clipping on @dst (i.e. the destination is at the
> + * top-left corner).
> + *
> + * Drivers can use this function for BGRX8888 devices that don't support XRGB8888
> + * natively.
> + */
> +void drm_fb_xrgb8888_to_bgrx8888(struct iosys_map *dst, const unsigned int *dst_pitch,
> + const struct iosys_map *src,
> + const struct drm_framebuffer *fb,
> + const struct drm_rect *clip,
> + struct drm_format_conv_state *state)
> +{
> + static const u8 dst_pixsize[DRM_FORMAT_MAX_PLANES] = {
> + 4,
> + };
> +
> + drm_fb_xfrm(dst, dst_pitch, dst_pixsize, src, fb, clip, false, state,
> + drm_fb_xrgb8888_to_bgrx8888_line);
> +}
> +EXPORT_SYMBOL(drm_fb_xrgb8888_to_bgrx8888);
>
> static void drm_fb_xrgb8888_to_xrgb2101010_line(void *dbuf, const void *sbuf, unsigned int pixels)
> {
> diff --git a/drivers/gpu/drm/drm_format_internal.h b/drivers/gpu/drm/drm_format_internal.h
> index 9f857bfa368d..0aa458b8a3e0 100644
> --- a/drivers/gpu/drm/drm_format_internal.h
> +++ b/drivers/gpu/drm/drm_format_internal.h
> @@ -111,6 +111,14 @@ static inline u32 drm_pixel_xrgb8888_to_xbgr8888(u32 pix)
> ((pix & 0x000000ff) << 16);
> }
>
> +static inline u32 drm_pixel_xrgb8888_to_bgrx8888(u32 pix)
> +{
> + return ((pix & 0xff000000) >> 24) | /* also copy filler bits */
> + ((pix & 0x00ff0000) >> 8) |
> + ((pix & 0x0000ff00) << 8) |
> + ((pix & 0x000000ff) << 24);
> +}
> +
> static inline u32 drm_pixel_xrgb8888_to_abgr8888(u32 pix)
> {
> return GENMASK(31, 24) | /* fill alpha bits */
> diff --git a/drivers/gpu/drm/tests/drm_format_helper_test.c b/drivers/gpu/drm/tests/drm_format_helper_test.c
> index 35cd3405d045..8aacc1ffa93a 100644
> --- a/drivers/gpu/drm/tests/drm_format_helper_test.c
> +++ b/drivers/gpu/drm/tests/drm_format_helper_test.c
> @@ -748,14 +748,9 @@ static void drm_test_fb_xrgb8888_to_rgb565(struct kunit *test)
> buf = dst.vaddr;
> memset(buf, 0, dst_size);
>
> - int blit_result = 0;
> -
> - blit_result = drm_fb_blit(&dst, dst_pitch, DRM_FORMAT_RGB565, &src, &fb, ¶ms->clip,
> - &fmtcnv_state);
> -
> + drm_fb_xrgb8888_to_rgb565(&dst, dst_pitch, &src, &fb, ¶ms->clip,
> + &fmtcnv_state, false);
> buf = le16buf_to_cpu(test, (__force const __le16 *)buf, dst_size / sizeof(__le16));
> -
> - KUNIT_EXPECT_FALSE(test, blit_result);
> KUNIT_EXPECT_MEMEQ(test, buf, result->expected, dst_size);
> }
>
> @@ -795,14 +790,8 @@ static void drm_test_fb_xrgb8888_to_xrgb1555(struct kunit *test)
> buf = dst.vaddr; /* restore original value of buf */
> memset(buf, 0, dst_size);
>
> - int blit_result = 0;
> -
> - blit_result = drm_fb_blit(&dst, dst_pitch, DRM_FORMAT_XRGB1555, &src, &fb, ¶ms->clip,
> - &fmtcnv_state);
> -
> + drm_fb_xrgb8888_to_xrgb1555(&dst, dst_pitch, &src, &fb, ¶ms->clip, &fmtcnv_state);
> buf = le16buf_to_cpu(test, (__force const __le16 *)buf, dst_size / sizeof(__le16));
> -
> - KUNIT_EXPECT_FALSE(test, blit_result);
> KUNIT_EXPECT_MEMEQ(test, buf, result->expected, dst_size);
> }
>
> @@ -842,14 +831,8 @@ static void drm_test_fb_xrgb8888_to_argb1555(struct kunit *test)
> buf = dst.vaddr; /* restore original value of buf */
> memset(buf, 0, dst_size);
>
> - int blit_result = 0;
> -
> - blit_result = drm_fb_blit(&dst, dst_pitch, DRM_FORMAT_ARGB1555, &src, &fb, ¶ms->clip,
> - &fmtcnv_state);
> -
> + drm_fb_xrgb8888_to_argb1555(&dst, dst_pitch, &src, &fb, ¶ms->clip, &fmtcnv_state);
> buf = le16buf_to_cpu(test, (__force const __le16 *)buf, dst_size / sizeof(__le16));
> -
> - KUNIT_EXPECT_FALSE(test, blit_result);
> KUNIT_EXPECT_MEMEQ(test, buf, result->expected, dst_size);
> }
>
> @@ -889,14 +872,8 @@ static void drm_test_fb_xrgb8888_to_rgba5551(struct kunit *test)
> buf = dst.vaddr; /* restore original value of buf */
> memset(buf, 0, dst_size);
>
> - int blit_result = 0;
> -
> - blit_result = drm_fb_blit(&dst, dst_pitch, DRM_FORMAT_RGBA5551, &src, &fb, ¶ms->clip,
> - &fmtcnv_state);
> -
> + drm_fb_xrgb8888_to_rgba5551(&dst, dst_pitch, &src, &fb, ¶ms->clip, &fmtcnv_state);
> buf = le16buf_to_cpu(test, (__force const __le16 *)buf, dst_size / sizeof(__le16));
> -
> - KUNIT_EXPECT_FALSE(test, blit_result);
> KUNIT_EXPECT_MEMEQ(test, buf, result->expected, dst_size);
> }
>
> @@ -939,12 +916,7 @@ static void drm_test_fb_xrgb8888_to_rgb888(struct kunit *test)
> buf = dst.vaddr; /* restore original value of buf */
> memset(buf, 0, dst_size);
>
> - int blit_result = 0;
> -
> - blit_result = drm_fb_blit(&dst, dst_pitch, DRM_FORMAT_RGB888, &src, &fb, ¶ms->clip,
> - &fmtcnv_state);
> -
> - KUNIT_EXPECT_FALSE(test, blit_result);
> + drm_fb_xrgb8888_to_rgb888(&dst, dst_pitch, &src, &fb, ¶ms->clip, &fmtcnv_state);
> KUNIT_EXPECT_MEMEQ(test, buf, result->expected, dst_size);
> }
>
> @@ -985,12 +957,8 @@ static void drm_test_fb_xrgb8888_to_bgr888(struct kunit *test)
> buf = dst.vaddr; /* restore original value of buf */
> memset(buf, 0, dst_size);
>
> - int blit_result = 0;
> -
> - blit_result = drm_fb_blit(&dst, &result->dst_pitch, DRM_FORMAT_BGR888, &src, &fb, ¶ms->clip,
> + drm_fb_xrgb8888_to_bgr888(&dst, &result->dst_pitch, &src, &fb, ¶ms->clip,
> &fmtcnv_state);
> -
> - KUNIT_EXPECT_FALSE(test, blit_result);
> KUNIT_EXPECT_MEMEQ(test, buf, result->expected, dst_size);
> }
>
> @@ -1030,14 +998,8 @@ static void drm_test_fb_xrgb8888_to_argb8888(struct kunit *test)
> buf = dst.vaddr; /* restore original value of buf */
> memset(buf, 0, dst_size);
>
> - int blit_result = 0;
> -
> - blit_result = drm_fb_blit(&dst, dst_pitch, DRM_FORMAT_ARGB8888, &src, &fb, ¶ms->clip,
> - &fmtcnv_state);
> -
> + drm_fb_xrgb8888_to_argb8888(&dst, dst_pitch, &src, &fb, ¶ms->clip, &fmtcnv_state);
> buf = le32buf_to_cpu(test, (__force const __le32 *)buf, dst_size / sizeof(u32));
> -
> - KUNIT_EXPECT_FALSE(test, blit_result);
> KUNIT_EXPECT_MEMEQ(test, buf, result->expected, dst_size);
> }
>
> @@ -1077,12 +1039,7 @@ static void drm_test_fb_xrgb8888_to_xrgb2101010(struct kunit *test)
> buf = dst.vaddr; /* restore original value of buf */
> memset(buf, 0, dst_size);
>
> - int blit_result = 0;
> -
> - blit_result = drm_fb_blit(&dst, dst_pitch, DRM_FORMAT_XRGB2101010, &src, &fb,
> - ¶ms->clip, &fmtcnv_state);
> -
> - KUNIT_EXPECT_FALSE(test, blit_result);
> + drm_fb_xrgb8888_to_xrgb2101010(&dst, dst_pitch, &src, &fb, ¶ms->clip, &fmtcnv_state);
> KUNIT_EXPECT_MEMEQ(test, buf, result->expected, dst_size);
> }
>
> @@ -1122,14 +1079,8 @@ static void drm_test_fb_xrgb8888_to_argb2101010(struct kunit *test)
> buf = dst.vaddr; /* restore original value of buf */
> memset(buf, 0, dst_size);
>
> - int blit_result = 0;
> -
> - blit_result = drm_fb_blit(&dst, dst_pitch, DRM_FORMAT_ARGB2101010, &src, &fb,
> - ¶ms->clip, &fmtcnv_state);
> -
> + drm_fb_xrgb8888_to_argb2101010(&dst, dst_pitch, &src, &fb, ¶ms->clip, &fmtcnv_state);
> buf = le32buf_to_cpu(test, (__force const __le32 *)buf, dst_size / sizeof(u32));
> -
> - KUNIT_EXPECT_FALSE(test, blit_result);
> KUNIT_EXPECT_MEMEQ(test, buf, result->expected, dst_size);
> }
>
> @@ -1202,23 +1153,15 @@ static void drm_test_fb_swab(struct kunit *test)
> buf = dst.vaddr; /* restore original value of buf */
> memset(buf, 0, dst_size);
>
> - int blit_result;
> -
> - blit_result = drm_fb_blit(&dst, dst_pitch, DRM_FORMAT_XRGB8888 | DRM_FORMAT_BIG_ENDIAN,
> - &src, &fb, ¶ms->clip, &fmtcnv_state);
> + drm_fb_swab(&dst, dst_pitch, &src, &fb, ¶ms->clip, false, &fmtcnv_state);
> buf = le32buf_to_cpu(test, (__force const __le32 *)buf, dst_size / sizeof(u32));
> -
> - KUNIT_EXPECT_FALSE(test, blit_result);
> KUNIT_EXPECT_MEMEQ(test, buf, result->expected, dst_size);
>
> buf = dst.vaddr;
> memset(buf, 0, dst_size);
>
> - blit_result = drm_fb_blit(&dst, dst_pitch, DRM_FORMAT_BGRX8888, &src, &fb, ¶ms->clip,
> - &fmtcnv_state);
> + drm_fb_xrgb8888_to_bgrx8888(&dst, dst_pitch, &src, &fb, ¶ms->clip, &fmtcnv_state);
> buf = le32buf_to_cpu(test, (__force const __le32 *)buf, dst_size / sizeof(u32));
> -
> - KUNIT_EXPECT_FALSE(test, blit_result);
> KUNIT_EXPECT_MEMEQ(test, buf, result->expected, dst_size);
>
> buf = dst.vaddr;
> @@ -1229,11 +1172,8 @@ static void drm_test_fb_swab(struct kunit *test)
> mock_format.format |= DRM_FORMAT_BIG_ENDIAN;
> fb.format = &mock_format;
>
> - blit_result = drm_fb_blit(&dst, dst_pitch, DRM_FORMAT_XRGB8888, &src, &fb, ¶ms->clip,
> - &fmtcnv_state);
> + drm_fb_swab(&dst, dst_pitch, &src, &fb, ¶ms->clip, false, &fmtcnv_state);
> buf = le32buf_to_cpu(test, (__force const __le32 *)buf, dst_size / sizeof(u32));
> -
> - KUNIT_EXPECT_FALSE(test, blit_result);
> KUNIT_EXPECT_MEMEQ(test, buf, result->expected, dst_size);
> }
>
> @@ -1266,14 +1206,8 @@ static void drm_test_fb_xrgb8888_to_abgr8888(struct kunit *test)
> const unsigned int *dst_pitch = (result->dst_pitch == TEST_USE_DEFAULT_PITCH) ?
> NULL : &result->dst_pitch;
>
> - int blit_result = 0;
> -
> - blit_result = drm_fb_blit(&dst, dst_pitch, DRM_FORMAT_ABGR8888, &src, &fb, ¶ms->clip,
> - &fmtcnv_state);
> -
> + drm_fb_xrgb8888_to_abgr8888(&dst, dst_pitch, &src, &fb, ¶ms->clip, &fmtcnv_state);
> buf = le32buf_to_cpu(test, (__force const __le32 *)buf, dst_size / sizeof(u32));
> -
> - KUNIT_EXPECT_FALSE(test, blit_result);
> KUNIT_EXPECT_MEMEQ(test, buf, result->expected, dst_size);
> }
>
> @@ -1306,14 +1240,8 @@ static void drm_test_fb_xrgb8888_to_xbgr8888(struct kunit *test)
> const unsigned int *dst_pitch = (result->dst_pitch == TEST_USE_DEFAULT_PITCH) ?
> NULL : &result->dst_pitch;
>
> - int blit_result = 0;
> -
> - blit_result = drm_fb_blit(&dst, dst_pitch, DRM_FORMAT_XBGR8888, &src, &fb, ¶ms->clip,
> - &fmtcnv_state);
> -
> + drm_fb_xrgb8888_to_xbgr8888(&dst, dst_pitch, &src, &fb, ¶ms->clip, &fmtcnv_state);
> buf = le32buf_to_cpu(test, (__force const __le32 *)buf, dst_size / sizeof(u32));
> -
> - KUNIT_EXPECT_FALSE(test, blit_result);
> KUNIT_EXPECT_MEMEQ(test, buf, result->expected, dst_size);
> }
>
> @@ -1910,12 +1838,8 @@ static void drm_test_fb_memcpy(struct kunit *test)
> memset(buf[i], 0, dst_size[i]);
> }
>
> - int blit_result;
> -
> - blit_result = drm_fb_blit(dst, dst_pitches, params->format, src, &fb, ¶ms->clip,
> - &fmtcnv_state);
> + drm_fb_memcpy(dst, dst_pitches, src, &fb, ¶ms->clip);
>
> - KUNIT_EXPECT_FALSE(test, blit_result);
> for (size_t i = 0; i < fb.format->num_planes; i++) {
> expected[i] = cpubuf_to_le32(test, params->expected[i], TEST_BUF_SIZE);
> KUNIT_EXPECT_MEMEQ_MSG(test, buf[i], expected[i], dst_size[i],
> diff --git a/include/drm/drm_format_helper.h b/include/drm/drm_format_helper.h
> index d8539174ca11..49a2e09155d1 100644
> --- a/include/drm/drm_format_helper.h
> +++ b/include/drm/drm_format_helper.h
> @@ -102,6 +102,15 @@ void drm_fb_xrgb8888_to_bgr888(struct iosys_map *dst, const unsigned int *dst_pi
> void drm_fb_xrgb8888_to_argb8888(struct iosys_map *dst, const unsigned int *dst_pitch,
> const struct iosys_map *src, const struct drm_framebuffer *fb,
> const struct drm_rect *clip, struct drm_format_conv_state *state);
> +void drm_fb_xrgb8888_to_abgr8888(struct iosys_map *dst, const unsigned int *dst_pitch,
> + const struct iosys_map *src, const struct drm_framebuffer *fb,
> + const struct drm_rect *clip, struct drm_format_conv_state *state);
> +void drm_fb_xrgb8888_to_xbgr8888(struct iosys_map *dst, const unsigned int *dst_pitch,
> + const struct iosys_map *src, const struct drm_framebuffer *fb,
> + const struct drm_rect *clip, struct drm_format_conv_state *state);
> +void drm_fb_xrgb8888_to_bgrx8888(struct iosys_map *dst, const unsigned int *dst_pitch,
> + const struct iosys_map *src, const struct drm_framebuffer *fb,
> + const struct drm_rect *clip, struct drm_format_conv_state *state);
> void drm_fb_xrgb8888_to_xrgb2101010(struct iosys_map *dst, const unsigned int *dst_pitch,
> const struct iosys_map *src, const struct drm_framebuffer *fb,
> const struct drm_rect *clip,
> --
> 2.49.0
>
next prev parent reply other threads:[~2025-06-13 14:00 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-12 13:52 [PATCH v2 0/3] drm/tests: Update format-helper tests for sysfb Thomas Zimmermann
2025-06-12 13:52 ` [PATCH v2 1/3] drm/tests: Do not use drm_fb_blit() in format-helper tests Thomas Zimmermann
2025-06-13 14:00 ` José Expósito [this message]
2025-06-12 13:52 ` [PATCH v2 2/3] drm/tests: Test drm_fb_build_fourcc_list() in separate test suite Thomas Zimmermann
2025-06-13 14:03 ` José Expósito
2025-06-13 15:41 ` Thomas Zimmermann
2025-06-12 13:52 ` [PATCH v2 3/3] drm/format-helper: Move drm_fb_build_fourcc_list() to sysfb helpers Thomas Zimmermann
2025-06-13 14:53 ` José Expósito
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=aEwu91r9WfjGB6Ny@fedora \
--to=jose.exposito89@gmail.com \
--cc=arthurgrillo@riseup.net \
--cc=dri-devel@lists.freedesktop.org \
--cc=javierm@redhat.com \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mripard@kernel.org \
--cc=tzimmermann@suse.de \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.