[igt-dev] [PATCH i-g-t] tests/kms_busy: Convert to using igt_get_single_output_for_pipe, v2.
Maarten Lankhorst
maarten.lankhorst at linux.intel.com
Fri Mar 16 08:28:45 UTC 2018
Put a single igt_display_require_output_on_pipe in the fixture,
so we know we always have an output on the pipe and can always
assume it's not NULL.
Changes since v1:
- Move igt_subtest_group upwards, to prevent a skip when no valid
output can be found on pipe A, but can be found on other pipes.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala at linux.intel.com> #v1
Cc: Ville Syrjälä <ville.syrjala at linux.intel.com>
---
tests/kms_busy.c | 128 +++++++++++++++++++++++++------------------------------
1 file changed, 59 insertions(+), 69 deletions(-)
diff --git a/tests/kms_busy.c b/tests/kms_busy.c
index 0828a8b38a06..4a4e0e15608c 100644
--- a/tests/kms_busy.c
+++ b/tests/kms_busy.c
@@ -35,31 +35,23 @@ IGT_TEST_DESCRIPTION("Basic check of KMS ABI with busy framebuffers.");
static igt_output_t *
set_fb_on_crtc(igt_display_t *dpy, int pipe, struct igt_fb *fb)
{
+ drmModeModeInfoPtr mode;
+ igt_plane_t *primary;
igt_output_t *output;
- for_each_valid_output_on_pipe(dpy, pipe, output) {
- drmModeModeInfoPtr mode;
- igt_plane_t *primary;
-
- if (output->pending_pipe != PIPE_NONE)
- continue;
+ output = igt_get_single_output_for_pipe(dpy, pipe);
- igt_output_set_pipe(output, pipe);
- mode = igt_output_get_mode(output);
+ igt_output_set_pipe(output, pipe);
+ mode = igt_output_get_mode(output);
- igt_create_pattern_fb(dpy->drm_fd,
- mode->hdisplay, mode->vdisplay,
- DRM_FORMAT_XRGB8888,
- LOCAL_I915_FORMAT_MOD_X_TILED,
- fb);
-
- primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
- igt_plane_set_fb(primary, fb);
+ igt_create_pattern_fb(dpy->drm_fd, mode->hdisplay, mode->vdisplay,
+ DRM_FORMAT_XRGB8888,
+ LOCAL_I915_FORMAT_MOD_X_TILED, fb);
- return output;
- }
+ primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
+ igt_plane_set_fb(primary, fb);
- return NULL;
+ return output;
}
static void do_cleanup_display(igt_display_t *dpy)
@@ -168,7 +160,7 @@ static void test_flip(igt_display_t *dpy, unsigned ring, int pipe, bool modeset)
signal(SIGALRM, sighandler);
- igt_require((output = set_fb_on_crtc(dpy, pipe, &fb[0])));
+ output = set_fb_on_crtc(dpy, pipe, &fb[0]);
igt_display_commit2(dpy, COMMIT_LEGACY);
igt_create_pattern_fb(dpy->drm_fd,
@@ -246,7 +238,7 @@ static void test_hang(igt_display_t *dpy, unsigned ring,
igt_output_t *output;
igt_plane_t *primary;
- igt_require((output = set_fb_on_crtc(dpy, pipe, &fb[0])));
+ output = set_fb_on_crtc(dpy, pipe, &fb[0]);
igt_display_commit2(dpy, COMMIT_ATOMIC);
primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
@@ -290,7 +282,7 @@ static void test_pageflip_modeset_hang(igt_display_t *dpy,
igt_plane_t *primary;
igt_spin_t *t;
- igt_require((output = set_fb_on_crtc(dpy, pipe, &fb)));
+ output = set_fb_on_crtc(dpy, pipe, &fb);
primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
igt_display_commit2(dpy, dpy->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
@@ -333,86 +325,84 @@ igt_main
/* XXX Extend to cover atomic rendering tests to all planes + legacy */
- for_each_pipe_static(n) {
+ for_each_pipe_static(n) igt_subtest_group {
+ igt_hang_t hang;
+
errno = 0;
igt_fixture {
- igt_skip_on(n >= display.n_pipes);
+ igt_display_require_output_on_pipe(&display, n);
}
igt_subtest_f("basic-flip-%s",
- kmstest_pipe_name(n)) {
+ kmstest_pipe_name(n)) {
igt_require(gem_has_ring(display.drm_fd,
e->exec_id | e->flags));
test_flip(&display, e->exec_id | e->flags, n, false);
}
igt_subtest_f("basic-modeset-%s",
- kmstest_pipe_name(n)) {
+ kmstest_pipe_name(n)) {
igt_require(gem_has_ring(display.drm_fd,
e->exec_id | e->flags));
test_flip(&display, e->exec_id | e->flags, n, true);
}
- igt_subtest_group {
- igt_hang_t hang;
-
- igt_fixture {
- igt_require(gem_has_ring(display.drm_fd,
- e->exec_id | e->flags));
+ igt_fixture {
+ igt_require(gem_has_ring(display.drm_fd,
+ e->exec_id | e->flags));
- hang = igt_allow_hang(display.drm_fd, 0, 0);
- }
+ hang = igt_allow_hang(display.drm_fd, 0, 0);
+ }
- igt_subtest_f("extended-pageflip-modeset-hang-oldfb-%s-%s",
- e->name, kmstest_pipe_name(n)) {
- igt_require(gem_has_ring(display.drm_fd,
- e->exec_id | e->flags));
+ igt_subtest_f("extended-pageflip-modeset-hang-oldfb-%s-%s",
+ e->name, kmstest_pipe_name(n)) {
+ igt_require(gem_has_ring(display.drm_fd,
+ e->exec_id | e->flags));
- test_pageflip_modeset_hang(&display, e->exec_id | e->flags, n);
- }
+ test_pageflip_modeset_hang(&display, e->exec_id | e->flags, n);
+ }
- igt_fixture
- igt_require(display.is_atomic);
+ igt_fixture
+ igt_require(display.is_atomic);
- igt_subtest_f("extended-pageflip-hang-oldfb-%s-%s",
- e->name, kmstest_pipe_name(n))
- test_hang(&display, e->exec_id | e->flags, n, false, false);
+ igt_subtest_f("extended-pageflip-hang-oldfb-%s-%s",
+ e->name, kmstest_pipe_name(n))
+ test_hang(&display, e->exec_id | e->flags, n, false, false);
- igt_subtest_f("extended-pageflip-hang-newfb-%s-%s",
- e->name, kmstest_pipe_name(n))
- test_hang(&display, e->exec_id | e->flags, n, false, true);
+ igt_subtest_f("extended-pageflip-hang-newfb-%s-%s",
+ e->name, kmstest_pipe_name(n))
+ test_hang(&display, e->exec_id | e->flags, n, false, true);
- igt_subtest_f("extended-modeset-hang-oldfb-%s-%s",
- e->name, kmstest_pipe_name(n))
- test_hang(&display, e->exec_id | e->flags, n, true, false);
+ igt_subtest_f("extended-modeset-hang-oldfb-%s-%s",
+ e->name, kmstest_pipe_name(n))
+ test_hang(&display, e->exec_id | e->flags, n, true, false);
- igt_subtest_f("extended-modeset-hang-newfb-%s-%s",
- e->name, kmstest_pipe_name(n))
- test_hang(&display, e->exec_id | e->flags, n, true, true);
+ igt_subtest_f("extended-modeset-hang-newfb-%s-%s",
+ e->name, kmstest_pipe_name(n))
+ test_hang(&display, e->exec_id | e->flags, n, true, true);
- igt_subtest_f("extended-modeset-hang-oldfb-with-reset-%s-%s",
- e->name, kmstest_pipe_name(n)) {
- igt_set_module_param_int("force_reset_modeset_test", 1);
+ igt_subtest_f("extended-modeset-hang-oldfb-with-reset-%s-%s",
+ e->name, kmstest_pipe_name(n)) {
+ igt_set_module_param_int("force_reset_modeset_test", 1);
- test_hang(&display, e->exec_id | e->flags, n, true, false);
+ test_hang(&display, e->exec_id | e->flags, n, true, false);
- igt_set_module_param_int("force_reset_modeset_test", 0);
- }
+ igt_set_module_param_int("force_reset_modeset_test", 0);
+ }
- igt_subtest_f("extended-modeset-hang-newfb-with-reset-%s-%s",
- e->name, kmstest_pipe_name(n)) {
- igt_set_module_param_int("force_reset_modeset_test", 1);
+ igt_subtest_f("extended-modeset-hang-newfb-with-reset-%s-%s",
+ e->name, kmstest_pipe_name(n)) {
+ igt_set_module_param_int("force_reset_modeset_test", 1);
- test_hang(&display, e->exec_id | e->flags, n, true, true);
+ test_hang(&display, e->exec_id | e->flags, n, true, true);
- igt_set_module_param_int("force_reset_modeset_test", 0);
- }
+ igt_set_module_param_int("force_reset_modeset_test", 0);
+ }
- igt_fixture {
- igt_disallow_hang(display.drm_fd, hang);
- }
+ igt_fixture {
+ igt_disallow_hang(display.drm_fd, hang);
}
}
--
2.16.2
More information about the igt-dev
mailing list