|
Patrik Jakobsson |
b0bfed |
From 18c8485236a5e3f491b670c018ae391c9cb84dfa Mon Sep 17 00:00:00 2001
|
|
Patrik Jakobsson |
b0bfed |
From: =?UTF-8?q?Jos=C3=A9=20Exp=C3=B3sito?= <jose.exposito89@gmail.com>
|
|
Patrik Jakobsson |
b0bfed |
Date: Wed, 27 Jul 2022 01:09:13 +0200
|
|
Patrik Jakobsson |
b0bfed |
Subject: drm/format-helper: Fix test on big endian architectures
|
|
Patrik Jakobsson |
b0bfed |
MIME-Version: 1.0
|
|
Patrik Jakobsson |
b0bfed |
Content-Type: text/plain; charset=UTF-8
|
|
Patrik Jakobsson |
b0bfed |
Content-Transfer-Encoding: 8bit
|
|
Patrik Jakobsson |
b0bfed |
Git-commit: 18c8485236a5e3f491b670c018ae391c9cb84dfa
|
|
Patrik Jakobsson |
b0bfed |
Patch-mainline: v6.1-rc1
|
|
Patrik Jakobsson |
b0bfed |
References: git-fixes
|
|
Patrik Jakobsson |
b0bfed |
|
|
Patrik Jakobsson |
b0bfed |
The tests fail on big endian architectures, like PowerPC:
|
|
Patrik Jakobsson |
b0bfed |
|
|
Patrik Jakobsson |
b0bfed |
$ ./tools/testing/kunit/kunit.py run \
|
|
Patrik Jakobsson |
b0bfed |
--kunitconfig=drivers/gpu/drm/tests \
|
|
Patrik Jakobsson |
b0bfed |
--arch=powerpc --cross_compile=powerpc64-linux-gnu-
|
|
Patrik Jakobsson |
b0bfed |
|
|
Patrik Jakobsson |
b0bfed |
Transform the XRGB8888 buffer from little endian to the CPU endian
|
|
Patrik Jakobsson |
b0bfed |
before calling the conversion function to avoid this error.
|
|
Patrik Jakobsson |
b0bfed |
|
|
Patrik Jakobsson |
b0bfed |
Fixes: 8f456104915f ("drm/format-helper: Add KUnit tests for drm_fb_xrgb8888_to_rgb332()")
|
|
Patrik Jakobsson |
b0bfed |
Reported-by: David Gow <davidgow@google.com>
|
|
Patrik Jakobsson |
b0bfed |
Reviewed-by: David Gow <davidgow@google.com>
|
|
Patrik Jakobsson |
b0bfed |
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
|
|
Patrik Jakobsson |
b0bfed |
Link: https://patchwork.freedesktop.org/patch/msgid/20220726230916.390575-2-jose.exposito89@gmail.com
|
|
Patrik Jakobsson |
b0bfed |
Acked-by: Patrik Jakobsson <pjakobsson@suse.de>
|
|
Patrik Jakobsson |
b0bfed |
---
|
|
Patrik Jakobsson |
b0bfed |
.../gpu/drm/tests/drm_format_helper_test.c | 23 +++++++++++++++++--
|
|
Patrik Jakobsson |
b0bfed |
1 file changed, 21 insertions(+), 2 deletions(-)
|
|
Patrik Jakobsson |
b0bfed |
|
|
Patrik Jakobsson |
b0bfed |
diff --git a/drivers/gpu/drm/tests/drm_format_helper_test.c b/drivers/gpu/drm/tests/drm_format_helper_test.c
|
|
Patrik Jakobsson |
b0bfed |
index 98583bf56044..eefaba3aaea2 100644
|
|
Patrik Jakobsson |
b0bfed |
--- a/drivers/gpu/drm/tests/drm_format_helper_test.c
|
|
Patrik Jakobsson |
b0bfed |
+++ b/drivers/gpu/drm/tests/drm_format_helper_test.c
|
|
Patrik Jakobsson |
b0bfed |
@@ -111,6 +111,21 @@ static size_t conversion_buf_size(u32 dst_format, unsigned int dst_pitch,
|
|
Patrik Jakobsson |
b0bfed |
return dst_pitch * drm_rect_height(clip);
|
|
Patrik Jakobsson |
b0bfed |
}
|
|
Patrik Jakobsson |
b0bfed |
|
|
Patrik Jakobsson |
b0bfed |
+static u32 *le32buf_to_cpu(struct kunit *test, const u32 *buf, size_t buf_size)
|
|
Patrik Jakobsson |
b0bfed |
+{
|
|
Patrik Jakobsson |
b0bfed |
+ u32 *dst = NULL;
|
|
Patrik Jakobsson |
b0bfed |
+ int n;
|
|
Patrik Jakobsson |
b0bfed |
+
|
|
Patrik Jakobsson |
b0bfed |
+ dst = kunit_kzalloc(test, sizeof(*dst) * buf_size, GFP_KERNEL);
|
|
Patrik Jakobsson |
b0bfed |
+ if (!dst)
|
|
Patrik Jakobsson |
b0bfed |
+ return NULL;
|
|
Patrik Jakobsson |
b0bfed |
+
|
|
Patrik Jakobsson |
b0bfed |
+ for (n = 0; n < buf_size; n++)
|
|
Patrik Jakobsson |
b0bfed |
+ dst[n] = le32_to_cpu((__force __le32)buf[n]);
|
|
Patrik Jakobsson |
b0bfed |
+
|
|
Patrik Jakobsson |
b0bfed |
+ return dst;
|
|
Patrik Jakobsson |
b0bfed |
+}
|
|
Patrik Jakobsson |
b0bfed |
+
|
|
Patrik Jakobsson |
b0bfed |
static void xrgb8888_to_rgb332_case_desc(struct xrgb8888_to_rgb332_case *t,
|
|
Patrik Jakobsson |
b0bfed |
char *desc)
|
|
Patrik Jakobsson |
b0bfed |
{
|
|
Patrik Jakobsson |
b0bfed |
@@ -125,6 +140,7 @@ static void xrgb8888_to_rgb332_test(struct kunit *test)
|
|
Patrik Jakobsson |
b0bfed |
const struct xrgb8888_to_rgb332_case *params = test->param_value;
|
|
Patrik Jakobsson |
b0bfed |
size_t dst_size;
|
|
Patrik Jakobsson |
b0bfed |
__u8 *dst = NULL;
|
|
Patrik Jakobsson |
b0bfed |
+ __u32 *src = NULL;
|
|
Patrik Jakobsson |
b0bfed |
|
|
Patrik Jakobsson |
b0bfed |
struct drm_framebuffer fb = {
|
|
Patrik Jakobsson |
b0bfed |
.format = drm_format_info(DRM_FORMAT_XRGB8888),
|
|
Patrik Jakobsson |
b0bfed |
@@ -138,8 +154,11 @@ static void xrgb8888_to_rgb332_test(struct kunit *test)
|
|
Patrik Jakobsson |
b0bfed |
dst = kunit_kzalloc(test, dst_size, GFP_KERNEL);
|
|
Patrik Jakobsson |
b0bfed |
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dst);
|
|
Patrik Jakobsson |
b0bfed |
|
|
Patrik Jakobsson |
b0bfed |
- drm_fb_xrgb8888_to_rgb332(dst, params->dst_pitch, params->xrgb8888,
|
|
Patrik Jakobsson |
b0bfed |
- &fb, ¶ms->clip);
|
|
Patrik Jakobsson |
b0bfed |
+ src = le32buf_to_cpu(test, params->xrgb8888, TEST_BUF_SIZE);
|
|
Patrik Jakobsson |
b0bfed |
+ KUNIT_ASSERT_NOT_ERR_OR_NULL(test, src);
|
|
Patrik Jakobsson |
b0bfed |
+
|
|
Patrik Jakobsson |
b0bfed |
+ drm_fb_xrgb8888_to_rgb332(dst, params->dst_pitch, src, &fb,
|
|
Patrik Jakobsson |
b0bfed |
+ ¶ms->clip);
|
|
Patrik Jakobsson |
b0bfed |
KUNIT_EXPECT_EQ(test, memcmp(dst, params->expected, dst_size), 0);
|
|
Patrik Jakobsson |
b0bfed |
}
|
|
Patrik Jakobsson |
b0bfed |
|
|
Patrik Jakobsson |
b0bfed |
--
|
|
Patrik Jakobsson |
b0bfed |
2.39.0
|
|
Patrik Jakobsson |
b0bfed |
|