• Matt Roper's avatar
    drm/i915: Move to atomic plane helpers (v9) · ea2c67bb
    Matt Roper authored
    Switch plane handling to use the atomic plane helpers.  This means that
    rather than provide our own implementations of .update_plane() and
    .disable_plane(), we expose the lower-level check/prepare/commit/cleanup
    entrypoints and let the DRM core implement update/disable for us using
    those entrypoints.
    
    The other main change that falls out of this patch is that our
    drm_plane's will now always have a valid plane->state that contains the
    relevant plane state (initial state is allocated at plane creation).
    The base drm_plane_state pointed to holds the requested source/dest
    coordinates, and the subclassed intel_plane_state holds the adjusted
    values that our driver actually uses.
    
    v2:
     - Renamed file from intel_atomic.c to intel_atomic_plane.c (Daniel)
     - Fix a copy/paste comment mistake (Bob)
    
    v3:
     - Use prepare/cleanup functions that we've already factored out
     - Use newly refactored pre_commit/commit/post_commit to avoid sleeping
       during vblank evasion
    
    v4:
     - Rebase to latest di-nightly requires adding an 'old_state' parameter
       to atomic_update;
    
    v5:
     - Must have botched a rebase somewhere and lost some work.  Restore
       state 'dirty' flag to let begin/end code know which planes to
       run the pre_commit/post_commit hooks for.  This would have actually
       shown up as broken in the next commit rather than this one.
    
    v6:
     - Squash kerneldoc patch into this one.
     - Previous patches have now already taken care of most of the
       infrastructure that used to be in this patch.  All we're adding here
       now is some thin wrappers.
    
    v7:
     - Check return of intel_plane_duplicate_state() for allocation
       failures.
    
    v8:
     - Drop unused drm_plane_state -> intel_plane_state cast.  (Ander)
     - Squash in actual transition to plane helpers.  Significant
       refactoring earlier in the patchset has made the combined
       prep+transition much easier to swallow than it was in earlier
       iterations. (Ander)
    
    v9:
     - s/track_fbs/disabled_planes/ in the atomic crtc flags.  The only fb's
       we need to update frontbuffer tracking for are those on a plane about
       to be disabled (since the atomic helpers never call prepare_fb() when
       disabling a plane), so the new name more accurately describes what
       we're actually tracking.
    
    Testcase: igt/kms_plane
    Testcase: igt/kms_universal_plane
    Testcase: igt/kms_cursor_crc
    Signed-off-by: default avatarMatt Roper <matthew.d.roper@intel.com>
    Reviewed-by: default avatarAnder Conselvan de Oliveira <conselvan2@gmail.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    ea2c67bb
intel_display.c 383 KB