summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2012-01-25 01:16:34 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2012-01-25 01:17:34 +0000
commitb1fba5e8534da7fe253e21a3501854c04d82a108 (patch)
tree982e3885c62863a97f3302de2b1f852dc22cfb84
parent5ad95d66665802bce25e127ae0d06f3e0a9b0e62 (diff)
sna: Clear GPU damage first when moving a clear pixmap to the CPU
This allows us to discard any busy GPU or CPU bo when we know we are going to clear the shadow pixmap afterwards. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-rw-r--r--src/sna/sna_accel.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
index 1a134658..31a90798 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -922,6 +922,13 @@ skip_inplace_map:
priv->mapped = false;
}
+ if (priv->clear) {
+ if (priv->cpu_bo && kgem_bo_is_busy(priv->cpu_bo))
+ sna_pixmap_free_cpu(sna, priv);
+ sna_damage_destroy(&priv->gpu_damage);
+ priv->undamaged = true;
+ }
+
if (pixmap->devPrivate.ptr == NULL &&
!sna_pixmap_alloc_cpu(sna, pixmap, priv, priv->gpu_damage != NULL))
return false;
@@ -943,8 +950,6 @@ skip_inplace_map:
pixmap->drawable.height,
priv->clear_color);
- sna_damage_destroy(&priv->gpu_damage);
- priv->undamaged = true;
priv->clear = false;
}