diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2012-01-25 01:16:34 +0000 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2012-01-25 01:17:34 +0000 |
commit | b1fba5e8534da7fe253e21a3501854c04d82a108 (patch) | |
tree | 982e3885c62863a97f3302de2b1f852dc22cfb84 | |
parent | 5ad95d66665802bce25e127ae0d06f3e0a9b0e62 (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.c | 9 |
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; } |