[PATCH i-g-t 1/1] tests/kms_async_flips: add async flips suspend resume tests

Sharma, Swati2 swati2.sharma at intel.com
Mon Sep 9 18:00:45 UTC 2024


Hi Santosh,

Please find my review comments below:

Fix subject,
s/tests/test

Also, cover-letter can be avoided for single patch.

On 06-Sep-24 12:58 PM, Santhosh Reddy Guddati wrote:
> ---

Commit message missing. Please add.

>   tests/kms_async_flips.c | 53 +++++++++++++++++++++++++++++++++++++++++
>   1 file changed, 53 insertions(+)
> 
> diff --git a/tests/kms_async_flips.c b/tests/kms_async_flips.c
> index 5b70c4033..fd851397e 100644
> --- a/tests/kms_async_flips.c
> +++ b/tests/kms_async_flips.c
> @@ -66,6 +66,9 @@
>    *
>    * SUBTEST: invalid-async-flip
>    * Description: Negative case to verify if changes in fb are rejected from kernel as expected
> + *
> + * SUBTEST: async-flip-suspend-resume
> + * Description: Verify the async flip functionality with suspend and resume cycle
>    */
>   
>   #define CURSOR_POS 128
> @@ -672,6 +675,51 @@ static void run_test_with_modifiers(data_t *data, void (*test)(data_t *))
>   	}
>   }
>   
> +static void test_async_flip_suspend_resume(data_t *data)

Instead of adding new func(), is it possible to modify test_async_flip() 
to accommodate suspend resume api calls ?

> +{
> +	int ret, frame;
> +	long long int fps;
> +	struct timeval start, end, diff;
> +	int suspend_time = 1;
> +	int resume_time = 1;
> +
> +	igt_display_commit2(&data->display, data->display.is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
> +
> +	gettimeofday(&start, NULL);
> +	frame = 1;
> +	do {
> +		int flags = DRM_MODE_PAGE_FLIP_ASYNC | DRM_MODE_PAGE_FLIP_EVENT;
> +
> +		ret = drmModePageFlip(data->drm_fd, data->crtc_id,
> +				      data->bufs[frame % NUM_FBS].fb_id,
> +				      flags, data);
> +		igt_assert_eq(ret, 0);
> +
> +		wait_flip_event(data);
> +
> +		gettimeofday(&end, NULL);
> +		timersub(&end, &start, &diff);
> +
> +		if (diff.tv_sec == suspend_time) {
> +			igt_info("system suspending\n");
> +			igt_system_suspend_autoresume(SUSPEND_STATE_MEM, SUSPEND_TEST_NONE);
> +			suspend_time = 0;
> +		}
> +
> +		if (diff.tv_sec == resume_time) {
> +			igt_info("system resuming\n");
> +			igt_system_suspend_autoresume(SUSPEND_STATE_MEM, SUSPEND_TEST_NONE);
> +			resume_time = 0;
> +		}
> +
> +		frame++;
> +	} while (diff.tv_sec < RUN_TIME);
> +
> +	fps = frame * 1000 / RUN_TIME;
> +	igt_assert_f((fps / 1000) > (data->refresh_rate * MIN_FLIPS_PER_FRAME),
> +		     "FPS should be significantly higher than the refresh rate\n");
> +}
> +
>   static data_t data;
>   
>   igt_main
> @@ -750,6 +798,11 @@ igt_main
>   		run_test(&data, test_crc);
>   	}
>   
> +	igt_describe("Verify the async flip functionality after suspend and resume cycle");
> +	igt_subtest_with_dynamic("async-flip-suspend-resume") {
> +		run_test(&data, test_async_flip_suspend_resume);
> +	}
> +
>   	igt_fixture {
>   		for (i = 0; i < NUM_FBS; i++)
>   			igt_remove_fb(data.drm_fd, &data.bufs[i]);


More information about the igt-dev mailing list