[Intel-gfx] [PATCH i-g-t 00/10] Add support for atomic modeset to IGT.
Maarten Lankhorst
maarten.lankhorst at linux.intel.com
Thu Jun 30 12:57:09 UTC 2016
Big patch series to perform a single thing.
With legacy modesets if the primary plane had a null fb it was disabled,
and code would often do the following:
for_each_pipe(...)
for_each_output(...) {
igt_output_set_pipe(output, pipe);
igt_display_commit();
if (!output->valid)
bail;
cleanup;
igt_output_set_pipe(output, PIPE_ANY);
igt_display_commit();
}
A straightforward replacement of igt_display_commit with
igt_display_commit2(COMMIT_ATOMIC) will not work with this
series, since in this case it can perform a modeset without
primary framebuffer, and invalid configurations get rejected.
Best solution is to do the following to get atomic behavior,
with fallback to legacy:
bool valid = false;
for_each_pipe_with_valid_output(display, pipe, output) {
valid = true;
igt_output_set_pipe(output, pipe);
/* perform more setup here for planes, etc */
igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
/* tests + cleanup */
igt_output_set_pipe(output, PIPE_NONE);
}
igt_require_f(valid, "no valid crtc/connector combinations found\n");
If the test requires a fixed pipe, use for_each_valid_output_on_pipe instead.
Maarten Lankhorst (10):
igt_kms: Remove kmstest_connector_config.crtc_idx
igt_kms: Find optimal encoder only after selecting pipe
kms_psr_sink_crc: Use for_each_pipe_with_valid_output to find a valid
config.
igt_kms: Make PIPE_ANY a alias for PIPE_NONE
igt_kms: Change PIPE_ANY behavior to mean unassigned
igt_kms: Handle atomic pipe properties better.
igt_kms: Remove pan members from igt_plane
igt_kms: Clear all _changed members centrally
igt_kms: Add modeset support to atomic commits.
tests: Add kms_rmfb test.
lib/igt_kms.c | 626 ++++++++++++++++++++++++++--------------------
lib/igt_kms.h | 48 ++--
tests/Makefile.sources | 1 +
tests/kms_panel_fitting.c | 2 +-
tests/kms_plane.c | 8 +-
tests/kms_plane_scaling.c | 2 +-
tests/kms_psr_sink_crc.c | 5 +-
tests/kms_rmfb.c | 171 +++++++++++++
tests/testdisplay.c | 4 +-
9 files changed, 567 insertions(+), 300 deletions(-)
create mode 100644 tests/kms_rmfb.c
--
2.5.5
More information about the Intel-gfx
mailing list