xf86-video-intel: 2 commits - src/sna/kgem.c src/sna/sna_render.c

Chris Wilson ickle at kemper.freedesktop.org
Tue Oct 13 04:23:58 PDT 2015


 src/sna/kgem.c       |   17 ++++++++++++-----
 src/sna/sna_render.c |    2 ++
 2 files changed, 14 insertions(+), 5 deletions(-)

New commits:
commit 6861391ff34eff423974a73c46cf0b186a6cb335
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Tue Oct 13 12:22:46 2015 +0100

    sna: Make sure that cached upload proxies are marked as all-damaged
    
    It should only be the case that we create the upload proxy in this case,
    but it ensures that the code remains self-consistent if we force the
    all-damage reduction.
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/sna_render.c b/src/sna/sna_render.c
index 89267a3..d8b7756 100644
--- a/src/sna/sna_render.c
+++ b/src/sna/sna_render.c
@@ -553,6 +553,7 @@ static struct kgem_bo *upload(struct sna *sna,
 			assert(priv->gpu_damage == NULL);
 			assert(priv->gpu_bo == NULL);
 			assert(bo->proxy != NULL);
+			sna_damage_all(&priv->cpu_damage, pixmap);
 			kgem_proxy_bo_attach(bo, &priv->gpu_bo);
 		}
 	}
@@ -1261,6 +1262,7 @@ sna_render_picture_extract(struct sna *sna,
 			assert(priv->gpu_damage == NULL);
 			assert(priv->gpu_bo == NULL);
 			assert(bo->proxy != NULL);
+			sna_damage_all(&priv->cpu_damage, pixmap);
 			kgem_proxy_bo_attach(bo, &priv->gpu_bo);
 		}
 	}
commit 6224814b85e8aed75854192ec27aa06163e76d94
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Tue Oct 13 12:20:33 2015 +0100

    sna: Handle proxy objects in undo assertions
    
    Note that we may try to clear a batch containing a proxy object, in
    which case the proxy has a dummy exec entry - so we need to be careful
    in making our assertions.
    
    Reported-by: Laszlo Valko <valko at linux.karinthy.hu>
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=92447
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/kgem.c b/src/sna/kgem.c
index b975bfc..bb1f70b 100644
--- a/src/sna/kgem.c
+++ b/src/sna/kgem.c
@@ -2807,7 +2807,7 @@ void kgem_bo_undo(struct kgem *kgem, struct kgem_bo *bo)
 	DBG(("%s: only handle in batch, discarding last operations for handle=%d\n",
 	     __FUNCTION__, bo->handle));
 
-	assert(bo->exec == &kgem->exec[0]);
+	assert(bo->exec == &_kgem_dummy_exec || bo->exec == &kgem->exec[0]);
 	assert(kgem->exec[0].handle == bo->handle);
 	assert(RQ(bo->rq) == kgem->next_request);
 
@@ -2835,16 +2835,23 @@ void kgem_bo_pair_undo(struct kgem *kgem, struct kgem_bo *a, struct kgem_bo *b)
 
 	if (a == NULL || b == NULL)
 		return;
+	assert(a != b);
 	if (a->exec == NULL || b->exec == NULL)
 		return;
 
-	DBG(("%s: only handles in batch, discarding last operations for handle=%d and handle=%d\n",
-	     __FUNCTION__, a->handle, b->handle));
+	DBG(("%s: only handles in batch, discarding last operations for handle=%d (index=%d) and handle=%d (index=%d)\n",
+	     __FUNCTION__,
+	     a->handle, a->proxy ? -1 : a->exec - kgem->exec,
+	     b->handle, b->proxy ? -1 : b->exec - kgem->exec));
 
-	assert(a->exec == &kgem->exec[0] || a->exec == &kgem->exec[1]);
+	assert(a->exec == &_kgem_dummy_exec ||
+	       a->exec == &kgem->exec[0] ||
+	       a->exec == &kgem->exec[1]);
 	assert(a->handle == kgem->exec[0].handle || a->handle == kgem->exec[1].handle);
 	assert(RQ(a->rq) == kgem->next_request);
-	assert(b->exec == &kgem->exec[0] || b->exec == &kgem->exec[1]);
+	assert(b->exec == &_kgem_dummy_exec ||
+	       b->exec == &kgem->exec[0] ||
+	       b->exec == &kgem->exec[1]);
 	assert(b->handle == kgem->exec[0].handle || b->handle == kgem->exec[1].handle);
 	assert(RQ(b->rq) == kgem->next_request);
 


More information about the xorg-commit mailing list