[Intel-gfx] [PATCH 00/13] i915 nuclear pageflip

Matt Roper matthew.d.roper at intel.com
Mon Jan 19 19:57:33 PST 2015


This patchset adds experimental "nuclear pageflip" support to the i915 driver.
Nuclear pageflip is the subset of atomic modeset functionality that is most
important to display compositors --- i.e., plane updates for a single CRTC.
Nuclear pageflip allows a compositor to ensure that the frame-specific
updates of all planes, and all properties associated with those planes, land
within the same vblank, thus allowing each frame to be displayed perfectly
without the artifacts/synchronization issues often caused by sprite/overlay
use.

To enable this support, an "i915.nuclear=1" option must be added to the kernel
command line (in addition to the "drm.atomic=1" option already required by the
DRM core).  This option will internally flip on the DRIVER_ATOMIC flag for
i915, enabling use of the atomic ioctl and causing all of the atomic object
properties to be exposed.

Note that this patchset does not enable "full" atomic modeset (i.e., the
ability to perform changes on multiple CRTC's in a single operation, or the
ability to update non-plane properties), so the i915.nuclear command line guard
will not be removed until the rest of the atomic modeset functionality arrives.
If you try to pass propertysets to the kernel containing updates outside the
scope of "nuclear pageflip" functionality, things may blow up.  There is
ongoing work by several people to complete the remaining changes necessary for
full atomic modeset support.  Asynchronous commit for nuclear updates is also
still on the todo list and not supported by this patchset.

This patchset depends on Ander's patches from the mailing list (not yet merged):
        http://lists.freedesktop.org/archives/intel-gfx/2015-January/058457.html
(the first patch in this series is actually a change intended to be squashed
into one of Ander's patches).

Patches #2-7 were previously sent to intel-gfx here:
        http://lists.freedesktop.org/archives/intel-gfx/2015-January/058488.html

Rob Clark has an updated libdrm repo capable of working with this functionality
here:
        https://github.com/robclark/libdrm.git atomic

i-g-t updates to support nuclear pageflip in the igt_kms library, and a very
simple testcase for nuclear pageflip will be posted shortly.

Matt Roper (13):
  squash! drm/i915: Improve how the memory for crtc state is allocated
  drm/i915: Move rotation from intel_plane to intel_plane_state
  drm/i915: Consolidate plane handler vtables
  drm/plane-helper: Add transitional helper for .set_plane().
  drm/plane-helper: Fix transitional helper kerneldocs
  drm/i915: Add .atomic_{get,set}_property() entrypoints to planes
  drm/i915: Replace intel_set_property() with transitional helper
  drm/i915: Add main atomic entrypoints
  drm/i915: Setup dummy atomic state for connectors
  drm/i915: Set connector state destruction handler
  drm/i915: Add atomic_get_property entrypoint for connectors
  drm/i915: Add crtc state duplication/destruction functions
  drm/i915: Add i915.nuclear kernel command line param to force atomic

 drivers/gpu/drm/drm_plane_helper.c        | 109 +++++++++++++-
 drivers/gpu/drm/i915/Makefile             |   1 +
 drivers/gpu/drm/i915/i915_drv.c           |  12 ++
 drivers/gpu/drm/i915/i915_drv.h           |   1 +
 drivers/gpu/drm/i915/i915_params.c        |   5 +
 drivers/gpu/drm/i915/intel_atomic.c       | 234 ++++++++++++++++++++++++++++++
 drivers/gpu/drm/i915/intel_atomic_plane.c |  84 ++++++++++-
 drivers/gpu/drm/i915/intel_crt.c          |   3 +
 drivers/gpu/drm/i915/intel_display.c      |  97 +++++++++----
 drivers/gpu/drm/i915/intel_dp.c           |   3 +
 drivers/gpu/drm/i915/intel_dp_mst.c       |   3 +
 drivers/gpu/drm/i915/intel_drv.h          |  36 ++++-
 drivers/gpu/drm/i915/intel_dsi.c          |   2 +
 drivers/gpu/drm/i915/intel_dvo.c          |   2 +
 drivers/gpu/drm/i915/intel_fbc.c          |   4 +-
 drivers/gpu/drm/i915/intel_hdmi.c         |   3 +
 drivers/gpu/drm/i915/intel_lvds.c         |   3 +
 drivers/gpu/drm/i915/intel_sdvo.c         |   3 +
 drivers/gpu/drm/i915/intel_sprite.c       |  65 +++------
 drivers/gpu/drm/i915/intel_tv.c           |   3 +
 include/drm/drm_plane_helper.h            |   3 +
 21 files changed, 593 insertions(+), 83 deletions(-)
 create mode 100644 drivers/gpu/drm/i915/intel_atomic.c

-- 
1.8.5.1



More information about the Intel-gfx mailing list