From: "Leo (Sunpeng) Li" <sunpeng.li@xxxxxxx> Increasing max pipe count to 6 to support AMD GPU's. Since some tests' behavior depends on this value, small changes are made to remove this dependency: * kms_ccs: Early abort if wanted_pipe is out-of-bounds. * kms_concurrent: Check if pipe is within bounds first. * kms_pipe_color: Prevent skipping of subsequent tests by placing generated tests in a 'igt_subtest_group'. * kms_plane: Move pipe and plane index checking to subtest group level. v2: Change invalid pipe check on kmstest_pipe_name() to use I915_MAX_PIPE v3: Change tabs to spaces in 'enum pipe' Signed-off-by: Leo (Sunpeng) Li <sunpeng.li at amd.com> --- lib/igt_kms.c | 10 ++++++++-- lib/igt_kms.h | 3 +++ tests/kms_ccs.c | 2 ++ tests/kms_concurrent.c | 2 +- tests/kms_pipe_color.c | 3 ++- tests/kms_plane.c | 8 +++++--- 6 files changed, 21 insertions(+), 7 deletions(-) diff --git a/lib/igt_kms.c b/lib/igt_kms.c index c77716b..473094d 100644 --- a/lib/igt_kms.c +++ b/lib/igt_kms.c @@ -319,12 +319,12 @@ const unsigned char* igt_kms_get_alt_edid(void) */ const char *kmstest_pipe_name(enum pipe pipe) { - const char *str[] = { "A", "B", "C" }; + const char *str[] = { "A", "B", "C", "D", "E", "F"}; if (pipe == PIPE_NONE) return "None"; - if (pipe > 2) + if (pipe >= I915_MAX_PIPES) return "invalid"; return str[pipe]; @@ -344,6 +344,12 @@ int kmstest_pipe_to_index(char pipe) return 1; else if (pipe == 'C') return 2; + else if (pipe == 'D') + return 3; + else if (pipe == 'E') + return 4; + else if (pipe == 'F') + return 5; else return -EINVAL; } diff --git a/lib/igt_kms.h b/lib/igt_kms.h index 9567a26..30bb6ff 100644 --- a/lib/igt_kms.h +++ b/lib/igt_kms.h @@ -54,6 +54,9 @@ enum pipe { PIPE_A = 0, PIPE_B, PIPE_C, + PIPE_D, + PIPE_E, + PIPE_F, I915_MAX_PIPES }; const char *kmstest_pipe_name(enum pipe pipe); diff --git a/tests/kms_ccs.c b/tests/kms_ccs.c index d829152..0795e3a 100644 --- a/tests/kms_ccs.c +++ b/tests/kms_ccs.c @@ -250,6 +250,8 @@ static void test(data_t *data) int valid_tests = 0; enum pipe wanted_pipe = data->pipe; + igt_skip_on(wanted_pipe >= display->n_pipes); + for_each_pipe_with_valid_output(display, data->pipe, data->output) { if (wanted_pipe != PIPE_NONE && data->pipe != wanted_pipe) continue; diff --git a/tests/kms_concurrent.c b/tests/kms_concurrent.c index b34540b..db06a37 100644 --- a/tests/kms_concurrent.c +++ b/tests/kms_concurrent.c @@ -351,8 +351,8 @@ run_tests_for_pipe(data_t *data, enum pipe pipe) igt_fixture { int valid_tests = 0; - igt_require(data->display.pipes[pipe].n_planes > 0); igt_skip_on(pipe >= data->display.n_pipes); + igt_require(data->display.pipes[pipe].n_planes > 0); for_each_valid_output_on_pipe(&data->display, pipe, output) valid_tests++; diff --git a/tests/kms_pipe_color.c b/tests/kms_pipe_color.c index fd58ac8..da49eb1 100644 --- a/tests/kms_pipe_color.c +++ b/tests/kms_pipe_color.c @@ -1180,7 +1180,8 @@ igt_main } for (int pipe = 0; pipe < I915_MAX_PIPES; pipe++) - run_tests_for_pipe(&data, pipe); + igt_subtest_group + run_tests_for_pipe(&data, pipe); igt_subtest_f("invalid-lut-sizes") invalid_lut_sizes(&data); diff --git a/tests/kms_plane.c b/tests/kms_plane.c index e1bd467..34418ca 100644 --- a/tests/kms_plane.c +++ b/tests/kms_plane.c @@ -354,9 +354,6 @@ test_plane_panning(data_t *data, enum pipe pipe, int plane, igt_output_t *output; int connected_outs = 0; - igt_skip_on(pipe >= data->display.n_pipes); - igt_skip_on(plane >= data->display.pipes[pipe].n_planes); - for_each_valid_output_on_pipe(&data->display, pipe, output) { test_plane_panning_with_output(data, pipe, plane, output, flags); @@ -369,6 +366,11 @@ test_plane_panning(data_t *data, enum pipe pipe, int plane, static void run_tests_for_pipe_plane(data_t *data, enum pipe pipe) { + igt_fixture { + igt_skip_on(pipe >= data->display.n_pipes); + igt_require(data->display.pipes[pipe].n_planes > 0); + } + igt_subtest_f("plane-position-covered-pipe-%s-planes", kmstest_pipe_name(pipe)) { int n_planes = data->display.pipes[pipe].n_planes; -- 2.7.4