From: "Leo (Sunpeng) Li" <sunpeng...@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

v3: Change tabs to spaces in 'enum pipe'

Signed-off-by: Leo (Sunpeng) Li <sunpeng...@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

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to