summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2013-10-17 11:32:39 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2013-10-17 11:32:39 +0100
commitefe5c737ed20f2a0b14b479b14eccaf1963d5e01 (patch)
tree239f1afed04b73adb89b9b12816f86bfaeb7bb2e
parentec0866e86d365ae3fd9790b1b263d49fc4981220 (diff)
sna/dri: Refactor to use the common GPU damage routine
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-rw-r--r--src/sna/sna_dri.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/src/sna/sna_dri.c b/src/sna/sna_dri.c
index e7b98dae..0b8923b8 100644
--- a/src/sna/sna_dri.c
+++ b/src/sna/sna_dri.c
@@ -460,7 +460,7 @@ static void sna_dri_reference_buffer(DRI2BufferPtr buffer)
get_private(buffer)->refcnt++;
}
-static void damage(PixmapPtr pixmap, struct sna_pixmap *priv, RegionPtr region)
+static inline void damage(PixmapPtr pixmap, struct sna_pixmap *priv, RegionPtr region)
{
assert(priv->gpu_bo);
if (DAMAGE_IS_ALL(priv->gpu_damage))
@@ -472,6 +472,7 @@ damage_all:
pixmap->drawable.width,
pixmap->drawable.height);
sna_damage_destroy(&priv->cpu_damage);
+ list_del(&priv->flush_list);
} else {
sna_damage_subtract(&priv->cpu_damage, region);
if (priv->cpu_damage == NULL)
@@ -512,13 +513,7 @@ static void set_bo(PixmapPtr pixmap, struct kgem_bo *bo)
region.data = NULL;
DamageRegionAppend(&pixmap->drawable, &region);
- sna_damage_all(&priv->gpu_damage,
- pixmap->drawable.width,
- pixmap->drawable.height);
- sna_damage_destroy(&priv->cpu_damage);
- list_del(&priv->flush_list);
- priv->cpu = false;
- priv->clear = false;
+ damage(pixmap, priv, NULL);
assert(bo->refcnt);
if (priv->gpu_bo != bo) {