On Thu, May 15, 2014 at 06:17:25PM -0700, Matt Roper wrote: > Cursor planes are a bit trickier to support via the universal plane interface > than primary planes were. Legacy cursor ioctls take handles to driver buffers > directly whereas the universal plane API takes drm_framebuffer's that represent > a buffer; due to this mismatch it isn't possible to implement a set of cursor > helpers than provide "free" generic universal cursor support without driver > changes as we did with primary planes. Drivers will need to be updated to > receive cursor support via the universal plane API. > > If a driver tries to implement two interfaces for cursor support (legacy ioctl > and universal planes), the reference counting can get very tricky/messy since > we need to take into account userspace that may mix and match calls to both > interfaces. To address that, patch #1 in this set causes legacy cursor ioctls > to be implemented using a driver's universal plane support if the driver > registers a primary plane. Calls to the legacy set_cursor ioctl will wrap the ^cursor plane I guess? -Daniel > provided driver buffer in a drm_framebuffer and then pass that along to the > universal plane interface. From a driver's point of view, this causes all > cursor operations to arrive on the universal plane interface, regardless of > which userspace API was used, which simplifies things greatly for the driver. > > Patch #2 makes some minor changes to ensure drivers can successfully register a > cursor plane with the DRM core. > > Patch #3 does some minor i915 refactoring in preparation for the move to > universal planes. > > Patch #4 transitions the i915 driver to universal planes. The changes here are > intentionally minimal for ease of review. It's likely that we could perform > further cleanup in the future to eliminate some of the cursor state tracked in > intel_crtc (e.g., cursor_width/cursor_height) since that information can be > also be derived from crtc->cursor->fb. > > > Matt Roper (4): > drm: Support legacy cursor ioctls via universal planes when possible > drm: Allow drivers to register cursor planes with crtc > drm/i915: Add intel_crtc_cursor_set_obj() to set cursor buffer > drm/i915: Switch to unified plane cursor handling > > drivers/gpu/drm/drm_crtc.c | 113 ++++++++++++++++++++- > drivers/gpu/drm/i915/intel_display.c | 188 ++++++++++++++++++++++++++++------- > drivers/gpu/drm/i915/intel_drv.h | 1 - > include/drm/drm_crtc.h | 6 +- > 4 files changed, 267 insertions(+), 41 deletions(-) > > -- > 1.8.5.1 > > _______________________________________________ > dri-devel mailing list > dri-devel@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/dri-devel -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel