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