[igt-dev] [PATCH i-g-t] tests/kms_plane_multiple: Before going testing check how many planes are allowed

Daniel Vetter daniel at ffwll.ch
Wed Apr 3 08:38:33 UTC 2019


On Tue, Apr 02, 2019 at 05:42:30PM +0300, Juha-Pekka Heikkila wrote:
> Before start testing try out how many planes kernel will allow
> simultaneously to be used.

This isn't enough, kernel might have other limits than just total number
of planes. In the future this might depend upon where they are actually
placed, how big, and all that stuff.

Also, we need to randomize which planes we pick, so needs an
igt_permute_array somewhere to avoid always using the same first planes.
-Daniel

> 
> Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila at gmail.com>
> ---
>  tests/kms_plane_multiple.c | 32 ++++++++++++++++++++++++++------
>  1 file changed, 26 insertions(+), 6 deletions(-)
> 
> diff --git a/tests/kms_plane_multiple.c b/tests/kms_plane_multiple.c
> index bfaeede..5107d9d 100644
> --- a/tests/kms_plane_multiple.c
> +++ b/tests/kms_plane_multiple.c
> @@ -260,7 +260,9 @@ test_plane_position_with_output(data_t *data, enum pipe pipe,
>  {
>  	color_t blue  = { 0.0f, 0.0f, 1.0f };
>  	igt_crc_t crc;
> +	igt_plane_t *plane;
>  	int i;
> +	int err, c = 0;
>  	int iterations = opt.iterations < 1 ? 1 : opt.iterations;
>  	bool loop_forever;
>  	char info[256];
> @@ -274,17 +276,35 @@ test_plane_position_with_output(data_t *data, enum pipe pipe,
>  			iterations, iterations > 1 ? "iterations" : "iteration");
>  	}
>  
> -	igt_info("Testing connector %s using pipe %s with %d planes %s with seed %d\n",
> -		 igt_output_name(output), kmstest_pipe_name(pipe), n_planes,
> -		 info, opt.seed);
> -
>  	test_init(data, pipe, n_planes);
>  
>  	test_grab_crc(data, output, pipe, &blue, tiling);
>  
> +	/*
> +	 * Find out how many planes are allowed simultaneously
> +	 */
> +	do {
> +		c++;
> +		prepare_planes(data, pipe, &blue, tiling, c, output);
> +		err = igt_display_try_commit2(&data->display, COMMIT_ATOMIC);
> +	} while (!err && c < n_planes);
> +
> +	if(err)
> +		c--;
> +
> +	/*
> +	 * clean up failed state.
> +	 */
> +	for_each_plane_on_pipe(&data->display, pipe, plane)
> +		igt_plane_set_fb(plane, NULL);
> +
> +	igt_info("Testing connector %s using pipe %s with %d planes %s with seed %d\n",
> +		 igt_output_name(output), kmstest_pipe_name(pipe), c,
> +		 info, opt.seed);
> +
>  	i = 0;
> -	while (i < iterations || loop_forever) {
> -		prepare_planes(data, pipe, &blue, tiling, n_planes, output);
> +	while ((i < iterations || loop_forever) && c > 0) {
> +		prepare_planes(data, pipe, &blue, tiling, c, output);
>  
>  		igt_display_commit2(&data->display, COMMIT_ATOMIC);
>  
> -- 
> 2.7.4
> 
> _______________________________________________
> igt-dev mailing list
> igt-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/igt-dev

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch


More information about the igt-dev mailing list