[igt-dev] [V2] tests/kms_setmode: Limit the execution to two pipes

Bhanuprakash Modem bhanuprakash.modem at intel.com
Thu Mar 24 06:54:56 UTC 2022


Restrict the execution of all subtests to two pipes to optimize
the CI execution time.

If we want to execute on all pipes, need to pass an extra flag
"-e" as a command line argument.

Example: ./build/tests/kms_setmode -e --r basic

V2:
* Remove simulation check, as we need this change on real h/w too
* Update commit message

Cc: Karthik B S <karthik.b.s at intel.com>
Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem at intel.com>
---
 tests/kms_setmode.c | 34 +++++++++++++++++++++++++---------
 1 file changed, 25 insertions(+), 9 deletions(-)

diff --git a/tests/kms_setmode.c b/tests/kms_setmode.c
index d5cb45d438..912352f140 100644
--- a/tests/kms_setmode.c
+++ b/tests/kms_setmode.c
@@ -37,10 +37,14 @@
 /* max combinations with repetitions */
 #define MAX_COMBINATION_ELEMS   MAX_CRTCS
 
+/* restricted pipe count */
+#define CRTC_RESTRICT_CNT 2
+
 static int drm_fd;
 static drmModeRes *drm_resources;
 static int filter_test_id;
 static bool dry_run;
+static bool extended = false;
 
 const drmModeModeInfo mode_640_480 = {
 	.name		= "640x480",
@@ -801,6 +805,14 @@ static void get_combinations(int n, int k, bool allow_repetitions,
 	iterate_combinations(n, k, allow_repetitions, 0, 0, &comb, set);
 }
 
+static int get_crtc_count(int count_crtcs, bool extend)
+{
+	if ((count_crtcs <= CRTC_RESTRICT_CNT) || extend)
+		return count_crtcs;
+	else
+		return CRTC_RESTRICT_CNT;
+}
+
 static void test_combinations(const struct test_config *tconf,
 			      int connector_count)
 {
@@ -808,6 +820,7 @@ static void test_combinations(const struct test_config *tconf,
 	struct combination_set crtc_combs;
 	struct connector_config *cconfs;
 	int i;
+	int crtc_count = get_crtc_count(tconf->resources->count_crtcs, extended);
 
 	if (connector_count > 2 && (tconf->flags & TEST_STEALING))
 		return;
@@ -815,17 +828,15 @@ static void test_combinations(const struct test_config *tconf,
 	igt_assert(tconf->resources);
 
 	connector_combs.capacity = pow(tconf->resources->count_connectors,
-				       tconf->resources->count_crtcs + 1);
-	crtc_combs.capacity = pow(tconf->resources->count_crtcs,
-				  tconf->resources->count_crtcs + 1);
-
+				       crtc_count + 1);
+	crtc_combs.capacity = pow(crtc_count,
+				  crtc_count + 1);
 	connector_combs.items = malloc(connector_combs.capacity * sizeof(struct combination));
 	crtc_combs.items = malloc(crtc_combs.capacity * sizeof(struct combination));
 
 	get_combinations(tconf->resources->count_connectors, connector_count,
 			 false, &connector_combs);
-	get_combinations(tconf->resources->count_crtcs, connector_count,
-			 true, &crtc_combs);
+	get_combinations(crtc_count, connector_count, true, &crtc_combs);
 
 	igt_info("Testing: %s %d connector combinations\n", tconf->name,
 		 connector_count);
@@ -866,9 +877,10 @@ free_cconfs:
 static void run_test(const struct test_config *tconf)
 {
 	int connector_num;
+	int crtc_count = get_crtc_count(tconf->resources->count_crtcs, extended);
 
 	connector_num = tconf->flags & TEST_CLONE ? 2 : 1;
-	for (; connector_num <= tconf->resources->count_crtcs; connector_num++)
+	for (; connector_num <= crtc_count; connector_num++)
 		test_combinations(tconf, connector_num);
 }
 
@@ -878,6 +890,9 @@ static int opt_handler(int opt, int opt_index, void *data)
 	case 'd':
 		dry_run = true;
 		break;
+	case 'e':
+		extended = true;
+		break;
 	case 't':
 		filter_test_id = atoi(optarg);
 		break;
@@ -890,9 +905,10 @@ static int opt_handler(int opt, int opt_index, void *data)
 
 const char *help_str =
 	"  -d\t\tDon't run any test, only print what would be done. (still needs DRM access)\n"
-	"  -t <test id>\tRun only the test with this id.";
+	"  -t <test id>\tRun only the test with this id\n"
+	"  -e \t\tExtend to run on all pipes. (By default tests will run on two pipes only)\n";
 
-igt_main_args("dt:", NULL, help_str, opt_handler, NULL)
+igt_main_args("det:", NULL, help_str, opt_handler, NULL)
 {
 	const struct {
 		enum test_flags flags;
-- 
2.35.1



More information about the igt-dev mailing list