Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: "Shankar, Uma" <uma.shankar@intel.com>
To: "Gupta, Nidhi1" <nidhi1.gupta@intel.com>,
	"igt-dev@lists.freedesktop.org" <igt-dev@lists.freedesktop.org>
Cc: "Gupta, Nidhi1" <nidhi1.gupta@intel.com>,
	"Heikkila, Juha-pekka" <juha-pekka.heikkila@intel.com>,
	"uma.shanker@intel.com" <uma.shanker@intel.com>
Subject: Re: [igt-dev] [PATCH i-g-t] tests/kms_atomic_transition:reduce execution time
Date: Mon, 14 Dec 2020 11:59:26 +0000	[thread overview]
Message-ID: <906700b4f1be41edb4adf46d4672e73b@intel.com> (raw)
In-Reply-To: <20201211060706.14347-1-nidhi1.gupta@intel.com>



> -----Original Message-----
> From: igt-dev <igt-dev-bounces@lists.freedesktop.org> On Behalf Of
> nidhi1.gupta@intel.com
> Sent: Friday, December 11, 2020 11:37 AM
> To: igt-dev@lists.freedesktop.org
> Cc: Gupta, Nidhi1 <nidhi1.gupta@intel.com>; Heikkila, Juha-pekka <juha-
> pekka.heikkila@intel.com>; uma.shanker@intel.com
> Subject: [igt-dev] [PATCH i-g-t] tests/kms_atomic_transition:reduce execution
> time
> 
> From: Nidhi Gupta <nidhi1.gupta@intel.com>
> 
> v1: All the subtests are using for_each_pipe_with_valid_output function which
> will execute on all the possible combination of pipe and output to reduce the
> execution time replaced the function with for_each_pipe_with_single_output
> this will loop over all the pipes but at most once.
> 
> v2: kms_atomic_transition test is taking minimum of 69.5s time to execute on CI.
> To reduce the execution time this patch will add the change which will run the
> test on 1 HDR plane, 1 SDR UV plane, 1 SDR Y plane and skip the rest of the
> planes.
> 
> v3: combined v1 and v2 in one patch.
> 
> Signed-off-by: Nidhi Gupta <nidhi1.gupta@intel.com>
> ---
>  tests/kms_atomic_transition.c | 55 +++++++++++++++++++++++++++--------
>  1 file changed, 43 insertions(+), 12 deletions(-)
> 
> diff --git a/tests/kms_atomic_transition.c b/tests/kms_atomic_transition.c index
> a71bbe10..9e7c8e8a 100644
> --- a/tests/kms_atomic_transition.c
> +++ b/tests/kms_atomic_transition.c
> @@ -205,6 +205,33 @@ static void set_sprite_wh(igt_display_t *display, enum
> pipe pipe,  #define is_atomic_check_plane_size_errno(errno) \
>  		(errno == -EINVAL)
> 
> +static bool skip_plane(igt_display_t *display, igt_plane_t *plane) {
> +	int index = plane->index;
> +
> +	if (!is_i915_device(display->drm_fd))
> +		return false;
> +
> +	if (plane->type == DRM_PLANE_TYPE_CURSOR)
> +		return false;
> +
> +	if (plane->type == DRM_PLANE_TYPE_PRIMARY)
> +		return false;

Why including PRIMARY here, any specific reason.

> +
> +	if (intel_gen(intel_get_drm_devid(display->drm_fd)) < 11)
> +		return false;
> +
> +	/*
> +	 * Test 1 HDR plane, 1 SDR UV plane, 1 SDR Y plane.
> +	 *
> +	 * Kernel registers planes in the hardware Z order:
> +	 * 0,1,2 HDR planes
> +	 * 3,4 SDR UV planes
> +	 * 5,6 SDR Y planes
> +	 */
> +	return index != 0 && index != 3 && index != 5; }
> +
>  static void setup_parms(igt_display_t *display, enum pipe pipe,
>  			const drmModeModeInfo *mode,
>  			struct igt_fb *primary_fb,
> @@ -230,8 +257,12 @@ static void setup_parms(igt_display_t *display, enum
> pipe pipe,
>  		cursor_height = mode->vdisplay;
> 
>  	for_each_plane_on_pipe(display, pipe, plane) {
> +
>  		int i = plane->index;
> 
> +		if (skip_plane(display, plane))
> +			continue;
> +
>  		if (plane->type == DRM_PLANE_TYPE_PRIMARY) {
>  			parms[i].fb = primary_fb;
>  			parms[i].width = mode->hdisplay;
> @@ -932,46 +963,46 @@ igt_main
>  	}
> 
>  	igt_subtest("plane-primary-toggle-with-vblank-wait")
> -		for_each_pipe_with_valid_output(&display, pipe, output)
> +		for_each_pipe_with_single_output(&display, pipe, output)

I guess better option would be to limit it to 2 pipes (instead of all pipes), but still test all outputs.
That will ensure that we don't lose coverage but still reduce the test execution times.

>  			run_primary_test(&display, pipe, output);
> 
>  	igt_subtest_with_dynamic("plane-all-transition") {
> -		for_each_pipe_with_valid_output(&display, pipe, output) {
> +		for_each_pipe_with_single_output(&display, pipe, output) {
>  			igt_dynamic_f("%s-pipe-%s", igt_output_name(output),
> kmstest_pipe_name(pipe))
>  				run_transition_test(&display, pipe, output,
> TRANSITION_PLANES, false, false);
>  		}
>  	}
> 
>  	igt_subtest_with_dynamic("plane-all-transition-fencing") {
> -		for_each_pipe_with_valid_output(&display, pipe, output) {
> +		for_each_pipe_with_single_output(&display, pipe, output) {
>  			igt_dynamic_f("%s-pipe-%s", igt_output_name(output),
> kmstest_pipe_name(pipe))
>  				run_transition_test(&display, pipe, output,
> TRANSITION_PLANES, false, true);
>  		}
>  	}
> 
>  	igt_subtest_with_dynamic("plane-all-transition-nonblocking") {
> -		for_each_pipe_with_valid_output(&display, pipe, output) {
> +		for_each_pipe_with_single_output(&display, pipe, output) {
>  			igt_dynamic_f("%s-pipe-%s", igt_output_name(output),
> kmstest_pipe_name(pipe))
>  				run_transition_test(&display, pipe, output,
> TRANSITION_PLANES, true, false);
>  		}
>  	}
> 
>  	igt_subtest_with_dynamic("plane-all-transition-nonblocking-fencing") {
> -		for_each_pipe_with_valid_output(&display, pipe, output) {
> +		for_each_pipe_with_single_output(&display, pipe, output) {
>  			igt_dynamic_f("%s-pipe-%s", igt_output_name(output),
> kmstest_pipe_name(pipe))
>  				run_transition_test(&display, pipe, output,
> TRANSITION_PLANES, true, true);
>  		}
>  	}
> 
>  	igt_subtest_with_dynamic("plane-use-after-nonblocking-unbind") {
> -		for_each_pipe_with_valid_output(&display, pipe, output) {
> +		for_each_pipe_with_single_output(&display, pipe, output) {
>  			igt_dynamic_f("%s-pipe-%s", igt_output_name(output),
> kmstest_pipe_name(pipe))
>  				run_transition_test(&display, pipe, output,
> TRANSITION_AFTER_FREE, true, false);
>  		}
>  	}
> 
>  	igt_subtest_with_dynamic("plane-use-after-nonblocking-unbind-
> fencing") {
> -		for_each_pipe_with_valid_output(&display, pipe, output) {
> +		for_each_pipe_with_single_output(&display, pipe, output) {
>  			igt_dynamic_f("%s-pipe-%s", igt_output_name(output),
> kmstest_pipe_name(pipe))
>  				run_transition_test(&display, pipe, output,
> TRANSITION_AFTER_FREE, true, true);
>  		}
> @@ -983,7 +1014,7 @@ igt_main
>  	 * panels with long power cycle delays.
>  	 */
>  	igt_subtest_with_dynamic("plane-all-modeset-transition")
> -		for_each_pipe_with_valid_output(&display, pipe, output) {
> +		for_each_pipe_with_single_output(&display, pipe, output) {
>  			if (output_is_internal_panel(output))
>  				continue;
> 
> @@ -992,7 +1023,7 @@ igt_main
>  		}
> 
>  	igt_subtest_with_dynamic("plane-all-modeset-transition-fencing")
> -		for_each_pipe_with_valid_output(&display, pipe, output) {
> +		for_each_pipe_with_single_output(&display, pipe, output) {
>  			if (output_is_internal_panel(output))
>  				continue;
> 
> @@ -1001,7 +1032,7 @@ igt_main
>  		}
> 
>  	igt_subtest_with_dynamic("plane-all-modeset-transition-internal-
> panels") {
> -		for_each_pipe_with_valid_output(&display, pipe, output) {
> +		for_each_pipe_with_single_output(&display, pipe, output) {
>  			if (!output_is_internal_panel(output))
>  				continue;
> 
> @@ -1011,7 +1042,7 @@ igt_main
>  	}
> 
>  	igt_subtest_with_dynamic("plane-all-modeset-transition-fencing-
> internal-panels") {
> -		for_each_pipe_with_valid_output(&display, pipe, output) {
> +		for_each_pipe_with_single_output(&display, pipe, output) {
>  			if (!output_is_internal_panel(output))
>  				continue;
> 
> @@ -1021,7 +1052,7 @@ igt_main
>  	}
> 
>  	igt_subtest("plane-toggle-modeset-transition")
> -		for_each_pipe_with_valid_output(&display, pipe, output)
> +		for_each_pipe_with_single_output(&display, pipe, output)
>  			run_transition_test(&display, pipe, output,
> TRANSITION_MODESET_DISABLE, false, false);
> 
>  	for (i = 1; i <= IGT_MAX_PIPES; i++) {
> --
> 2.26.2
> 
> _______________________________________________
> igt-dev mailing list
> igt-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/igt-dev
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

  parent reply	other threads:[~2020-12-14 11:59 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-11  6:07 [igt-dev] [PATCH i-g-t] tests/kms_atomic_transition:reduce execution time nidhi1.gupta
2020-12-11  6:34 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_atomic_transition:reduce execution time (rev4) Patchwork
2020-12-11  7:31 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
2020-12-14 11:59 ` Shankar, Uma [this message]
2020-12-17  3:28   ` [igt-dev] [PATCH i-g-t] tests/kms_atomic_transition:reduce execution time Gupta, Nidhi1
  -- strict thread matches above, loose matches on Subject: below --
2020-12-09 13:36 Nidhi Gupta
2020-12-09 13:36 ` Nidhi Gupta

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=906700b4f1be41edb4adf46d4672e73b@intel.com \
    --to=uma.shankar@intel.com \
    --cc=igt-dev@lists.freedesktop.org \
    --cc=juha-pekka.heikkila@intel.com \
    --cc=nidhi1.gupta@intel.com \
    --cc=uma.shanker@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox