• Ville Syrjälä's avatar
    drm/i915: Fix legacy cursor vs. watermarks for ILK-BDW · a5509abd
    Ville Syrjälä authored
    In order to make cursor updates actually safe wrt. watermark programming
    we have to clear the legacy_cursor_update flag in the atomic state. That
    will cause the regular atomic update path to do the necessary vblank
    wait after the plane update if needed, otherwise the vblank wait would
    be skipped and we'd feed the optimal watermarks to the hardware before
    the plane update has actually happened.
    
    To make the slow vs. fast path determination in
    intel_legacy_cursor_update() a little simpler we can ignore the actual
    visibility of the plane (which can only get computed once we've already
    chosen out path) and instead we simply check whether the fb is being
    set or cleared by the user. This means a fully clipped but logically
    visible cursor will be considered visible as far as watermark
    programming is concerned. We can do that for the cursor since it's a
    fixed size plane and the clipped size doesn't play a role in the
    watermark computation.
    
    This should fix underruns that can occur when the cursor gets
    enable/disabled or the size gets changed. Hopefully it's good enough
    that only pure cursor movement and flips go through unthrottled.
    
    Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: Uwe Kleine-König <uwe@kleine-koenig.org>
    Reported-by: default avatarUwe Kleine-König <uwe@kleine-koenig.org>
    Fixes: f79f2692 ("drm/i915: Add a cursor hack to allow converting legacy page flip to atomic, v3.")
    Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/20170217150159.11683-1-ville.syrjala@linux.intel.comReviewed-by: default avatarMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Tested-by: default avatarRafael Ristovski <rafael.ristovski@gmail.com>
    a5509abd
intel_display.c 445 KB