summaryrefslogtreecommitdiff
path: root/tests/kms_setmode.c
diff options
context:
space:
mode:
authorPatnana Venkata Sai <venkata.sai.patnana@intel.com>2021-02-19 17:11:08 +0530
committerKunal Joshi <kunal1.joshi@intel.com>2021-02-22 15:59:23 +0530
commit8c8499c29dd2aa189c3d687e057ba4df326b1732 (patch)
tree471bdf33dc6afe9dd0ac0a947351dfe53cc9e060 /tests/kms_setmode.c
parente8fb87056cc4053dde25fe151df9ed3264adbf5a (diff)
tests/kms_setmode: Restrict the test execution to two pipes
Restrict execution of all subtests to two pipes(default) If you want to execute on all pipes need to pass extra argument(-e) Example: ./build/tests/kms_setmode -e --r basic V2: Handle when count_crtcs is less than 2 (petri) V3: Add helper function for limit_crtc_count (petri) Cc: Juha-Pekka Heikkilä <juha-pekka.heikkila@intel.com> Cc: Modem Bhanuprakash <bhanuprakash.modem@intel.com> Cc: Karthik B S <karthik.b.s@intel.com> Cc: Latvala Petri <petri.latvala@intel.com> Tested-by: Patnana Venkata Sai <venkata.sai.patnana@intel.com> Signed-off-by: Patnana Venkata Sai <venkata.sai.patnana@intel.com> Reviewed-by: Petri Latvala <petri.latvala@intel.com>
Diffstat (limited to 'tests/kms_setmode.c')
-rw-r--r--tests/kms_setmode.c35
1 files changed, 26 insertions, 9 deletions
diff --git a/tests/kms_setmode.c b/tests/kms_setmode.c
index 16648087..e356bfee 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 all_pipes = false;
const drmModeModeInfo mode_640_480 = {
.name = "640x480",
@@ -747,6 +751,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_limit_crtc_count(int count_crtcs, bool all_pipe)
+{
+ if ((count_crtcs <= CRTC_RESTRICT_CNT) || all_pipe)
+ return count_crtcs;
+ else
+ return CRTC_RESTRICT_CNT;
+}
+
static void test_combinations(const struct test_config *tconf,
int connector_count)
{
@@ -754,6 +766,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_limit_crtc_count(tconf->resources->count_crtcs, all_pipes);
if (connector_count > 2 && (tconf->flags & TEST_STEALING))
return;
@@ -761,20 +774,19 @@ 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);
+
for (i = 0; i < connector_combs.count; i++) {
int *connector_idxs;
int ret;
@@ -812,9 +824,10 @@ free_cconfs:
static void run_test(const struct test_config *tconf)
{
int connector_num;
+ int crtc_count = get_limit_crtc_count(tconf->resources->count_crtcs, all_pipes);
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);
}
@@ -824,6 +837,9 @@ static int opt_handler(int opt, int opt_index, void *data)
case 'd':
dry_run = true;
break;
+ case 'e':
+ all_pipes = true;
+ break;
case 't':
filter_test_id = atoi(optarg);
break;
@@ -836,9 +852,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\tRun on all pipes. (Default it will Run only two pipes)\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;