• Tvrtko Ursulin's avatar
    drm/i915/skl: Support secondary (rotated) frame buffer mapping · 50470bb0
    Tvrtko Ursulin authored
    90/270 rotated scanout needs a rotated GTT view of the framebuffer.
    
    This is put in a separate VMA with a dedicated ggtt view and wired such that
    it is created when a framebuffer is pinned to a 90/270 rotated plane.
    
    Rotation is only possible with Yb/Yf buffers and error is propagated to
    user space in case of a mismatch.
    
    Special rotated page view is constructed at the VMA creation time by
    borrowing the DMA addresses from obj->pages.
    
    v2:
        * Do not bother with pages for rotated sg list, just populate the DMA
          addresses. (Daniel Vetter)
        * Checkpatch cleanup.
    
    v3:
        * Rebased on top of new plane handling (create rotated mapping when
          setting the rotation property).
        * Unpin rotated VMA on unpinning from display plane.
        * Simplify rotation check using bitwise AND. (Chris Wilson)
    
    v4:
        * Fix unpinning of optional rotated mapping so it is really considered
          to be optional.
    
    v5:
       * Rebased for fb modifier changes.
       * Rebased for atomic commit.
       * Only pin needed view for display. (Ville Syrjälä, Daniel Vetter)
    
    v6:
       * Rebased after preparatory work has been extracted out. (Daniel Vetter)
    
    v7:
       * Slightly simplified tiling geometry calculation.
       * Moved rotated GGTT view implementation into i915_gem_gtt.c (Daniel Vetter)
    
    v8:
       * Do not use i915_gem_obj_size to get object size since that actually
         returns the size of an VMA which may not exist.
       * Rebased for ggtt view changes.
    
    v9:
       * Rebased after code review changes on the preceding patches.
       * Tidy function definitions. (Joonas Lahtinen)
    
    For: VIZ-4726
    Signed-off-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
    Reviewed-by: Michel Thierry <michel.thierry@intel.com> (v4)
    Reviewed-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    50470bb0
intel_drv.h 43.1 KB