• Matt Roper's avatar
    drm/i915: Intel-specific primary plane handling (v8) · 465c120c
    Matt Roper authored
    Intel hardware allows the primary plane to be disabled independently of
    the CRTC.  Provide custom primary plane handling to allow this.
    
    v8:
     - Pin/unpin properly when clipping causes the primary plane to be
       disabled when it has previously been enabled.
     - s/drm_primary_helper_check_update/drm_plane_helper_check_update/
    v7:
     - Clip primary plane to invisible when crtc is disabled since
       intel_crtc->config.pipe_src_{w,h} may be garbage otherwise.
     - Unpin old fb before pinning new one in the "just pin and
       return" case that is used when the crtc is disabled.
     - Don't treat implicit disabling of the primary plane (caused by
       clipping) the same way as explicit disabling (caused by fb=0).
       For implicit disables, we should leave the fb set and pinned,
       whereas for explicit disables we need to unpin the fb before
       primary->fb is cleared.
    v6:
     - Pass rectangles to primary helper check function and get plane
       visibility back.
     - Wait for pending pageflips on primary plane update/disable.
     - Allow primary plane to be updated while the crtc is disabled (changes
       will take effect when the crtc is re-enabled if modeset passes -1
       for the fb id).
     - Drop WARN() if we try to disable the primary plane when it's
       already been disabled.  This will happen if the crtc gets disabled
       after the primary plane has already been disabled independently.
    v5:
     - Use new drm_primary_helper_check_update() helper function to check
       setplane parameter validity.
     - Swap primary plane's pipe for pre-gen4 FBC (caught by Ville Syrjälä)
     - Cleanup primary plane properly on crtc init failure
    v4:
     - Don't add a primary_plane field to intel_crtc; that was left over
       from a much earlier iteration of this patch series, but is no longer
       needed/used now that the DRM core primary plane support has been
       merged.
    v3:
     - Provide gen-specific primary plane format lists (suggested by Daniel
       Vetter).
     - If the primary plane is already enabled, go ahead and just call the
       primary plane helper to do the update (suggested by Daniel Vetter).
     - Don't try to disable the primary plane on destruction; the DRM layer
       should have already taken care of this for us.
    v2:
     - Unpin fb properly on primary plane disable
     - Provide an Intel-specific set of primary plane formats
     - Additional sanity checks on setplane (in line with the checks
       currently being done by the DRM core primary plane helper)
    Reviewed-by: default avatarChon Ming Lee <chon.ming.lee@intel.com>
    Signed-off-by: default avatarMatt Roper <matthew.d.roper@intel.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    465c120c
intel_display.c 351 KB