diff options
author | Maarten Lankhorst <maarten.lankhorst@linux.intel.com> | 2017-10-10 16:47:04 +0200 |
---|---|---|
committer | Maarten Lankhorst <maarten.lankhorst@linux.intel.com> | 2017-10-12 16:43:06 +0200 |
commit | e9f4c3170c76bb5153e9d1d7212b2256a44b1725 (patch) | |
tree | 5078a2bc94eb92386f6429003d5f02164bdb19d7 /tests/debugfs_test.c | |
parent | 1fc20664fcbff058db365a2238a5bddfeff5325a (diff) |
tests/debugfs_test: Try to light all outputs to increase chances of finding fails, v3.
Make sure read_all_entries has all outputs possible enabled, but also
add a test that runs with all outputs disabled.
This will maximize coverage of debugfs reading, and allows the test not
to be dependent on fbcon for setup.
Changes since v1:
- Put framebuffers on all primary planes, to get a crc from i915_sink_src_eDP1.
Changes since v2:
- Use igt_output_get_plane_type, not igt_output_get_plane.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
[mlankhorst: Add comment suggested by ickle.]
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'tests/debugfs_test.c')
-rw-r--r-- | tests/debugfs_test.c | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/tests/debugfs_test.c b/tests/debugfs_test.c index 5e7805e1..ae38ba07 100644 --- a/tests/debugfs_test.c +++ b/tests/debugfs_test.c @@ -78,15 +78,65 @@ static void read_and_discard_sysfs_entries(int path_fd) igt_main { int fd = -1, debugfs; + igt_display_t display; + struct igt_fb fb[IGT_MAX_PIPES]; + enum pipe pipe; + igt_skip_on_simulation(); igt_fixture { fd = drm_open_driver_master(DRIVER_INTEL); igt_require_gem(fd); debugfs = igt_debugfs_dir(fd); + + kmstest_set_vt_graphics_mode(); + igt_display_init(&display, fd); } igt_subtest("read_all_entries") { + /* try to light all pipes */ + for_each_pipe(&display, pipe) { + igt_output_t *output; + + for_each_valid_output_on_pipe(&display, pipe, output) { + igt_plane_t *primary; + drmModeModeInfo *mode; + + if (output->pending_pipe != PIPE_NONE) + continue; + + igt_output_set_pipe(output, pipe); + primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY); + mode = igt_output_get_mode(output); + igt_create_pattern_fb(display.drm_fd, + mode->hdisplay, mode->vdisplay, + DRM_FORMAT_XRGB8888, + LOCAL_DRM_FORMAT_MOD_NONE, &fb[pipe]); + + /* Set a valid fb as some debugfs like to inspect it on a active pipe */ + igt_plane_set_fb(primary, &fb[pipe]); + break; + } + } + + igt_display_commit2(&display, display.is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY); + + read_and_discard_sysfs_entries(debugfs); + } + + igt_subtest("read_all_entries_display_off") { + igt_output_t *output; + igt_plane_t *plane; + + for_each_connected_output(&display, output) + igt_output_set_pipe(output, PIPE_NONE); + + for_each_pipe(&display, pipe) + for_each_plane_on_pipe(&display, pipe, plane) + igt_plane_set_fb(plane, NULL); + + igt_display_commit2(&display, display.is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY); + read_and_discard_sysfs_entries(debugfs); } @@ -112,6 +162,7 @@ igt_main } igt_fixture { + igt_display_fini(&display); close(debugfs); close(fd); } |