Skip to content

Commit 4f522a4

Browse files
author
Thomas Zimmermann
committed
drm/tests: Test drm_fb_build_fourcc_list() in separate test suite
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 <[email protected]> Reviewed-by: José Expósito <[email protected]> Acked-by: Maxime Ripard <[email protected]> Link: https://lore.kernel.org/r/[email protected]
1 parent 5a4856e commit 4f522a4

File tree

3 files changed

+168
-143
lines changed

3 files changed

+168
-143
lines changed

drivers/gpu/drm/tests/Makefile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ obj-$(CONFIG_DRM_KUNIT_TEST) += \
2323
drm_modes_test.o \
2424
drm_plane_helper_test.o \
2525
drm_probe_helper_test.o \
26-
drm_rect_test.o
26+
drm_rect_test.o \
27+
drm_sysfb_modeset_test.o
2728

2829
CFLAGS_drm_mm_test.o := $(DISABLE_STRUCTLEAK_PLUGIN)

drivers/gpu/drm/tests/drm_format_helper_test.c

Lines changed: 0 additions & 142 deletions
Original file line numberDiff line numberDiff line change
@@ -1335,147 +1335,6 @@ static void drm_test_fb_clip_offset(struct kunit *test)
13351335
KUNIT_EXPECT_EQ(test, offset, params->expected_offset);
13361336
}
13371337

1338-
struct fb_build_fourcc_list_case {
1339-
const char *name;
1340-
u32 native_fourccs[TEST_BUF_SIZE];
1341-
size_t native_fourccs_size;
1342-
u32 expected[TEST_BUF_SIZE];
1343-
size_t expected_fourccs_size;
1344-
};
1345-
1346-
static struct fb_build_fourcc_list_case fb_build_fourcc_list_cases[] = {
1347-
{
1348-
.name = "no native formats",
1349-
.native_fourccs = { },
1350-
.native_fourccs_size = 0,
1351-
.expected = { DRM_FORMAT_XRGB8888 },
1352-
.expected_fourccs_size = 1,
1353-
},
1354-
{
1355-
.name = "XRGB8888 as native format",
1356-
.native_fourccs = { DRM_FORMAT_XRGB8888 },
1357-
.native_fourccs_size = 1,
1358-
.expected = { DRM_FORMAT_XRGB8888 },
1359-
.expected_fourccs_size = 1,
1360-
},
1361-
{
1362-
.name = "remove duplicates",
1363-
.native_fourccs = {
1364-
DRM_FORMAT_XRGB8888,
1365-
DRM_FORMAT_XRGB8888,
1366-
DRM_FORMAT_RGB888,
1367-
DRM_FORMAT_RGB888,
1368-
DRM_FORMAT_RGB888,
1369-
DRM_FORMAT_XRGB8888,
1370-
DRM_FORMAT_RGB888,
1371-
DRM_FORMAT_RGB565,
1372-
DRM_FORMAT_RGB888,
1373-
DRM_FORMAT_XRGB8888,
1374-
DRM_FORMAT_RGB565,
1375-
DRM_FORMAT_RGB565,
1376-
DRM_FORMAT_XRGB8888,
1377-
},
1378-
.native_fourccs_size = 11,
1379-
.expected = {
1380-
DRM_FORMAT_XRGB8888,
1381-
DRM_FORMAT_RGB888,
1382-
DRM_FORMAT_RGB565,
1383-
},
1384-
.expected_fourccs_size = 3,
1385-
},
1386-
{
1387-
.name = "convert alpha formats",
1388-
.native_fourccs = {
1389-
DRM_FORMAT_ARGB1555,
1390-
DRM_FORMAT_ABGR1555,
1391-
DRM_FORMAT_RGBA5551,
1392-
DRM_FORMAT_BGRA5551,
1393-
DRM_FORMAT_ARGB8888,
1394-
DRM_FORMAT_ABGR8888,
1395-
DRM_FORMAT_RGBA8888,
1396-
DRM_FORMAT_BGRA8888,
1397-
DRM_FORMAT_ARGB2101010,
1398-
DRM_FORMAT_ABGR2101010,
1399-
DRM_FORMAT_RGBA1010102,
1400-
DRM_FORMAT_BGRA1010102,
1401-
},
1402-
.native_fourccs_size = 12,
1403-
.expected = {
1404-
DRM_FORMAT_XRGB1555,
1405-
DRM_FORMAT_XBGR1555,
1406-
DRM_FORMAT_RGBX5551,
1407-
DRM_FORMAT_BGRX5551,
1408-
DRM_FORMAT_XRGB8888,
1409-
DRM_FORMAT_XBGR8888,
1410-
DRM_FORMAT_RGBX8888,
1411-
DRM_FORMAT_BGRX8888,
1412-
DRM_FORMAT_XRGB2101010,
1413-
DRM_FORMAT_XBGR2101010,
1414-
DRM_FORMAT_RGBX1010102,
1415-
DRM_FORMAT_BGRX1010102,
1416-
},
1417-
.expected_fourccs_size = 12,
1418-
},
1419-
{
1420-
.name = "random formats",
1421-
.native_fourccs = {
1422-
DRM_FORMAT_Y212,
1423-
DRM_FORMAT_ARGB1555,
1424-
DRM_FORMAT_ABGR16161616F,
1425-
DRM_FORMAT_C8,
1426-
DRM_FORMAT_BGR888,
1427-
DRM_FORMAT_XRGB1555,
1428-
DRM_FORMAT_RGBA5551,
1429-
DRM_FORMAT_BGR565_A8,
1430-
DRM_FORMAT_R10,
1431-
DRM_FORMAT_XYUV8888,
1432-
},
1433-
.native_fourccs_size = 10,
1434-
.expected = {
1435-
DRM_FORMAT_Y212,
1436-
DRM_FORMAT_XRGB1555,
1437-
DRM_FORMAT_ABGR16161616F,
1438-
DRM_FORMAT_C8,
1439-
DRM_FORMAT_BGR888,
1440-
DRM_FORMAT_RGBX5551,
1441-
DRM_FORMAT_BGR565_A8,
1442-
DRM_FORMAT_R10,
1443-
DRM_FORMAT_XYUV8888,
1444-
DRM_FORMAT_XRGB8888,
1445-
},
1446-
.expected_fourccs_size = 10,
1447-
},
1448-
};
1449-
1450-
static void fb_build_fourcc_list_case_desc(struct fb_build_fourcc_list_case *t, char *desc)
1451-
{
1452-
strscpy(desc, t->name, KUNIT_PARAM_DESC_SIZE);
1453-
}
1454-
1455-
KUNIT_ARRAY_PARAM(fb_build_fourcc_list, fb_build_fourcc_list_cases, fb_build_fourcc_list_case_desc);
1456-
1457-
static void drm_test_fb_build_fourcc_list(struct kunit *test)
1458-
{
1459-
const struct fb_build_fourcc_list_case *params = test->param_value;
1460-
u32 fourccs_out[TEST_BUF_SIZE] = {0};
1461-
size_t nfourccs_out;
1462-
struct drm_device *drm;
1463-
struct device *dev;
1464-
1465-
dev = drm_kunit_helper_alloc_device(test);
1466-
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dev);
1467-
1468-
drm = __drm_kunit_helper_alloc_drm_device(test, dev, sizeof(*drm), 0, DRIVER_MODESET);
1469-
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, drm);
1470-
1471-
nfourccs_out = drm_fb_build_fourcc_list(drm, params->native_fourccs,
1472-
params->native_fourccs_size,
1473-
fourccs_out, TEST_BUF_SIZE);
1474-
1475-
KUNIT_EXPECT_EQ(test, nfourccs_out, params->expected_fourccs_size);
1476-
KUNIT_EXPECT_MEMEQ(test, fourccs_out, params->expected, TEST_BUF_SIZE);
1477-
}
1478-
14791338
struct fb_memcpy_case {
14801339
const char *name;
14811340
u32 format;
@@ -1864,7 +1723,6 @@ static struct kunit_case drm_format_helper_test_cases[] = {
18641723
KUNIT_CASE_PARAM(drm_test_fb_xrgb8888_to_xbgr8888, convert_xrgb8888_gen_params),
18651724
KUNIT_CASE_PARAM(drm_test_fb_xrgb8888_to_abgr8888, convert_xrgb8888_gen_params),
18661725
KUNIT_CASE_PARAM(drm_test_fb_clip_offset, clip_offset_gen_params),
1867-
KUNIT_CASE_PARAM(drm_test_fb_build_fourcc_list, fb_build_fourcc_list_gen_params),
18681726
KUNIT_CASE_PARAM(drm_test_fb_memcpy, fb_memcpy_gen_params),
18691727
{}
18701728
};
Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,166 @@
1+
// SPDX-License-Identifier: GPL-2.0+
2+
3+
#include <kunit/test.h>
4+
5+
#include <drm/drm_format_helper.h>
6+
#include <drm/drm_fourcc.h>
7+
#include <drm/drm_kunit_helpers.h>
8+
9+
#define TEST_BUF_SIZE 50
10+
11+
struct fb_build_fourcc_list_case {
12+
const char *name;
13+
u32 native_fourccs[TEST_BUF_SIZE];
14+
size_t native_fourccs_size;
15+
u32 expected[TEST_BUF_SIZE];
16+
size_t expected_fourccs_size;
17+
};
18+
19+
static struct fb_build_fourcc_list_case fb_build_fourcc_list_cases[] = {
20+
{
21+
.name = "no native formats",
22+
.native_fourccs = { },
23+
.native_fourccs_size = 0,
24+
.expected = { DRM_FORMAT_XRGB8888 },
25+
.expected_fourccs_size = 1,
26+
},
27+
{
28+
.name = "XRGB8888 as native format",
29+
.native_fourccs = { DRM_FORMAT_XRGB8888 },
30+
.native_fourccs_size = 1,
31+
.expected = { DRM_FORMAT_XRGB8888 },
32+
.expected_fourccs_size = 1,
33+
},
34+
{
35+
.name = "remove duplicates",
36+
.native_fourccs = {
37+
DRM_FORMAT_XRGB8888,
38+
DRM_FORMAT_XRGB8888,
39+
DRM_FORMAT_RGB888,
40+
DRM_FORMAT_RGB888,
41+
DRM_FORMAT_RGB888,
42+
DRM_FORMAT_XRGB8888,
43+
DRM_FORMAT_RGB888,
44+
DRM_FORMAT_RGB565,
45+
DRM_FORMAT_RGB888,
46+
DRM_FORMAT_XRGB8888,
47+
DRM_FORMAT_RGB565,
48+
DRM_FORMAT_RGB565,
49+
DRM_FORMAT_XRGB8888,
50+
},
51+
.native_fourccs_size = 11,
52+
.expected = {
53+
DRM_FORMAT_XRGB8888,
54+
DRM_FORMAT_RGB888,
55+
DRM_FORMAT_RGB565,
56+
},
57+
.expected_fourccs_size = 3,
58+
},
59+
{
60+
.name = "convert alpha formats",
61+
.native_fourccs = {
62+
DRM_FORMAT_ARGB1555,
63+
DRM_FORMAT_ABGR1555,
64+
DRM_FORMAT_RGBA5551,
65+
DRM_FORMAT_BGRA5551,
66+
DRM_FORMAT_ARGB8888,
67+
DRM_FORMAT_ABGR8888,
68+
DRM_FORMAT_RGBA8888,
69+
DRM_FORMAT_BGRA8888,
70+
DRM_FORMAT_ARGB2101010,
71+
DRM_FORMAT_ABGR2101010,
72+
DRM_FORMAT_RGBA1010102,
73+
DRM_FORMAT_BGRA1010102,
74+
},
75+
.native_fourccs_size = 12,
76+
.expected = {
77+
DRM_FORMAT_XRGB1555,
78+
DRM_FORMAT_XBGR1555,
79+
DRM_FORMAT_RGBX5551,
80+
DRM_FORMAT_BGRX5551,
81+
DRM_FORMAT_XRGB8888,
82+
DRM_FORMAT_XBGR8888,
83+
DRM_FORMAT_RGBX8888,
84+
DRM_FORMAT_BGRX8888,
85+
DRM_FORMAT_XRGB2101010,
86+
DRM_FORMAT_XBGR2101010,
87+
DRM_FORMAT_RGBX1010102,
88+
DRM_FORMAT_BGRX1010102,
89+
},
90+
.expected_fourccs_size = 12,
91+
},
92+
{
93+
.name = "random formats",
94+
.native_fourccs = {
95+
DRM_FORMAT_Y212,
96+
DRM_FORMAT_ARGB1555,
97+
DRM_FORMAT_ABGR16161616F,
98+
DRM_FORMAT_C8,
99+
DRM_FORMAT_BGR888,
100+
DRM_FORMAT_XRGB1555,
101+
DRM_FORMAT_RGBA5551,
102+
DRM_FORMAT_BGR565_A8,
103+
DRM_FORMAT_R10,
104+
DRM_FORMAT_XYUV8888,
105+
},
106+
.native_fourccs_size = 10,
107+
.expected = {
108+
DRM_FORMAT_Y212,
109+
DRM_FORMAT_XRGB1555,
110+
DRM_FORMAT_ABGR16161616F,
111+
DRM_FORMAT_C8,
112+
DRM_FORMAT_BGR888,
113+
DRM_FORMAT_RGBX5551,
114+
DRM_FORMAT_BGR565_A8,
115+
DRM_FORMAT_R10,
116+
DRM_FORMAT_XYUV8888,
117+
DRM_FORMAT_XRGB8888,
118+
},
119+
.expected_fourccs_size = 10,
120+
},
121+
};
122+
123+
static void fb_build_fourcc_list_case_desc(struct fb_build_fourcc_list_case *t, char *desc)
124+
{
125+
strscpy(desc, t->name, KUNIT_PARAM_DESC_SIZE);
126+
}
127+
128+
KUNIT_ARRAY_PARAM(fb_build_fourcc_list, fb_build_fourcc_list_cases, fb_build_fourcc_list_case_desc);
129+
130+
static void drm_test_fb_build_fourcc_list(struct kunit *test)
131+
{
132+
const struct fb_build_fourcc_list_case *params = test->param_value;
133+
u32 fourccs_out[TEST_BUF_SIZE] = {0};
134+
size_t nfourccs_out;
135+
struct drm_device *drm;
136+
struct device *dev;
137+
138+
dev = drm_kunit_helper_alloc_device(test);
139+
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dev);
140+
141+
drm = __drm_kunit_helper_alloc_drm_device(test, dev, sizeof(*drm), 0, DRIVER_MODESET);
142+
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, drm);
143+
144+
nfourccs_out = drm_fb_build_fourcc_list(drm, params->native_fourccs,
145+
params->native_fourccs_size,
146+
fourccs_out, TEST_BUF_SIZE);
147+
148+
KUNIT_EXPECT_EQ(test, nfourccs_out, params->expected_fourccs_size);
149+
KUNIT_EXPECT_MEMEQ(test, fourccs_out, params->expected, TEST_BUF_SIZE);
150+
}
151+
152+
static struct kunit_case drm_sysfb_modeset_test_cases[] = {
153+
KUNIT_CASE_PARAM(drm_test_fb_build_fourcc_list, fb_build_fourcc_list_gen_params),
154+
{}
155+
};
156+
157+
static struct kunit_suite drm_sysfb_modeset_test_suite = {
158+
.name = "drm_sysfb_modeset_test",
159+
.test_cases = drm_sysfb_modeset_test_cases,
160+
};
161+
162+
kunit_test_suite(drm_sysfb_modeset_test_suite);
163+
164+
MODULE_DESCRIPTION("KUnit tests for the drm_sysfb_modeset APIs");
165+
MODULE_LICENSE("GPL");
166+
MODULE_AUTHOR("José Expósito <[email protected]>");

0 commit comments

Comments
 (0)