]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/tests: Test drm_fb_build_fourcc_list() in separate test suite
authorThomas Zimmermann <tzimmermann@suse.de>
Mon, 16 Jun 2025 08:37:05 +0000 (10:37 +0200)
committerThomas Zimmermann <tzimmermann@suse.de>
Wed, 18 Jun 2025 08:46:03 +0000 (10:46 +0200)
Only sysfb drivers use drm_fb_build_fourcc_list(). The helper will
be moved from format helpers to sysfb helpers. Moving the related
tests to their own test suite.

v3:
- rename tests according to filename (José)
v2:
- rename filename to match tested code (Maxime)

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: José Expósito <jose.exposito89@gmail.com>
Acked-by: Maxime Ripard <mripard@kernel.org>
Link: https://lore.kernel.org/r/20250616083846.221396-3-tzimmermann@suse.de
drivers/gpu/drm/tests/Makefile
drivers/gpu/drm/tests/drm_format_helper_test.c
drivers/gpu/drm/tests/drm_sysfb_modeset_test.c [new file with mode: 0644]

index 3afd6587df0831a0d10e91ff0a584af6ba1813e4..c0e952293ad021ba6f7da371ffcf6074734bc7c1 100644 (file)
@@ -23,6 +23,7 @@ obj-$(CONFIG_DRM_KUNIT_TEST) += \
        drm_modes_test.o \
        drm_plane_helper_test.o \
        drm_probe_helper_test.o \
-       drm_rect_test.o
+       drm_rect_test.o \
+       drm_sysfb_modeset_test.o
 
 CFLAGS_drm_mm_test.o := $(DISABLE_STRUCTLEAK_PLUGIN)
index 7fd4eac3c55e0929a549a35757eaf10c47c1eac3..ad06762db6719f1b24fd9e38ee9a0cefa39d1d7f 100644 (file)
@@ -1335,147 +1335,6 @@ static void drm_test_fb_clip_offset(struct kunit *test)
        KUNIT_EXPECT_EQ(test, offset, params->expected_offset);
 }
 
-struct fb_build_fourcc_list_case {
-       const char *name;
-       u32 native_fourccs[TEST_BUF_SIZE];
-       size_t native_fourccs_size;
-       u32 expected[TEST_BUF_SIZE];
-       size_t expected_fourccs_size;
-};
-
-static struct fb_build_fourcc_list_case fb_build_fourcc_list_cases[] = {
-       {
-               .name = "no native formats",
-               .native_fourccs = { },
-               .native_fourccs_size = 0,
-               .expected = { DRM_FORMAT_XRGB8888 },
-               .expected_fourccs_size = 1,
-       },
-       {
-               .name = "XRGB8888 as native format",
-               .native_fourccs = { DRM_FORMAT_XRGB8888 },
-               .native_fourccs_size = 1,
-               .expected = { DRM_FORMAT_XRGB8888 },
-               .expected_fourccs_size = 1,
-       },
-       {
-               .name = "remove duplicates",
-               .native_fourccs = {
-                       DRM_FORMAT_XRGB8888,
-                       DRM_FORMAT_XRGB8888,
-                       DRM_FORMAT_RGB888,
-                       DRM_FORMAT_RGB888,
-                       DRM_FORMAT_RGB888,
-                       DRM_FORMAT_XRGB8888,
-                       DRM_FORMAT_RGB888,
-                       DRM_FORMAT_RGB565,
-                       DRM_FORMAT_RGB888,
-                       DRM_FORMAT_XRGB8888,
-                       DRM_FORMAT_RGB565,
-                       DRM_FORMAT_RGB565,
-                       DRM_FORMAT_XRGB8888,
-               },
-               .native_fourccs_size = 11,
-               .expected = {
-                       DRM_FORMAT_XRGB8888,
-                       DRM_FORMAT_RGB888,
-                       DRM_FORMAT_RGB565,
-               },
-               .expected_fourccs_size = 3,
-       },
-       {
-               .name = "convert alpha formats",
-               .native_fourccs = {
-                       DRM_FORMAT_ARGB1555,
-                       DRM_FORMAT_ABGR1555,
-                       DRM_FORMAT_RGBA5551,
-                       DRM_FORMAT_BGRA5551,
-                       DRM_FORMAT_ARGB8888,
-                       DRM_FORMAT_ABGR8888,
-                       DRM_FORMAT_RGBA8888,
-                       DRM_FORMAT_BGRA8888,
-                       DRM_FORMAT_ARGB2101010,
-                       DRM_FORMAT_ABGR2101010,
-                       DRM_FORMAT_RGBA1010102,
-                       DRM_FORMAT_BGRA1010102,
-               },
-               .native_fourccs_size = 12,
-               .expected = {
-                       DRM_FORMAT_XRGB1555,
-                       DRM_FORMAT_XBGR1555,
-                       DRM_FORMAT_RGBX5551,
-                       DRM_FORMAT_BGRX5551,
-                       DRM_FORMAT_XRGB8888,
-                       DRM_FORMAT_XBGR8888,
-                       DRM_FORMAT_RGBX8888,
-                       DRM_FORMAT_BGRX8888,
-                       DRM_FORMAT_XRGB2101010,
-                       DRM_FORMAT_XBGR2101010,
-                       DRM_FORMAT_RGBX1010102,
-                       DRM_FORMAT_BGRX1010102,
-               },
-               .expected_fourccs_size = 12,
-       },
-       {
-               .name = "random formats",
-               .native_fourccs = {
-                       DRM_FORMAT_Y212,
-                       DRM_FORMAT_ARGB1555,
-                       DRM_FORMAT_ABGR16161616F,
-                       DRM_FORMAT_C8,
-                       DRM_FORMAT_BGR888,
-                       DRM_FORMAT_XRGB1555,
-                       DRM_FORMAT_RGBA5551,
-                       DRM_FORMAT_BGR565_A8,
-                       DRM_FORMAT_R10,
-                       DRM_FORMAT_XYUV8888,
-               },
-               .native_fourccs_size = 10,
-               .expected = {
-                       DRM_FORMAT_Y212,
-                       DRM_FORMAT_XRGB1555,
-                       DRM_FORMAT_ABGR16161616F,
-                       DRM_FORMAT_C8,
-                       DRM_FORMAT_BGR888,
-                       DRM_FORMAT_RGBX5551,
-                       DRM_FORMAT_BGR565_A8,
-                       DRM_FORMAT_R10,
-                       DRM_FORMAT_XYUV8888,
-                       DRM_FORMAT_XRGB8888,
-               },
-               .expected_fourccs_size = 10,
-       },
-};
-
-static void fb_build_fourcc_list_case_desc(struct fb_build_fourcc_list_case *t, char *desc)
-{
-       strscpy(desc, t->name, KUNIT_PARAM_DESC_SIZE);
-}
-
-KUNIT_ARRAY_PARAM(fb_build_fourcc_list, fb_build_fourcc_list_cases, fb_build_fourcc_list_case_desc);
-
-static void drm_test_fb_build_fourcc_list(struct kunit *test)
-{
-       const struct fb_build_fourcc_list_case *params = test->param_value;
-       u32 fourccs_out[TEST_BUF_SIZE] = {0};
-       size_t nfourccs_out;
-       struct drm_device *drm;
-       struct device *dev;
-
-       dev = drm_kunit_helper_alloc_device(test);
-       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dev);
-
-       drm = __drm_kunit_helper_alloc_drm_device(test, dev, sizeof(*drm), 0, DRIVER_MODESET);
-       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, drm);
-
-       nfourccs_out = drm_fb_build_fourcc_list(drm, params->native_fourccs,
-                                               params->native_fourccs_size,
-                                               fourccs_out, TEST_BUF_SIZE);
-
-       KUNIT_EXPECT_EQ(test, nfourccs_out, params->expected_fourccs_size);
-       KUNIT_EXPECT_MEMEQ(test, fourccs_out, params->expected, TEST_BUF_SIZE);
-}
-
 struct fb_memcpy_case {
        const char *name;
        u32 format;
@@ -1864,7 +1723,6 @@ static struct kunit_case drm_format_helper_test_cases[] = {
        KUNIT_CASE_PARAM(drm_test_fb_xrgb8888_to_xbgr8888, convert_xrgb8888_gen_params),
        KUNIT_CASE_PARAM(drm_test_fb_xrgb8888_to_abgr8888, convert_xrgb8888_gen_params),
        KUNIT_CASE_PARAM(drm_test_fb_clip_offset, clip_offset_gen_params),
-       KUNIT_CASE_PARAM(drm_test_fb_build_fourcc_list, fb_build_fourcc_list_gen_params),
        KUNIT_CASE_PARAM(drm_test_fb_memcpy, fb_memcpy_gen_params),
        {}
 };
diff --git a/drivers/gpu/drm/tests/drm_sysfb_modeset_test.c b/drivers/gpu/drm/tests/drm_sysfb_modeset_test.c
new file mode 100644 (file)
index 0000000..5104fb2
--- /dev/null
@@ -0,0 +1,166 @@
+// SPDX-License-Identifier: GPL-2.0+
+
+#include <kunit/test.h>
+
+#include <drm/drm_format_helper.h>
+#include <drm/drm_fourcc.h>
+#include <drm/drm_kunit_helpers.h>
+
+#define TEST_BUF_SIZE 50
+
+struct fb_build_fourcc_list_case {
+       const char *name;
+       u32 native_fourccs[TEST_BUF_SIZE];
+       size_t native_fourccs_size;
+       u32 expected[TEST_BUF_SIZE];
+       size_t expected_fourccs_size;
+};
+
+static struct fb_build_fourcc_list_case fb_build_fourcc_list_cases[] = {
+       {
+               .name = "no native formats",
+               .native_fourccs = { },
+               .native_fourccs_size = 0,
+               .expected = { DRM_FORMAT_XRGB8888 },
+               .expected_fourccs_size = 1,
+       },
+       {
+               .name = "XRGB8888 as native format",
+               .native_fourccs = { DRM_FORMAT_XRGB8888 },
+               .native_fourccs_size = 1,
+               .expected = { DRM_FORMAT_XRGB8888 },
+               .expected_fourccs_size = 1,
+       },
+       {
+               .name = "remove duplicates",
+               .native_fourccs = {
+                       DRM_FORMAT_XRGB8888,
+                       DRM_FORMAT_XRGB8888,
+                       DRM_FORMAT_RGB888,
+                       DRM_FORMAT_RGB888,
+                       DRM_FORMAT_RGB888,
+                       DRM_FORMAT_XRGB8888,
+                       DRM_FORMAT_RGB888,
+                       DRM_FORMAT_RGB565,
+                       DRM_FORMAT_RGB888,
+                       DRM_FORMAT_XRGB8888,
+                       DRM_FORMAT_RGB565,
+                       DRM_FORMAT_RGB565,
+                       DRM_FORMAT_XRGB8888,
+               },
+               .native_fourccs_size = 11,
+               .expected = {
+                       DRM_FORMAT_XRGB8888,
+                       DRM_FORMAT_RGB888,
+                       DRM_FORMAT_RGB565,
+               },
+               .expected_fourccs_size = 3,
+       },
+       {
+               .name = "convert alpha formats",
+               .native_fourccs = {
+                       DRM_FORMAT_ARGB1555,
+                       DRM_FORMAT_ABGR1555,
+                       DRM_FORMAT_RGBA5551,
+                       DRM_FORMAT_BGRA5551,
+                       DRM_FORMAT_ARGB8888,
+                       DRM_FORMAT_ABGR8888,
+                       DRM_FORMAT_RGBA8888,
+                       DRM_FORMAT_BGRA8888,
+                       DRM_FORMAT_ARGB2101010,
+                       DRM_FORMAT_ABGR2101010,
+                       DRM_FORMAT_RGBA1010102,
+                       DRM_FORMAT_BGRA1010102,
+               },
+               .native_fourccs_size = 12,
+               .expected = {
+                       DRM_FORMAT_XRGB1555,
+                       DRM_FORMAT_XBGR1555,
+                       DRM_FORMAT_RGBX5551,
+                       DRM_FORMAT_BGRX5551,
+                       DRM_FORMAT_XRGB8888,
+                       DRM_FORMAT_XBGR8888,
+                       DRM_FORMAT_RGBX8888,
+                       DRM_FORMAT_BGRX8888,
+                       DRM_FORMAT_XRGB2101010,
+                       DRM_FORMAT_XBGR2101010,
+                       DRM_FORMAT_RGBX1010102,
+                       DRM_FORMAT_BGRX1010102,
+               },
+               .expected_fourccs_size = 12,
+       },
+       {
+               .name = "random formats",
+               .native_fourccs = {
+                       DRM_FORMAT_Y212,
+                       DRM_FORMAT_ARGB1555,
+                       DRM_FORMAT_ABGR16161616F,
+                       DRM_FORMAT_C8,
+                       DRM_FORMAT_BGR888,
+                       DRM_FORMAT_XRGB1555,
+                       DRM_FORMAT_RGBA5551,
+                       DRM_FORMAT_BGR565_A8,
+                       DRM_FORMAT_R10,
+                       DRM_FORMAT_XYUV8888,
+               },
+               .native_fourccs_size = 10,
+               .expected = {
+                       DRM_FORMAT_Y212,
+                       DRM_FORMAT_XRGB1555,
+                       DRM_FORMAT_ABGR16161616F,
+                       DRM_FORMAT_C8,
+                       DRM_FORMAT_BGR888,
+                       DRM_FORMAT_RGBX5551,
+                       DRM_FORMAT_BGR565_A8,
+                       DRM_FORMAT_R10,
+                       DRM_FORMAT_XYUV8888,
+                       DRM_FORMAT_XRGB8888,
+               },
+               .expected_fourccs_size = 10,
+       },
+};
+
+static void fb_build_fourcc_list_case_desc(struct fb_build_fourcc_list_case *t, char *desc)
+{
+       strscpy(desc, t->name, KUNIT_PARAM_DESC_SIZE);
+}
+
+KUNIT_ARRAY_PARAM(fb_build_fourcc_list, fb_build_fourcc_list_cases, fb_build_fourcc_list_case_desc);
+
+static void drm_test_fb_build_fourcc_list(struct kunit *test)
+{
+       const struct fb_build_fourcc_list_case *params = test->param_value;
+       u32 fourccs_out[TEST_BUF_SIZE] = {0};
+       size_t nfourccs_out;
+       struct drm_device *drm;
+       struct device *dev;
+
+       dev = drm_kunit_helper_alloc_device(test);
+       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dev);
+
+       drm = __drm_kunit_helper_alloc_drm_device(test, dev, sizeof(*drm), 0, DRIVER_MODESET);
+       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, drm);
+
+       nfourccs_out = drm_fb_build_fourcc_list(drm, params->native_fourccs,
+                                               params->native_fourccs_size,
+                                               fourccs_out, TEST_BUF_SIZE);
+
+       KUNIT_EXPECT_EQ(test, nfourccs_out, params->expected_fourccs_size);
+       KUNIT_EXPECT_MEMEQ(test, fourccs_out, params->expected, TEST_BUF_SIZE);
+}
+
+static struct kunit_case drm_sysfb_modeset_test_cases[] = {
+       KUNIT_CASE_PARAM(drm_test_fb_build_fourcc_list, fb_build_fourcc_list_gen_params),
+       {}
+};
+
+static struct kunit_suite drm_sysfb_modeset_test_suite = {
+       .name = "drm_sysfb_modeset_test",
+       .test_cases = drm_sysfb_modeset_test_cases,
+};
+
+kunit_test_suite(drm_sysfb_modeset_test_suite);
+
+MODULE_DESCRIPTION("KUnit tests for the drm_sysfb_modeset APIs");
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("José Expósito <jose.exposito89@gmail.com>");