[igt-dev] [PATCH i-g-t v3 6/7] tests/kms: Skip kms test cases for disabled pipes

Arkadiusz Hiler arkadiusz.hiler at intel.com
Tue Jun 30 12:22:32 UTC 2020


On Thu, Jun 25, 2020 at 11:53:17AM +0530, Mohammed Khajapasha wrote:
> Skip the kms test cases for disabled pipes with
> non-contiguous pipe display.
> 
> Signed-off-by: Mohammed Khajapasha <mohammed.khajapasha at intel.com>
> ---
>  tests/kms_color.c           |  3 ++-
>  tests/kms_color_chamelium.c |  3 ++-
>  tests/kms_concurrent.c      |  3 ++-
>  tests/kms_pipe_crc_basic.c  |  6 ++++--
>  tests/kms_plane.c           |  3 ++-
>  tests/kms_plane_lowres.c    |  3 ++-
>  tests/kms_plane_multiple.c  |  3 ++-
>  tests/kms_universal_plane.c | 18 ++++++++++++------
>  8 files changed, 28 insertions(+), 14 deletions(-)
> 
> diff --git a/tests/kms_color.c b/tests/kms_color.c
> index 7f2fbd4a..19f0f9b5 100644
> --- a/tests/kms_color.c
> +++ b/tests/kms_color.c
> @@ -628,7 +628,8 @@ run_tests_for_pipe(data_t *data, enum pipe p)
>  	igt_fixture {
>  		igt_require_pipe_crc(data->drm_fd);
>  
> -		igt_require(p < data->display.n_pipes);
> +		igt_require((p < data->display.n_pipes) &&
> +				(data->display.pipes[p].enabled));

If you go for always initalizing all the display.pipes you could just
turn this into:

igt_require(data->display.pipes[p].enabled);

Or even better, introudce a helper:

igt_require_pipe(&data->dipsplay, p);

This way the checks are easy to do and spit out consistent error
messages in case the requirement is not satisfied.

-- 
Cheers,
Arek

>  		pipe = &data->display.pipes[p];
>  		igt_require(pipe->n_planes >= 0);
> diff --git a/tests/kms_color_chamelium.c b/tests/kms_color_chamelium.c
> index 7f5a911c..2d690ca3 100644
> --- a/tests/kms_color_chamelium.c
> +++ b/tests/kms_color_chamelium.c
> @@ -519,7 +519,8 @@ run_tests_for_pipe(data_t *data, enum pipe p)
>  
>  	igt_fixture {
>  
> -		igt_require(p < data->display.n_pipes);
> +		igt_require((p < data->display.n_pipes) &&
> +				(data->display.pipes[p].enabled));
>  
>  		pipe = &data->display.pipes[p];
>  		igt_require(pipe->n_planes >= 0);
> diff --git a/tests/kms_concurrent.c b/tests/kms_concurrent.c
> index 89016563..1730bb2b 100644
> --- a/tests/kms_concurrent.c
> +++ b/tests/kms_concurrent.c
> @@ -320,7 +320,8 @@ run_tests_for_pipe(data_t *data, enum pipe pipe)
>  	igt_fixture {
>  		int valid_tests = 0;
>  
> -		igt_skip_on(pipe >= data->display.n_pipes);
> +		igt_skip_on((pipe >= data->display.n_pipes) ||
> +				!(data->display.pipes[pipe].enabled));
>  		igt_require(data->display.pipes[pipe].n_planes > 0);
>  
>  		for_each_valid_output_on_pipe(&data->display, pipe, output)
> diff --git a/tests/kms_pipe_crc_basic.c b/tests/kms_pipe_crc_basic.c
> index d169b7bd..ec31e2ca 100644
> --- a/tests/kms_pipe_crc_basic.c
> +++ b/tests/kms_pipe_crc_basic.c
> @@ -71,7 +71,8 @@ static void test_read_crc(data_t *data, enum pipe pipe, unsigned flags)
>  	igt_crc_t *crcs = NULL;
>  	int c, j;
>  
> -	igt_skip_on(pipe >= data->display.n_pipes);
> +	igt_skip_on((pipe >= display->n_pipes) ||
> +			!(display->pipes[pipe].enabled));
>  	igt_require_f(output, "No connector found for pipe %s\n",
>  		      kmstest_pipe_name(pipe));
>  
> @@ -187,7 +188,8 @@ igt_main
>  			test_read_crc(&data, pipe, TEST_SEQUENCE | TEST_NONBLOCK);
>  
>  		igt_subtest_f("suspend-read-crc-pipe-%s", kmstest_pipe_name(pipe)) {
> -			igt_skip_on(pipe >= data.display.n_pipes);
> +			igt_skip_on((pipe >= data.display.n_pipes) ||
> +					!(data.display.pipes[pipe].enabled));
>  
>  			test_read_crc(&data, pipe, 0);
>  
> diff --git a/tests/kms_plane.c b/tests/kms_plane.c
> index c6ead813..85ed4f94 100644
> --- a/tests/kms_plane.c
> +++ b/tests/kms_plane.c
> @@ -940,7 +940,8 @@ static void
>  run_tests_for_pipe_plane(data_t *data, enum pipe pipe)
>  {
>  	igt_fixture {
> -		igt_skip_on(pipe >= data->display.n_pipes);
> +		igt_skip_on((pipe >= data->display.n_pipes) ||
> +				!(data->display.pipes[pipe].enabled));
>  		igt_require(data->display.pipes[pipe].n_planes > 0);
>  	}
>  
> diff --git a/tests/kms_plane_lowres.c b/tests/kms_plane_lowres.c
> index 012b25e3..16afe570 100644
> --- a/tests/kms_plane_lowres.c
> +++ b/tests/kms_plane_lowres.c
> @@ -259,7 +259,8 @@ test_planes_on_pipe(data_t *data, uint64_t modifier)
>  	igt_plane_t *plane;
>  	unsigned tested = 0;
>  
> -	igt_skip_on(data->pipe >= data->display.n_pipes);
> +	igt_skip_on((data->pipe >= data->display.n_pipes) ||
> +			!(data->display.pipes[data->pipe].enabled));
>  	igt_display_require_output_on_pipe(&data->display, data->pipe);
>  	igt_skip_on(!igt_display_has_format_mod(&data->display,
>  						DRM_FORMAT_XRGB8888, modifier));
> diff --git a/tests/kms_plane_multiple.c b/tests/kms_plane_multiple.c
> index 6cf060b3..e7b5951c 100644
> --- a/tests/kms_plane_multiple.c
> +++ b/tests/kms_plane_multiple.c
> @@ -378,7 +378,8 @@ static void
>  run_tests_for_pipe(data_t *data, enum pipe pipe)
>  {
>  	igt_fixture {
> -		igt_skip_on(pipe >= data->display.n_pipes);
> +		igt_skip_on((pipe >= data->display.n_pipes) ||
> +				!(data->display.pipes[pipe].enabled));
>  		igt_require(data->display.pipes[pipe].n_planes > 0);
>  	}
>  
> diff --git a/tests/kms_universal_plane.c b/tests/kms_universal_plane.c
> index 676be633..ce28b37d 100644
> --- a/tests/kms_universal_plane.c
> +++ b/tests/kms_universal_plane.c
> @@ -135,7 +135,8 @@ functional_test_pipe(data_t *data, enum pipe pipe, igt_output_t *output)
>  	int num_primary = 0, num_cursor = 0;
>  	int i;
>  
> -	igt_skip_on(pipe >= display->n_pipes);
> +	igt_skip_on((pipe >= display->n_pipes) ||
> +			!(display->pipes[pipe].enabled));
>  
>  	igt_info("Testing connector %s using pipe %s\n", igt_output_name(output),
>  		 kmstest_pipe_name(pipe));
> @@ -364,7 +365,8 @@ sanity_test_pipe(data_t *data, enum pipe pipe, igt_output_t *output)
>  	int i;
>  	int expect;
>  
> -	igt_skip_on(pipe >= data->display.n_pipes);
> +	igt_skip_on((pipe >= data->display.n_pipes) ||
> +			!(data->display.pipes[pipe].enabled));
>  
>  	igt_output_set_pipe(output, pipe);
>  	mode = igt_output_get_mode(output);
> @@ -476,7 +478,8 @@ pageflip_test_pipe(data_t *data, enum pipe pipe, igt_output_t *output)
>  	fd_set fds;
>  	int ret = 0;
>  
> -	igt_skip_on(pipe >= data->display.n_pipes);
> +	igt_skip_on((pipe >= data->display.n_pipes) ||
> +			!(data->display.pipes[pipe].enabled));
>  
>  	igt_output_set_pipe(output, pipe);
>  
> @@ -577,7 +580,8 @@ cursor_leak_test_pipe(data_t *data, enum pipe pipe, igt_output_t *output)
>  	int r, g, b;
>  	int count1, count2;
>  
> -	igt_skip_on(pipe >= display->n_pipes);
> +	igt_skip_on((pipe >= display->n_pipes) ||
> +			!(display->pipes[pipe].enabled));
>  	igt_require(display->has_cursor_plane);
>  
>  	igt_output_set_pipe(output, pipe);
> @@ -705,7 +709,8 @@ gen9_test_pipe(data_t *data, enum pipe pipe, igt_output_t *output)
>  	int ret = 0;
>  
>  	igt_skip_on(data->gen < 9);
> -	igt_skip_on(pipe >= data->display.n_pipes);
> +	igt_skip_on((pipe >= data->display.n_pipes) ||
> +			!(data->display.pipes[pipe].enabled));
>  
>  	igt_output_set_pipe(output, pipe);
>  
> @@ -750,7 +755,8 @@ run_tests_for_pipe(data_t *data, enum pipe pipe)
>  	igt_fixture {
>  		int valid_tests = 0;
>  
> -		igt_skip_on(pipe >= data->display.n_pipes);
> +		igt_skip_on((pipe >= data->display.n_pipes) ||
> +			!(data->display.pipes[pipe].enabled));
>  
>  		for_each_valid_output_on_pipe(&data->display, pipe, output)
>  			valid_tests++;
> -- 
> 2.24.1
> 


More information about the igt-dev mailing list