[PATCH 2/2] drm/format: Split into more granular test cases

Michał Winiarski michal.winiarski at intel.com
Fri Sep 2 14:06:27 UTC 2022


On Wed, Aug 31, 2022 at 07:15:11PM -0300, Maíra Canal wrote:
> Hi Michał
> 
> Some very minor nits inline, but either way:
> 
> Reviewed-by: Maíra Canal <mairacanal at riseup.net>
> 
> On 8/31/22 18:56, Michał Winiarski wrote:
> > While we have multiple test cases, most of them check multiple
> > conditions, calling the function that is tested multiple times with
> > different arguments (with comments that indicate test case boundary).
> > This usually means that it can be easily converted into multiple test
> > cases.
> > 
> > Passing output:
> > ============================================================
> > ================= drm_format (18 subtests) =================
> > [PASSED] drm_format_block_width_invalid
> > [PASSED] drm_format_block_width_one_plane
> > [PASSED] drm_format_block_width_two_plane
> > [PASSED] drm_format_block_width_three_plane
> > [PASSED] drm_format_block_width_tiled
> > [PASSED] drm_format_block_height_invalid
> > [PASSED] drm_format_block_height_one_plane
> > [PASSED] drm_format_block_height_two_plane
> > [PASSED] drm_format_block_height_three_plane
> > [PASSED] drm_format_block_height_tiled
> > [PASSED] drm_format_min_pitch_invalid
> > [PASSED] drm_format_min_pitch_one_plane_8bpp
> > [PASSED] drm_format_min_pitch_one_plane_16bpp
> > [PASSED] drm_format_min_pitch_one_plane_24bpp
> > [PASSED] drm_format_min_pitch_one_plane_32bpp
> > [PASSED] drm_format_min_pitch_two_plane
> > [PASSED] drm_format_min_pitch_three_plane_8bpp
> > [PASSED] drm_format_min_pitch_tiled
> 
> As Jani pointed out in [1], "drm_" prefix can be a bit confusing. I will
> send a patch tomorrow using the prefix "test_drm_" on all tests to make the
> naming more consistent. It would be nice if this patch already hold the new
> naming, but anyway I can send a patch changing it later with the new prefix
> gets approved.
> 
> [1] https://lore.kernel.org/dri-devel/20220831104941.doc75juindcm5mcl@nostramo.hardline.pl/T/#m82b4e710063b47029a8bd4716d137e575640da9a

Sure - I can resend with different naming convention if needed.

> 
> > =================== [PASSED] drm_format ====================
> > ============================================================
> > Testing complete. Ran 18 tests: passed: 18
> > 
> > Signed-off-by: Michał Winiarski <michal.winiarski at intel.com>
> > ---
> >   drivers/gpu/drm/tests/drm_format_test.c | 156 ++++++++++++++++--------
> >   1 file changed, 108 insertions(+), 48 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/tests/drm_format_test.c b/drivers/gpu/drm/tests/drm_format_test.c
> > index 0efa88bf56a9..1936d2d59908 100644
> > --- a/drivers/gpu/drm/tests/drm_format_test.c
> > +++ b/drivers/gpu/drm/tests/drm_format_test.c
> > @@ -9,100 +9,133 @@
> >   #include <drm/drm_fourcc.h>
> > -static void igt_check_drm_format_block_width(struct kunit *test)
> > +static void drm_format_block_width_invalid(struct kunit *test)
> >   {
> >   	const struct drm_format_info *info = NULL;
> > -	/* Test invalid arguments */
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_block_width(info, 0), 0);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_block_width(info, -1), 0);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_block_width(info, 1), 0);
> > +}
> > +
> > +static void drm_format_block_width_one_plane(struct kunit *test)
> > +{
> > +	const struct drm_format_info *info = drm_format_info(DRM_FORMAT_XRGB4444);
> > -	/* Test 1 plane format */
> > -	info = drm_format_info(DRM_FORMAT_XRGB4444);
> >   	KUNIT_ASSERT_NOT_NULL(test, info);
> > +
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_block_width(info, 0), 1);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_block_width(info, 1), 0);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_block_width(info, -1), 0);
> > +}
> > +
> > +static void drm_format_block_width_two_plane(struct kunit *test)
> 
> s/plane/planes

NV12 format has two planes, therefore it's a two-plane format.

-Michał

> 
> Best Regards,
> - Maíra Canal
> 
> > +{
> > +	const struct drm_format_info *info = drm_format_info(DRM_FORMAT_NV12);
> > -	/* Test 2 planes format */
> > -	info = drm_format_info(DRM_FORMAT_NV12);
> >   	KUNIT_ASSERT_NOT_NULL(test, info);
> > +
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_block_width(info, 0), 1);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_block_width(info, 1), 1);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_block_width(info, 2), 0);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_block_width(info, -1), 0);
> > +}
> > +
> > +static void drm_format_block_width_three_plane(struct kunit *test)
> > +{
> > +	const struct drm_format_info *info = drm_format_info(DRM_FORMAT_YUV422);
> > -	/* Test 3 planes format */
> > -	info = drm_format_info(DRM_FORMAT_YUV422);
> >   	KUNIT_ASSERT_NOT_NULL(test, info);
> > +
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_block_width(info, 0), 1);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_block_width(info, 1), 1);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_block_width(info, 2), 1);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_block_width(info, 3), 0);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_block_width(info, -1), 0);
> > +}
> > +
> > +static void drm_format_block_width_tiled(struct kunit *test)
> > +{
> > +	const struct drm_format_info *info = drm_format_info(DRM_FORMAT_X0L0);
> > -	/* Test a tiled format */
> > -	info = drm_format_info(DRM_FORMAT_X0L0);
> >   	KUNIT_ASSERT_NOT_NULL(test, info);
> > +
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_block_width(info, 0), 2);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_block_width(info, 1), 0);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_block_width(info, -1), 0);
> >   }
> > -static void igt_check_drm_format_block_height(struct kunit *test)
> > +static void drm_format_block_height_invalid(struct kunit *test)
> >   {
> >   	const struct drm_format_info *info = NULL;
> > -	/* Test invalid arguments */
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_block_height(info, 0), 0);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_block_height(info, -1), 0);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_block_height(info, 1), 0);
> > +}
> > +
> > +static void drm_format_block_height_one_plane(struct kunit *test)
> > +{
> > +	const struct drm_format_info *info = drm_format_info(DRM_FORMAT_XRGB4444);
> > -	/* Test 1 plane format */
> > -	info = drm_format_info(DRM_FORMAT_XRGB4444);
> >   	KUNIT_ASSERT_NOT_NULL(test, info);
> > +
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_block_height(info, 0), 1);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_block_height(info, -1), 0);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_block_height(info, 1), 0);
> > +}
> > +
> > +static void drm_format_block_height_two_plane(struct kunit *test)
> > +{
> > +	const struct drm_format_info *info = drm_format_info(DRM_FORMAT_NV12);
> > -	/* Test 2 planes format */
> > -	info = drm_format_info(DRM_FORMAT_NV12);
> >   	KUNIT_ASSERT_NOT_NULL(test, info);
> > +
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_block_height(info, 0), 1);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_block_height(info, 1), 1);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_block_height(info, 2), 0);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_block_height(info, -1), 0);
> > +}
> > +
> > +static void drm_format_block_height_three_plane(struct kunit *test)
> > +{
> > +	const struct drm_format_info *info = drm_format_info(DRM_FORMAT_YUV422);
> > -	/* Test 3 planes format */
> > -	info = drm_format_info(DRM_FORMAT_YUV422);
> >   	KUNIT_ASSERT_NOT_NULL(test, info);
> > +
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_block_height(info, 0), 1);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_block_height(info, 1), 1);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_block_height(info, 2), 1);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_block_height(info, 3), 0);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_block_height(info, -1), 0);
> > +}
> > +
> > +static void drm_format_block_height_tiled(struct kunit *test)
> > +{
> > +	const struct drm_format_info *info = drm_format_info(DRM_FORMAT_X0L0);
> > -	/* Test a tiled format */
> > -	info = drm_format_info(DRM_FORMAT_X0L0);
> >   	KUNIT_ASSERT_NOT_NULL(test, info);
> > +
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_block_height(info, 0), 2);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_block_height(info, 1), 0);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_block_height(info, -1), 0);
> >   }
> > -static void igt_check_drm_format_min_pitch_for_single_plane(struct kunit *test)
> > +static void drm_format_min_pitch_invalid(struct kunit *test)
> >   {
> >   	const struct drm_format_info *info = NULL;
> > -	/* Test invalid arguments */
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 0, 0), 0);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, -1, 0), 0);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 1, 0), 0);
> > +}
> > +
> > +static void drm_format_min_pitch_one_plane_8bpp(struct kunit *test)
> > +{
> > +	const struct drm_format_info *info = drm_format_info(DRM_FORMAT_RGB332);
> > -	/* Test 1 plane 8 bits per pixel format */
> > -	info = drm_format_info(DRM_FORMAT_RGB332);
> >   	KUNIT_ASSERT_NOT_NULL(test, info);
> > +
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 0, 0), 0);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, -1, 0), 0);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 1, 0), 0);
> > @@ -118,10 +151,14 @@ static void igt_check_drm_format_min_pitch_for_single_plane(struct kunit *test)
> >   			(uint64_t)UINT_MAX);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 0, (UINT_MAX - 1)),
> >   			(uint64_t)(UINT_MAX - 1));
> > +}
> > +
> > +static void drm_format_min_pitch_one_plane_16bpp(struct kunit *test)
> > +{
> > +	const struct drm_format_info *info = drm_format_info(DRM_FORMAT_XRGB4444);
> > -	/* Test 1 plane 16 bits per pixel format */
> > -	info = drm_format_info(DRM_FORMAT_XRGB4444);
> >   	KUNIT_ASSERT_NOT_NULL(test, info);
> > +
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 0, 0), 0);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, -1, 0), 0);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 1, 0), 0);
> > @@ -137,10 +174,14 @@ static void igt_check_drm_format_min_pitch_for_single_plane(struct kunit *test)
> >   			(uint64_t)UINT_MAX * 2);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 0, (UINT_MAX - 1)),
> >   			(uint64_t)(UINT_MAX - 1) * 2);
> > +}
> > +
> > +static void drm_format_min_pitch_one_plane_24bpp(struct kunit *test)
> > +{
> > +	const struct drm_format_info *info = drm_format_info(DRM_FORMAT_RGB888);
> > -	/* Test 1 plane 24 bits per pixel format */
> > -	info = drm_format_info(DRM_FORMAT_RGB888);
> >   	KUNIT_ASSERT_NOT_NULL(test, info);
> > +
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 0, 0), 0);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, -1, 0), 0);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 1, 0), 0);
> > @@ -154,12 +195,16 @@ static void igt_check_drm_format_min_pitch_for_single_plane(struct kunit *test)
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 0, 671), 2013);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 0, UINT_MAX),
> >   			(uint64_t)UINT_MAX * 3);
> > -	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 0, (UINT_MAX - 1)),
> > +	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 0, UINT_MAX - 1),
> >   			(uint64_t)(UINT_MAX - 1) * 3);
> > +}
> > +
> > +static void drm_format_min_pitch_one_plane_32bpp(struct kunit *test)
> > +{
> > +	const struct drm_format_info *info = drm_format_info(DRM_FORMAT_ABGR8888);
> > -	/* Test 1 plane 32 bits per pixel format */
> > -	info = drm_format_info(DRM_FORMAT_ABGR8888);
> >   	KUNIT_ASSERT_NOT_NULL(test, info);
> > +
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 0, 0), 0);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, -1, 0), 0);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 1, 0), 0);
> > @@ -173,17 +218,16 @@ static void igt_check_drm_format_min_pitch_for_single_plane(struct kunit *test)
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 0, 671), 2684);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 0, UINT_MAX),
> >   			(uint64_t)UINT_MAX * 4);
> > -	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 0, (UINT_MAX - 1)),
> > +	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 0, UINT_MAX - 1),
> >   			(uint64_t)(UINT_MAX - 1) * 4);
> >   }
> > -static void igt_check_drm_format_min_pitch_for_multi_planar(struct kunit *test)
> > +static void drm_format_min_pitch_two_plane(struct kunit *test)
> >   {
> > -	const struct drm_format_info *info = NULL;
> > +	const struct drm_format_info *info = drm_format_info(DRM_FORMAT_NV12);
> > -	/* Test 2 planes format */
> > -	info = drm_format_info(DRM_FORMAT_NV12);
> >   	KUNIT_ASSERT_NOT_NULL(test, info);
> > +
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 0, 0), 0);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 1, 0), 0);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, -1, 0), 0);
> > @@ -211,10 +255,14 @@ static void igt_check_drm_format_min_pitch_for_multi_planar(struct kunit *test)
> >   			(uint64_t)(UINT_MAX - 1));
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 1, (UINT_MAX - 1) /  2),
> >   			(uint64_t)(UINT_MAX - 1));
> > +}
> > +
> > +static void drm_format_min_pitch_three_plane_8bpp(struct kunit *test)
> > +{
> > +	const struct drm_format_info *info = drm_format_info(DRM_FORMAT_YUV422);
> > -	/* Test 3 planes 8 bits per pixel format */
> > -	info = drm_format_info(DRM_FORMAT_YUV422);
> >   	KUNIT_ASSERT_NOT_NULL(test, info);
> > +
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 0, 0), 0);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 1, 0), 0);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 2, 0), 0);
> > @@ -256,13 +304,12 @@ static void igt_check_drm_format_min_pitch_for_multi_planar(struct kunit *test)
> >   			(uint64_t)(UINT_MAX - 1) / 2);
> >   }
> > -static void igt_check_drm_format_min_pitch_for_tiled_format(struct kunit *test)
> > +static void drm_format_min_pitch_tiled(struct kunit *test)
> >   {
> > -	const struct drm_format_info *info = NULL;
> > +	const struct drm_format_info *info = drm_format_info(DRM_FORMAT_X0L2);
> > -	/* Test tiled format */
> > -	info = drm_format_info(DRM_FORMAT_X0L2);
> >   	KUNIT_ASSERT_NOT_NULL(test, info);
> > +
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 0, 0), 0);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, -1, 0), 0);
> >   	KUNIT_EXPECT_EQ(test, drm_format_info_min_pitch(info, 1, 0), 0);
> > @@ -281,12 +328,25 @@ static void igt_check_drm_format_min_pitch_for_tiled_format(struct kunit *test)
> >   }
> >   static struct kunit_case drm_format_tests[] = {
> > -	KUNIT_CASE(igt_check_drm_format_block_width),
> > -	KUNIT_CASE(igt_check_drm_format_block_height),
> > -	KUNIT_CASE(igt_check_drm_format_min_pitch_for_single_plane),
> > -	KUNIT_CASE(igt_check_drm_format_min_pitch_for_multi_planar),
> > -	KUNIT_CASE(igt_check_drm_format_min_pitch_for_tiled_format),
> > -	{ }
> > +	KUNIT_CASE(drm_format_block_width_invalid),
> > +	KUNIT_CASE(drm_format_block_width_one_plane),
> > +	KUNIT_CASE(drm_format_block_width_two_plane),
> > +	KUNIT_CASE(drm_format_block_width_three_plane),
> > +	KUNIT_CASE(drm_format_block_width_tiled),
> > +	KUNIT_CASE(drm_format_block_height_invalid),
> > +	KUNIT_CASE(drm_format_block_height_one_plane),
> > +	KUNIT_CASE(drm_format_block_height_two_plane),
> > +	KUNIT_CASE(drm_format_block_height_three_plane),
> > +	KUNIT_CASE(drm_format_block_height_tiled),
> > +	KUNIT_CASE(drm_format_min_pitch_invalid),
> > +	KUNIT_CASE(drm_format_min_pitch_one_plane_8bpp),
> > +	KUNIT_CASE(drm_format_min_pitch_one_plane_16bpp),
> > +	KUNIT_CASE(drm_format_min_pitch_one_plane_24bpp),
> > +	KUNIT_CASE(drm_format_min_pitch_one_plane_32bpp),
> > +	KUNIT_CASE(drm_format_min_pitch_two_plane),
> > +	KUNIT_CASE(drm_format_min_pitch_three_plane_8bpp),
> > +	KUNIT_CASE(drm_format_min_pitch_tiled),
> > +	{}
> >   };
> >   static struct kunit_suite drm_format_test_suite = {


More information about the dri-devel mailing list