drm/i915: Use mmio flips to change tiling mode on Baytrail
authorChris Wilson <chris@chris-wilson.co.uk>
Tue, 8 Jul 2014 09:40:30 +0000 (10:40 +0100)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Tue, 8 Jul 2014 11:16:14 +0000 (13:16 +0200)
For whatever reason, MI_DISPLAY_FLIP fails to change tiling mode on
Baytrail, so just use CPU driven mmio flips instead.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=76176
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/intel_display.c

index 8728c8885339b4f06c49d02bce7909de1c123b3e..8e738d4315a8c3537400b76d098b4fd4474f3545 100644 (file)
@@ -9435,6 +9435,9 @@ static bool use_mmio_flip(struct intel_engine_cs *ring,
         * So using MMIO flips there would disrupt this mechanism.
         */
 
+       if (ring == NULL)
+               return true;
+
        if (INTEL_INFO(ring->dev)->gen < 5)
                return false;
 
@@ -9658,6 +9661,9 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc,
 
        if (IS_VALLEYVIEW(dev)) {
                ring = &dev_priv->ring[BCS];
+               if (obj->tiling_mode != work->old_fb_obj->tiling_mode)
+                       /* vlv: DISPLAY_FLIP fails to change tiling */
+                       ring = NULL;
        } else if (IS_IVYBRIDGE(dev)) {
                ring = &dev_priv->ring[BCS];
        } else if (INTEL_INFO(dev)->gen >= 7) {