First two changes are prep, third change is for functionality. Change 7b634067 added HW cursor support for PRIME by removing the pixmap_dirty_list check from xf86CursorSetCursor() and making the requisite cursor functions set/check the cursor both on master and slave.
Naturally, the slave driving an actual hardware cursor is preferable to the master compositing a cursor into the shared pixmap, but there are certain situations where the slave cannot drive a hardware cursor (certain DRM drivers, or when used with a transform). In these cases the master may still be capable of compositing a cursor, and that would be preferable to using the server's software cursor (due to the fact that it's unsynchronzied by OpenGL rendering to the root window, it can cause corruption with certain compositors). The PRIME HW cursor change works by checking both master and slave HW cursor capabilities, and setting the cursor on both. For masters such as modesetting, the master cursor capabilities check will pass but the cursor set will be a NOOP, effectively driving a hardware cursor only on the slave while still passing the check. However, if two different drivers with different sets of capabilities are used, HW cursor ends up only being used if the intersection of capabilities are supported. For example, if the master can drive a cursor with a transform, and the slave can't, checking capabilities on both means we unnecessarily fall back to SW cursor. To alleviate this issue while still prioritizing HW cursor on the slave, these changes restructure the HW cursor code such that the slave aspects of these functions are tried first, falling back to the master if they fail. SlaveHWCursor, a flag for querying if the hardware cursor is being driven by slaves, is added to xf86CursorScreenRec, resulting in an ABI break. Alex Goins (3): ramdac: Fix formatting in xf86CheckHWCursor() ramdac: Add xf86CursorPriv.h to ABI ramdac: Handle master and slave cursors independently hw/xfree86/ramdac/Makefile.am | 4 +- hw/xfree86/ramdac/xf86CursorPriv.h | 3 + hw/xfree86/ramdac/xf86HWCurs.c | 122 +++++++++++++++++++++++++++---------- hw/xfree86/sdksyms.sh | 1 + 4 files changed, 95 insertions(+), 35 deletions(-) -- 2.7.4 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel
