This patch set refactors the igt_kms library a bit to allow display state changes to be commited via different API's (with different "commit styles") and adds a new "universal" commit style that makes use of the universal plane API. Some of the patches here were previously posted here: http://lists.freedesktop.org/archives/intel-gfx/2014-May/046276.html Some of the key changes or additions from the previous patch series: * igt_pipe no longer tracks the need to issue various ioctls upon commit. Instead we simply use the *_changed flags to indicate what has changed and make our own decisions about what ioctls to call at commit time. This will be important because some programming decisions (e.g., whether to wait for a vblank after updating a sprite) will differ between various commit styles (i.e., legacy vs universal plane vs atomic). * The igt_display_use_universal_commits() function from the previous series is gone; it was too easy to make mistakes when writing tests that switch back and forth between API's and was somewhat difficult to follow the logic of those tests. Instead, we add a new commit function, igt_display_commit2() that takes an explicit "commit style" parameter indicating which type of API's should be used to perform the operation. Tests that are trying to exercise a specific API, or the interleaving of multiple API's should use this commit function. Other tests that simply want to get the hardware into a specific state, but don't care how to get there may continue to use igt_display_commit(), which will pick a default commit style ("legacy" style today, possibly configurable via an environment variable in the future?) * igt_kms's internal plane list maintains the primary, overlays, cursor order as it has in the past, even if the universal plane API's return the planes in a different order. * A few minor fixes to kms_cursor_crc The expectation is that although we only have 'legacy' and 'universal' commit styles today, we'll also be adding 'atomic' in the near future and most of the infrastructure changes here should work well for that as well. One remaining shortcoming of the igt_kms library is that crtc enable/disable is implicitly built into legacy commit style and doesn't have any direct API for tests to use yet. I.e., igt_plane_set_fb(primary, NULL); igt_display_commit2(display, COMMIT_LEGACY); will disable the CRTC (due to there being no distinction between primary planes and crtc's in the legacy KMS API), whereas igt_plane_set_fb(primary, NULL); igt_display_commit2(display, COMMIT_UNIVERSAL); would leave the CRTC enabled (assuming it was already active) and just disable the primary plane. A future patch set will need to address this by making CRTC enable/disable an explicit API distinct from plane fb updates. Matt Roper (9): lib/kms: Drop igt_pipe->need_set_{crtc,cursor} lib/kms: Track need for vblank wait locally lib/kms: Add igt_display_commit2() lib/kms: Add igt_display_try_commit2() lib/kms: Add universal plane support (v2) lib/kms: Drop primary plane windowing test from igt_plane_set_position() tests/kms_universal_plane: Universal plane testing (v6) tests/kms_cursor_crc: Combine data_t and test_data_t tests/kms_cursor_crc: Call drmModeMoveCursor() directly lib/igt_kms.c | 500 ++++++++++++++++++++++++++------------ lib/igt_kms.h | 13 +- tests/.gitignore | 1 + tests/Makefile.sources | 1 + tests/kms_cursor_crc.c | 235 +++++++++--------- tests/kms_universal_plane.c | 577 ++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 1051 insertions(+), 276 deletions(-) create mode 100644 tests/kms_universal_plane.c -- 1.8.5.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx