drm/i915: revert pageflip/mappable related abi breakage
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Thu, 4 Nov 2010 16:04:29 +0000 (17:04 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Thu, 4 Nov 2010 18:55:59 +0000 (18:55 +0000)
In a00b10c360b35d6431a "Only enforce fence limits inside the GTT"
Chris Wilson implemented an optimization to only pin framebuffers
as mappable for crtc_set_base (but not for pageflips). This breaks
the abi, eg: A double buffering mesa client might leave the last
framebuffer in unmappable space on close. A subsequent glReadPix
by a frontbuffer rendering client then goes boom. My pretty anal
mappable/unmappable consistency checking detected this, see

https://bugs.freedesktop.org/show_bug.cgi?id=31286

Chris Wilson tried to fix this in 085ce2643713830cf772c by pinning
tiled framebuffers into mappable space. This
a) renders the original optimization of not forcing framebuffers
   for pageflipping clients into mappable pointless because all our
   scanout buffers are tiled by default.
b) doesn't solve the problem for untiled framebuffers.

So kill this. Emperically it's no gain anyway because framebuffers are
being reused by the ddx and hence there's no chance for them to get
constanly bounced between mappable and unmappable.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
drivers/gpu/drm/i915/intel_display.c

index f1e4eca..a2cd579 100644 (file)
@@ -1461,8 +1461,7 @@ intel_pin_and_fence_fb_obj(struct drm_device *dev,
                BUG();
        }
 
-       ret = i915_gem_object_pin(obj, alignment,
-                                 !pipelined || obj_priv->tiling_mode,
+       ret = i915_gem_object_pin(obj, alignment, true,
                                  obj_priv->tiling_mode);
        if (ret)
                return ret;