[igt-dev] [PATCH i-g-t] tests/kms_concurrent: Test for maximum number of planes
Juha-Pekka Heikkila
juhapekka.heikkila at gmail.com
Thu Mar 19 16:35:07 UTC 2020
Reviewed-by: Juha-Pekka Heikkila <juhapekka.heikkila at gmail.com>
On 19.3.2020 13.42, Mika Kahola wrote:
> In some cases we ran out of bandwidth when executiong a test.
> An error such as this can be seen on dmesg
>
> "Bandwidth 16632 MB/s exceeds max available 6553 MB/s (7 active planes)"
>
> The patch tests first, how many planes the platform can support with
> the given resolution. The actual test is then performed by using the
> calculated maximum number of planes instead of maximum number of planes
> that the platform supports.
>
> Signed-off-by: Mika Kahola <mika.kahola at intel.com>
> ---
> tests/kms_concurrent.c | 15 +++++++++------
> 1 file changed, 9 insertions(+), 6 deletions(-)
>
> diff --git a/tests/kms_concurrent.c b/tests/kms_concurrent.c
> index 14ca5fab..61137139 100644
> --- a/tests/kms_concurrent.c
> +++ b/tests/kms_concurrent.c
> @@ -196,20 +196,19 @@ prepare_planes(data_t *data, enum pipe pipe, int max_planes,
> }
>
> static void
> -test_plane_position_with_output(data_t *data, enum pipe pipe, igt_output_t *output)
> +test_plane_position_with_output(data_t *data, enum pipe pipe, int max_planes,
> + igt_output_t *output)
> {
> int i;
> int iterations = opt.iterations < 1 ? 1 : opt.iterations;
> bool loop_forever = opt.iterations == LOOP_FOREVER ? true : false;
> - int max_planes = data->display.pipes[pipe].n_planes;
>
> igt_pipe_refresh(&data->display, pipe, true);
>
> i = 0;
> while (i < iterations || loop_forever) {
> prepare_planes(data, pipe, max_planes, output);
> - igt_display_commit2(&data->display, COMMIT_ATOMIC);
> -
> + igt_display_try_commit2(&data->display, COMMIT_ATOMIC);
> i++;
> }
> }
> @@ -242,7 +241,7 @@ get_lowres_mode(data_t *data, const drmModeModeInfo *mode_default,
> return mode;
> }
>
> -static void
> +static int
> test_resolution_with_output(data_t *data, enum pipe pipe, igt_output_t *output)
> {
> const drmModeModeInfo *mode_hi, *mode_lo;
> @@ -294,6 +293,8 @@ test_resolution_with_output(data_t *data, enum pipe pipe, igt_output_t *output)
>
> i++;
> }
> +
> + return max_planes;
> }
>
> static void
> @@ -301,6 +302,7 @@ run_test(data_t *data, enum pipe pipe, igt_output_t *output)
> {
> int connected_outs;
> int n_planes = data->display.pipes[pipe].n_planes;
> + int max_planes = n_planes;
>
> if (!opt.user_seed)
> opt.seed = time(NULL);
> @@ -311,9 +313,10 @@ run_test(data_t *data, enum pipe pipe, igt_output_t *output)
> igt_output_name(output), kmstest_pipe_name(pipe), opt.seed);
>
> test_init(data, pipe, n_planes, output);
> + max_planes = test_resolution_with_output(data, pipe, output);
>
> igt_fork(child, 1) {
> - test_plane_position_with_output(data, pipe, output);
> + test_plane_position_with_output(data, pipe, max_planes, output);
> }
>
> test_resolution_with_output(data, pipe, output);
>
More information about the igt-dev
mailing list