On 2017-06-09 04:17 PM, sunpeng.li at amd.com wrote: > From: "Leo (Sunpeng) Li" <sunpeng.li at amd.com> > > 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 > > 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..8f7c2bb 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, Original code has spaces but you use tabs here. Can you change this to spaces to stay consistent? With that this patch is Reviewed-by: Harry Wentland <harry.wentland at amd.com> Harry > 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; >