diff options
| author | Dmitry Torokhov <[email protected]> | 2023-08-30 16:06:38 -0700 | 
|---|---|---|
| committer | Dmitry Torokhov <[email protected]> | 2023-08-30 16:06:38 -0700 | 
| commit | 1ac731c529cd4d6adbce134754b51ff7d822b145 (patch) | |
| tree | 143ab3f35ca5f3b69f583c84e6964b17139c2ec1 /drivers/gpu/drm/tests/drm_format_helper_test.c | |
| parent | 07b4c950f27bef0362dc6ad7ee713aab61d58149 (diff) | |
| parent | 54116d442e001e1b6bd482122043b1870998a1f3 (diff) | |
Merge branch 'next' into for-linus
Prepare input updates for 6.6 merge window.
Diffstat (limited to 'drivers/gpu/drm/tests/drm_format_helper_test.c')
| -rw-r--r-- | drivers/gpu/drm/tests/drm_format_helper_test.c | 146 | 
1 files changed, 104 insertions, 42 deletions
diff --git a/drivers/gpu/drm/tests/drm_format_helper_test.c b/drivers/gpu/drm/tests/drm_format_helper_test.c index 34e80eb6d96e..474bb7a1c4ee 100644 --- a/drivers/gpu/drm/tests/drm_format_helper_test.c +++ b/drivers/gpu/drm/tests/drm_format_helper_test.c @@ -67,6 +67,11 @@ struct convert_to_argb2101010_result {  	const u32 expected[TEST_BUF_SIZE];  }; +struct convert_to_mono_result { +	unsigned int dst_pitch; +	const u8 expected[TEST_BUF_SIZE]; +}; +  struct convert_xrgb8888_case {  	const char *name;  	unsigned int pitch; @@ -82,6 +87,7 @@ struct convert_xrgb8888_case {  	struct convert_to_argb8888_result argb8888_result;  	struct convert_to_xrgb2101010_result xrgb2101010_result;  	struct convert_to_argb2101010_result argb2101010_result; +	struct convert_to_mono_result mono_result;  };  static struct convert_xrgb8888_case convert_xrgb8888_cases[] = { @@ -131,6 +137,10 @@ static struct convert_xrgb8888_case convert_xrgb8888_cases[] = {  			.dst_pitch = 0,  			.expected = { 0xFFF00000 },  		}, +		.mono_result = { +			.dst_pitch = 0, +			.expected = { 0b0 }, +		},  	},  	{  		.name = "single_pixel_clip_rectangle", @@ -181,6 +191,10 @@ static struct convert_xrgb8888_case convert_xrgb8888_cases[] = {  			.dst_pitch = 0,  			.expected = { 0xFFF00000 },  		}, +		.mono_result = { +			.dst_pitch = 0, +			.expected = { 0b0 }, +		},  	},  	{  		/* Well known colors: White, black, red, green, blue, magenta, @@ -293,6 +307,15 @@ static struct convert_xrgb8888_case convert_xrgb8888_cases[] = {  				0xFFFFFC00, 0xC00FFFFF,  			},  		}, +		.mono_result = { +			.dst_pitch = 0, +			.expected = { +				0b01, +				0b10, +				0b00, +				0b11, +			}, +		},  	},  	{  		/* Randomly picked colors. Full buffer within the clip area. */ @@ -300,96 +323,104 @@ static struct convert_xrgb8888_case convert_xrgb8888_cases[] = {  		.pitch = 3 * 4,  		.clip = DRM_RECT_INIT(0, 0, 3, 3),  		.xrgb8888 = { -			0xA10E449C, 0xB1114D05, 0xC1A80303, -			0xD16C7073, 0xA20E449C, 0xB2114D05, -			0xC2A80303, 0xD26C7073, 0xA30E449C, +			0xA10E449C, 0xB1114D05, 0xC1A8F303, +			0xD16CF073, 0xA20E449C, 0xB2114D05, +			0xC2A80303, 0xD26CF073, 0xA30E449C,  		},  		.gray8_result = {  			.dst_pitch = 5,  			.expected = { -				0x3C, 0x33, 0x34, 0x00, 0x00, -				0x6F, 0x3C, 0x33, 0x00, 0x00, -				0x34, 0x6F, 0x3C, 0x00, 0x00, +				0x3C, 0x33, 0xC4, 0x00, 0x00, +				0xBB, 0x3C, 0x33, 0x00, 0x00, +				0x34, 0xBB, 0x3C, 0x00, 0x00,  			},  		},  		.rgb332_result = {  			.dst_pitch = 5,  			.expected = { -				0x0A, 0x08, 0xA0, 0x00, 0x00, -				0x6D, 0x0A, 0x08, 0x00, 0x00, -				0xA0, 0x6D, 0x0A, 0x00, 0x00, +				0x0A, 0x08, 0xBC, 0x00, 0x00, +				0x7D, 0x0A, 0x08, 0x00, 0x00, +				0xA0, 0x7D, 0x0A, 0x00, 0x00,  			},  		},  		.rgb565_result = {  			.dst_pitch = 10,  			.expected = { -				0x0A33, 0x1260, 0xA800, 0x0000, 0x0000, -				0x6B8E, 0x0A33, 0x1260, 0x0000, 0x0000, -				0xA800, 0x6B8E, 0x0A33, 0x0000, 0x0000, +				0x0A33, 0x1260, 0xAF80, 0x0000, 0x0000, +				0x6F8E, 0x0A33, 0x1260, 0x0000, 0x0000, +				0xA800, 0x6F8E, 0x0A33, 0x0000, 0x0000,  			},  			.expected_swab = { -				0x330A, 0x6012, 0x00A8, 0x0000, 0x0000, -				0x8E6B, 0x330A, 0x6012, 0x0000, 0x0000, -				0x00A8, 0x8E6B, 0x330A, 0x0000, 0x0000, +				0x330A, 0x6012, 0x80AF, 0x0000, 0x0000, +				0x8E6F, 0x330A, 0x6012, 0x0000, 0x0000, +				0x00A8, 0x8E6F, 0x330A, 0x0000, 0x0000,  			},  		},  		.xrgb1555_result = {  			.dst_pitch = 10,  			.expected = { -				0x0513, 0x0920, 0x5400, 0x0000, 0x0000, -				0x35CE, 0x0513, 0x0920, 0x0000, 0x0000, -				0x5400, 0x35CE, 0x0513, 0x0000, 0x0000, +				0x0513, 0x0920, 0x57C0, 0x0000, 0x0000, +				0x37CE, 0x0513, 0x0920, 0x0000, 0x0000, +				0x5400, 0x37CE, 0x0513, 0x0000, 0x0000,  			},  		},  		.argb1555_result = {  			.dst_pitch = 10,  			.expected = { -				0x8513, 0x8920, 0xD400, 0x0000, 0x0000, -				0xB5CE, 0x8513, 0x8920, 0x0000, 0x0000, -				0xD400, 0xB5CE, 0x8513, 0x0000, 0x0000, +				0x8513, 0x8920, 0xD7C0, 0x0000, 0x0000, +				0xB7CE, 0x8513, 0x8920, 0x0000, 0x0000, +				0xD400, 0xB7CE, 0x8513, 0x0000, 0x0000,  			},  		},  		.rgba5551_result = {  			.dst_pitch = 10,  			.expected = { -				0x0A27, 0x1241, 0xA801, 0x0000, 0x0000, -				0x6B9D, 0x0A27, 0x1241, 0x0000, 0x0000, -				0xA801, 0x6B9D, 0x0A27, 0x0000, 0x0000, +				0x0A27, 0x1241, 0xAF81, 0x0000, 0x0000, +				0x6F9D, 0x0A27, 0x1241, 0x0000, 0x0000, +				0xA801, 0x6F9D, 0x0A27, 0x0000, 0x0000,  			},  		},  		.rgb888_result = {  			.dst_pitch = 15,  			.expected = { -				0x9C, 0x44, 0x0E, 0x05, 0x4D, 0x11, 0x03, 0x03, 0xA8, +				0x9C, 0x44, 0x0E, 0x05, 0x4D, 0x11, 0x03, 0xF3, 0xA8,  				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -				0x73, 0x70, 0x6C, 0x9C, 0x44, 0x0E, 0x05, 0x4D, 0x11, +				0x73, 0xF0, 0x6C, 0x9C, 0x44, 0x0E, 0x05, 0x4D, 0x11,  				0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -				0x03, 0x03, 0xA8, 0x73, 0x70, 0x6C, 0x9C, 0x44, 0x0E, +				0x03, 0x03, 0xA8, 0x73, 0xF0, 0x6C, 0x9C, 0x44, 0x0E,  				0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  			},  		},  		.argb8888_result = {  			.dst_pitch = 20,  			.expected = { -				0xFF0E449C, 0xFF114D05, 0xFFA80303, 0x00000000, 0x00000000, -				0xFF6C7073, 0xFF0E449C, 0xFF114D05, 0x00000000, 0x00000000, -				0xFFA80303, 0xFF6C7073, 0xFF0E449C, 0x00000000, 0x00000000, +				0xFF0E449C, 0xFF114D05, 0xFFA8F303, 0x00000000, 0x00000000, +				0xFF6CF073, 0xFF0E449C, 0xFF114D05, 0x00000000, 0x00000000, +				0xFFA80303, 0xFF6CF073, 0xFF0E449C, 0x00000000, 0x00000000,  			},  		},  		.xrgb2101010_result = {  			.dst_pitch = 20,  			.expected = { -				0x03844672, 0x0444D414, 0x2A20300C, 0x00000000, 0x00000000, -				0x1B1705CD, 0x03844672, 0x0444D414, 0x00000000, 0x00000000, -				0x2A20300C, 0x1B1705CD, 0x03844672, 0x00000000, 0x00000000, +				0x03844672, 0x0444D414, 0x2A2F3C0C, 0x00000000, 0x00000000, +				0x1B1F0DCD, 0x03844672, 0x0444D414, 0x00000000, 0x00000000, +				0x2A20300C, 0x1B1F0DCD, 0x03844672, 0x00000000, 0x00000000,  			},  		},  		.argb2101010_result = {  			.dst_pitch = 20,  			.expected = { -				0xC3844672, 0xC444D414, 0xEA20300C, 0x00000000, 0x00000000, -				0xDB1705CD, 0xC3844672, 0xC444D414, 0x00000000, 0x00000000, -				0xEA20300C, 0xDB1705CD, 0xC3844672, 0x00000000, 0x00000000, +				0xC3844672, 0xC444D414, 0xEA2F3C0C, 0x00000000, 0x00000000, +				0xDB1F0DCD, 0xC3844672, 0xC444D414, 0x00000000, 0x00000000, +				0xEA20300C, 0xDB1F0DCD, 0xC3844672, 0x00000000, 0x00000000, +			}, +		}, +		.mono_result = { +			.dst_pitch = 2, +			.expected = { +				0b100, 0b000, +				0b001, 0b000, +				0b010, 0b000,  			},  		},  	}, @@ -414,7 +445,7 @@ static size_t conversion_buf_size(u32 dst_format, unsigned int dst_pitch,  		return -EINVAL;  	if (!dst_pitch) -		dst_pitch = drm_rect_width(clip) * dst_fi->cpp[0]; +		dst_pitch = drm_format_info_min_pitch(dst_fi, 0, drm_rect_width(clip));  	return dst_pitch * drm_rect_height(clip);  } @@ -597,7 +628,7 @@ static void drm_test_fb_xrgb8888_to_xrgb1555(struct kunit *test)  	drm_fb_xrgb8888_to_xrgb1555(&dst, &result->dst_pitch, &src, &fb, ¶ms->clip);  	buf = le16buf_to_cpu(test, (__force const __le16 *)buf, dst_size / sizeof(__le16)); -	KUNIT_EXPECT_EQ(test, memcmp(buf, result->expected, dst_size), 0); +	KUNIT_EXPECT_MEMEQ(test, buf, result->expected, dst_size);  }  static void drm_test_fb_xrgb8888_to_argb1555(struct kunit *test) @@ -628,7 +659,7 @@ static void drm_test_fb_xrgb8888_to_argb1555(struct kunit *test)  	drm_fb_xrgb8888_to_argb1555(&dst, &result->dst_pitch, &src, &fb, ¶ms->clip);  	buf = le16buf_to_cpu(test, (__force const __le16 *)buf, dst_size / sizeof(__le16)); -	KUNIT_EXPECT_EQ(test, memcmp(buf, result->expected, dst_size), 0); +	KUNIT_EXPECT_MEMEQ(test, buf, result->expected, dst_size);  }  static void drm_test_fb_xrgb8888_to_rgba5551(struct kunit *test) @@ -659,7 +690,7 @@ static void drm_test_fb_xrgb8888_to_rgba5551(struct kunit *test)  	drm_fb_xrgb8888_to_rgba5551(&dst, &result->dst_pitch, &src, &fb, ¶ms->clip);  	buf = le16buf_to_cpu(test, (__force const __le16 *)buf, dst_size / sizeof(__le16)); -	KUNIT_EXPECT_EQ(test, memcmp(buf, result->expected, dst_size), 0); +	KUNIT_EXPECT_MEMEQ(test, buf, result->expected, dst_size);  }  static void drm_test_fb_xrgb8888_to_rgb888(struct kunit *test) @@ -724,7 +755,7 @@ static void drm_test_fb_xrgb8888_to_argb8888(struct kunit *test)  	drm_fb_xrgb8888_to_argb8888(&dst, &result->dst_pitch, &src, &fb, ¶ms->clip);  	buf = le32buf_to_cpu(test, (__force const __le32 *)buf, dst_size / sizeof(u32)); -	KUNIT_EXPECT_EQ(test, memcmp(buf, result->expected, dst_size), 0); +	KUNIT_EXPECT_MEMEQ(test, buf, result->expected, dst_size);  }  static void drm_test_fb_xrgb8888_to_xrgb2101010(struct kunit *test) @@ -786,7 +817,37 @@ static void drm_test_fb_xrgb8888_to_argb2101010(struct kunit *test)  	drm_fb_xrgb8888_to_argb2101010(&dst, &result->dst_pitch, &src, &fb, ¶ms->clip);  	buf = le32buf_to_cpu(test, (__force const __le32 *)buf, dst_size / sizeof(u32)); -	KUNIT_EXPECT_EQ(test, memcmp(buf, result->expected, dst_size), 0); +	KUNIT_EXPECT_MEMEQ(test, buf, result->expected, dst_size); +} + +static void drm_test_fb_xrgb8888_to_mono(struct kunit *test) +{ +	const struct convert_xrgb8888_case *params = test->param_value; +	const struct convert_to_mono_result *result = ¶ms->mono_result; +	size_t dst_size; +	u8 *buf = NULL; +	__le32 *xrgb8888 = NULL; +	struct iosys_map dst, src; + +	struct drm_framebuffer fb = { +		.format = drm_format_info(DRM_FORMAT_XRGB8888), +		.pitches = { params->pitch, 0, 0 }, +	}; + +	dst_size = conversion_buf_size(DRM_FORMAT_C1, result->dst_pitch, ¶ms->clip); + +	KUNIT_ASSERT_GT(test, dst_size, 0); + +	buf = kunit_kzalloc(test, dst_size, GFP_KERNEL); +	KUNIT_ASSERT_NOT_ERR_OR_NULL(test, buf); +	iosys_map_set_vaddr(&dst, buf); + +	xrgb8888 = cpubuf_to_le32(test, params->xrgb8888, TEST_BUF_SIZE); +	KUNIT_ASSERT_NOT_ERR_OR_NULL(test, xrgb8888); +	iosys_map_set_vaddr(&src, xrgb8888); + +	drm_fb_xrgb8888_to_mono(&dst, &result->dst_pitch, &src, &fb, ¶ms->clip); +	KUNIT_EXPECT_MEMEQ(test, buf, result->expected, dst_size);  }  static struct kunit_case drm_format_helper_test_cases[] = { @@ -800,6 +861,7 @@ static struct kunit_case drm_format_helper_test_cases[] = {  	KUNIT_CASE_PARAM(drm_test_fb_xrgb8888_to_argb8888, convert_xrgb8888_gen_params),  	KUNIT_CASE_PARAM(drm_test_fb_xrgb8888_to_xrgb2101010, convert_xrgb8888_gen_params),  	KUNIT_CASE_PARAM(drm_test_fb_xrgb8888_to_argb2101010, convert_xrgb8888_gen_params), +	KUNIT_CASE_PARAM(drm_test_fb_xrgb8888_to_mono, convert_xrgb8888_gen_params),  	{}  };  |