[igt-dev] [PATCH i-g-t 1/2] tests/i915/kms_flip_scaled_crc: Convert tests to dynamic

Swati Sharma swati2.sharma at intel.com
Wed Jun 15 09:59:05 UTC 2022


Covert the existing subtests to dynamic subtests at pipe/output level.

Signed-off-by: Swati Sharma <swati2.sharma at intel.com>
---
 tests/i915/kms_flip_scaled_crc.c | 69 ++++++++------------------------
 1 file changed, 16 insertions(+), 53 deletions(-)

diff --git a/tests/i915/kms_flip_scaled_crc.c b/tests/i915/kms_flip_scaled_crc.c
index 9740715f..6cf3a64b 100644
--- a/tests/i915/kms_flip_scaled_crc.c
+++ b/tests/i915/kms_flip_scaled_crc.c
@@ -163,8 +163,6 @@ const struct {
 	},
 };
 
-enum subrval {CONNECTORFAIL, CONNECTORSUCCESS, TESTSKIP, NOREQUESTEDFORMATONPIPE};
-
 static void setup_fb(data_t *data, struct igt_fb *newfb, uint32_t width,
 		     uint32_t height, uint64_t format, uint64_t modifier)
 {
@@ -220,8 +218,8 @@ static void clear_lut(data_t *data, enum pipe pipe)
 	igt_pipe_obj_set_prop_value(pipe_obj, IGT_CRTC_GAMMA_LUT, 0);
 }
 
-static enum subrval test_flip_to_scaled(data_t *data, uint32_t index,
-					enum pipe pipe, igt_output_t *output)
+static void test_flip_to_scaled(data_t *data, uint32_t index,
+				enum pipe pipe, igt_output_t *output)
 {
 	igt_plane_t *primary;
 	igt_crc_t small_crc, big_crc;
@@ -257,11 +255,10 @@ static enum subrval test_flip_to_scaled(data_t *data, uint32_t index,
 	igt_output_set_pipe(output, pipe);
 
 	primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
-	if (!igt_plane_has_format_mod(primary, data->small_fb.drm_format,
+	igt_skip_on_f (!igt_plane_has_format_mod(primary, data->small_fb.drm_format,
 				      data->small_fb.modifier) ||
-	    !igt_plane_has_format_mod(primary, data->big_fb.drm_format,
-				      data->big_fb.modifier))
-		return NOREQUESTEDFORMATONPIPE;
+		       !igt_plane_has_format_mod(primary, data->big_fb.drm_format,
+				      data->big_fb.modifier), "No requested format/modifier on pipe %s\n", kmstest_pipe_name(pipe));
 
 	set_lut(data, pipe);
 	igt_display_commit_atomic(&data->display, DRM_MODE_ATOMIC_ALLOW_MODESET,
@@ -295,20 +292,10 @@ static enum subrval test_flip_to_scaled(data_t *data, uint32_t index,
 	igt_plane_set_size(primary, data->attemptmodewidth,
 			   data->attemptmodeheight);
 	ret = igt_display_try_commit_atomic(&data->display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
-	switch (ret) {
-	case -ERANGE:
-		igt_debug("Platform scaling limits exceeded, skipping.\n");
-		return TESTSKIP;
-	case -EINVAL:
-		if (!modetoset) {
-			igt_debug("No %dp and default mode too big, cdclk limits exceeded. Check next connector\n",
+	igt_skip_on_f(ret == -ERANGE, "Platform scaling limits exceeded, skipping.\n");
+	igt_skip_on_f((ret == -EINVAL) && !modetoset, "No %dp and default mode too big, cdclk limits exceeded. Check next connector\n",
 				  data->attemptmodeheight);
-			return CONNECTORFAIL;
-		}
-		/* fallthrough */
-	default:
-		igt_assert_eq(ret, 0);
-	}
+	igt_assert_eq(ret, 0);
 
 	igt_pipe_crc_start(data->pipe_crc);
 	igt_pipe_crc_get_current(data->drm_fd, data->pipe_crc, &small_crc);
@@ -319,21 +306,10 @@ static enum subrval test_flip_to_scaled(data_t *data, uint32_t index,
 	ret = igt_display_try_commit_atomic(&data->display,
 					    DRM_MODE_ATOMIC_ALLOW_MODESET  |
 					    DRM_MODE_PAGE_FLIP_EVENT, NULL);
-
-	switch (ret) {
-	case -ERANGE:
-		igt_debug("Platform scaling limits exceeded, skipping.\n");
-		return TESTSKIP;
-	case -EINVAL:
-		if (!modetoset) {
-			igt_debug("No %dp and default mode too big, cdclk limits exceeded. Check next connector\n",
+	igt_skip_on_f(ret == -ERANGE, "Platform scaling limits exceeded, skipping.\n");
+	igt_skip_on_f((ret == -EINVAL) && !modetoset, "No %dp and default mode too big, cdclk limits exceeded. Check next connector\n",
 				  data->attemptmodeheight);
-			return CONNECTORFAIL;
-		}
-		/* fallthrough */
-	default:
-		igt_assert_eq(ret, 0);
-	}
+	igt_assert_eq(ret, 0);
 
 	igt_assert(read(data->drm_fd, &ev, sizeof(ev)) == sizeof(ev));
 
@@ -349,8 +325,6 @@ static enum subrval test_flip_to_scaled(data_t *data, uint32_t index,
 	igt_output_set_pipe(output, PIPE_NONE);
 	igt_plane_set_fb(primary, NULL);
 	igt_display_commit2(&data->display, COMMIT_ATOMIC);
-
-	return CONNECTORSUCCESS;
 }
 
 igt_main
@@ -379,28 +353,17 @@ igt_main
 
 	for (int index = 0; index < ARRAY_SIZE(flip_scenario_test); index++) {
 		igt_describe(flip_scenario_test[index].describe);
-		igt_subtest(flip_scenario_test[index].name) {
-			int validtests = 0;
+		igt_subtest_with_dynamic(flip_scenario_test[index].name) {
 			free_fbs(&data);
-			for_each_pipe_static(pipe) {
-				enum subrval rval = CONNECTORSUCCESS;
+			for_each_pipe(&data.display, pipe) {
 				for_each_valid_output_on_pipe(&data.display, pipe, output) {
-					rval = test_flip_to_scaled(&data, index, pipe, output);
-
-					igt_require(rval != TESTSKIP);
-
-					// break out to test next pipe
-					if (rval == CONNECTORSUCCESS) {
-						validtests++;
-						break;
-					}
+					igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), output->name)
+						test_flip_to_scaled(&data, index, pipe, output);
 				}
-				if (rval == NOREQUESTEDFORMATONPIPE)
-					igt_debug("No requested format/modifier on pipe %s\n", kmstest_pipe_name(pipe));
 			}
-			igt_require_f(validtests > 0, "No valid pipe/connector/format/mod combination found\n");
 		}
 	}
+
 	igt_fixture {
 		free_fbs(&data);
 		if (data.pipe_crc) {
-- 
2.25.1



More information about the igt-dev mailing list