summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2013-11-28 16:25:52 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2013-11-28 22:00:11 +0000
commitb85051ae480499dd8a6a6d07d5ce0feca7b844b4 (patch)
tree447f62fb25cf2a8a1ff49bd669f5a0f98ca6b309
parentfaedf266d7b476954574db2cb1274e677cf42bf4 (diff)
sna: Fallback from partial to full move-to-cpu
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-rw-r--r--src/sna/sna_accel.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
index 328e144b..e1487ee0 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -1836,7 +1836,7 @@ static inline bool operate_inplace(struct sna_pixmap *priv, unsigned flags)
return false;
}
- assert((flags & MOVE_ASYNC_HINT) == 0);
+ assert((flags & MOVE_ASYNC_HINT) == 0 || (priv->create & KGEM_CAN_CREATE_LARGE));
if (priv->move_to_gpu && flags & MOVE_WRITE) {
DBG(("%s: no, has pending move-to-gpu\n", __FUNCTION__));
@@ -2561,7 +2561,8 @@ contains_damage:
flags & MOVE_READ ? priv->gpu_damage && !priv->clear : 0)) {
if (dx | dy)
RegionTranslate(region, -dx, -dy);
- return false;
+ DBG(("%s: CPU bo allocation failed, trying full move-to-cpu\n", __FUNCTION__));
+ return _sna_pixmap_move_to_cpu(pixmap, flags | MOVE_READ);
}
assert(pixmap->devPrivate.ptr);