summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2012-04-13 16:37:43 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2012-04-13 16:37:43 +0100
commit89f2b09b1e5be9842747998ea4fe32a6f1ede4cc (patch)
tree0cf7a0a38352be5d8e98e237106611c82e00f780 /src
parenteaadbce122059066353743f1653aa16e9d9b747f (diff)
sna: Avoid using TILING_Y for large objects on gen2/3
References: https://bugs.freedesktop.org/show_bug.cgi?id=48636 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'src')
-rw-r--r--src/sna/sna_accel.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
index 8fcdd141..1c43fb76 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -458,6 +458,16 @@ static inline uint32_t default_tiling(PixmapPtr pixmap)
__FUNCTION__));
sna_damage_destroy(&priv->gpu_damage);
priv->undamaged = false;
+
+ /* Only on later generations was the render pipeline
+ * more flexible than the BLT. So on gen2/3, prefer to
+ * keep large objects accessible through the BLT.
+ */
+ if (sna->kgem.gen < 40 &&
+ (pixmap->drawable.width > sna->render.max_3d_size ||
+ pixmap->drawable.height > sna->render.max_3d_size))
+ return I915_TILING_X;
+
return I915_TILING_Y;
}