[igt-dev] [PATCH i-g-t] tests/kms_setmode: Limit the execution on simulation

Karthik B S karthik.b.s at intel.com
Wed Mar 23 09:23:49 UTC 2022


On 3/23/2022 12:52 PM, Bhanuprakash Modem wrote:
> Restrict the execution of all subtests to two pipes on simulation
> environment.
>
> 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
>
> Cc: Karthik B S <karthik.b.s at intel.com>
> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem at intel.com>
> ---
>   tests/kms_setmode.c | 38 +++++++++++++++++++++++++++++---------
>   1 file changed, 29 insertions(+), 9 deletions(-)
>
> diff --git a/tests/kms_setmode.c b/tests/kms_setmode.c
> index d5cb45d438..5f879fb633 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,18 @@ 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 (igt_run_in_simulation()) {

Hi,

I agree with this idea of restricting the execution to 2 pipes. IMHO, we 
could remove this simulation check also and restrict the execution to 2 
pipes in all cases to optimize execution time on CI. Otherwise the 
execution time on CI for this test will be very high, especially if we 
configurations in which we have displays connected to all the pipes.

Thanks,

Karthik.B.S

> +		if ((count_crtcs <= CRTC_RESTRICT_CNT) || extend)
> +			return count_crtcs;
> +		else
> +			return CRTC_RESTRICT_CNT;
> +	}
> +
> +	return count_crtcs;
> +}
> +
>   static void test_combinations(const struct test_config *tconf,
>   			      int connector_count)
>   {
> @@ -808,6 +824,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 +832,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 +881,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 +894,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 +909,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;




More information about the igt-dev mailing list