xf86-video-intel: 3 commits - src/sna/kgem.c src/sna/sna_accel.c

Chris Wilson ickle at kemper.freedesktop.org
Mon Mar 5 13:37:54 PST 2012


 src/sna/kgem.c      |    8 ++++++++
 src/sna/sna_accel.c |    5 +++--
 2 files changed, 11 insertions(+), 2 deletions(-)

New commits:
commit f4846168a60feca7437f0039612ba9986c5f8d77
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Mon Mar 5 21:04:25 2012 +0000

    sna: Flush dirty CPU damage before notifying the compositor
    
    Fixes regression from a438e4ac (sna: Revamp vmap support)
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
index 595b834..709f29d 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -11465,7 +11465,8 @@ sna_accel_reply_callback(CallbackListPtr *list,
 	if (sna->flush || !info->startOfReply)
 		return;
 
-	sna->flush = sna->kgem.flush || sna->kgem.sync;
+	sna->flush = (sna->kgem.flush || sna->kgem.sync ||
+		      !list_is_empty(&sna->dirty_pixmaps));
 }
 
 static void
commit d7600e4e7726bb8bd6c7256ad2baf195d4427c60
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Sun Mar 4 19:12:29 2012 +0000

    sna: Add some assertions to partial buffer list tracking
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/kgem.c b/src/sna/kgem.c
index f913369..279face 100644
--- a/src/sna/kgem.c
+++ b/src/sna/kgem.c
@@ -1425,6 +1425,7 @@ static void kgem_finish_partials(struct kgem *kgem)
 	list_for_each_entry_safe(bo, next, &kgem->active_partials, base.list) {
 		assert(next->base.list.prev == &bo->base.list);
 		assert(bo->base.io);
+		assert(bo->base.refcnt >= 1);
 
 		if (!bo->base.exec)
 			continue;
@@ -3366,6 +3367,9 @@ struct kgem_bo *kgem_create_buffer(struct kgem *kgem,
 		flags &= ~KGEM_BUFFER_INPLACE;
 
 	list_for_each_entry(bo, &kgem->active_partials, base.list) {
+		assert(bo->base.io);
+		assert(bo->base.refcnt >= 1);
+
 		/* We can reuse any write buffer which we can fit */
 		if (flags == KGEM_BUFFER_LAST &&
 		    bo->write == KGEM_BUFFER_WRITE &&
@@ -3415,6 +3419,9 @@ struct kgem_bo *kgem_create_buffer(struct kgem *kgem,
 
 	if (flags & KGEM_BUFFER_WRITE) {
 		list_for_each_entry_reverse(bo, &kgem->inactive_partials, base.list) {
+			assert(bo->base.io);
+			assert(bo->base.refcnt == 1);
+
 			if (size > bytes(&bo->base))
 				continue;
 
@@ -3691,6 +3698,7 @@ struct kgem_bo *kgem_create_buffer(struct kgem *kgem,
 init:
 	bo->base.reusable = false;
 	assert(num_pages(&bo->base) == alloc);
+	assert(bo->base.io);
 	assert(!bo->need_io || !bo->base.needs_flush);
 	assert(!bo->need_io || bo->base.domain != DOMAIN_GPU);
 
commit 3b5d556a93ac0afebf6c1dd02e0c92f6eb73f633
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Sun Mar 4 15:48:33 2012 +0000

    sna: Fix assertion for checking inactive shadow buffers
    
    We may have an ordinary malloc with no CPU bo attached so check before
    dereferencing.
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
index fc44b47..595b834 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -11766,7 +11766,7 @@ static void sna_accel_inactive(struct sna *sna)
 			sna_damage_destroy(&priv->cpu_damage);
 			list_del(&priv->list);
 
-			assert(!priv->cpu_bo->sync);
+			assert(priv->cpu_bo == NULL || !priv->cpu_bo->sync);
 			sna_pixmap_free_cpu(sna, priv);
 			priv->undamaged = false;
 


More information about the xorg-commit mailing list