[Intel-gfx] [PATCH i-g-t 0/9] igt_kms refactoring and universal plane support
Matt Roper
matthew.d.roper at intel.com
Tue Jul 1 01:44:21 CEST 2014
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
More information about the Intel-gfx
mailing list