summaryrefslogtreecommitdiff
path: root/tests/kms_concurrent.c
diff options
context:
space:
mode:
authorMika Kahola <mika.kahola@intel.com>2020-03-19 13:24:32 +0200
committerMika Kahola <mika.kahola@intel.com>2020-03-20 15:59:28 +0200
commit0ab05a51a059645d2e12e553a1de1d97451f57c5 (patch)
tree65b678d00433af7b561be8f7b3eaa106b30c6442 /tests/kms_concurrent.c
parentf49ebeee9f54d6f23c60a842f75f65561d452ab0 (diff)
tests/kms_concurrent: Test for maximum number of planes
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@intel.com> Reviewed-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
Diffstat (limited to 'tests/kms_concurrent.c')
-rw-r--r--tests/kms_concurrent.c15
1 files 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);