xf86-video-intel: 2 commits - src/sna/kgem.c src/sna/sna_dri.c
Chris Wilson
ickle at kemper.freedesktop.org
Sun Mar 17 14:59:31 PDT 2013
src/sna/kgem.c | 3 ++-
src/sna/sna_dri.c | 7 ++++++-
2 files changed, 8 insertions(+), 2 deletions(-)
New commits:
commit 16dac417c8049d65b3641e0f662865772faad61f
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Sun Mar 17 21:56:56 2013 +0000
sna/dri: Fix stale Pixmap detection
NB the back buffer is not associated with the Drawable and so has no
pixmap field set. Hence comparing the front->pixmap against the
back->pixmap was always rejecting the blit. All we can check is that
front->pixmap corresponds with the current Drawable and so reject stale
configuration.
Reported-by: Jiri Slaby <jirislaby at gmail.com>
References: https://bugs.freedesktop.org/show_bug.cgi?id=47597
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/sna_dri.c b/src/sna/sna_dri.c
index 2d3a262..1a02449 100644
--- a/src/sna/sna_dri.c
+++ b/src/sna/sna_dri.c
@@ -884,8 +884,13 @@ can_blit(struct sna * sna,
if (draw->type == DRAWABLE_PIXMAP)
return true;
- if (get_private(front)->pixmap != get_private(back)->pixmap)
+ if (get_private(front)->pixmap != get_drawable_pixmap(draw)) {
+ DBG(("%s: reject as front pixmap=%ld, but expecting pixmap=%ld\n",
+ __FUNCTION__,
+ get_private(front)->pixmap ? get_private(front)->pixmap->drawable.serialNumber : 0,
+ get_drawable_pixmap(draw)->drawable.serialNumber));
return false;
+ }
clip = &((WindowPtr)draw)->clipList;
w = clip->extents.x2 - draw->x;
commit 85213d5d450eec5696496128c1acecb5ca13c53b
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Sun Mar 17 21:42:48 2013 +0000
sna: Don't remove the flush flag for userptr bo
This flag is far too overload with meaning, but for now this prevents us
attempting to call free() on a SHM segment.
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/kgem.c b/src/sna/kgem.c
index a01da88..e0d864d 100644
--- a/src/sna/kgem.c
+++ b/src/sna/kgem.c
@@ -1752,7 +1752,8 @@ static void __kgem_bo_destroy(struct kgem *kgem, struct kgem_bo *bo)
kgem_bo_move_to_snoop(kgem, bo);
return;
}
- bo->flush = false;
+ if (!IS_USER_MAP(bo->map))
+ bo->flush = false;
if (bo->scanout) {
kgem_bo_move_to_scanout(kgem, bo);
More information about the xorg-commit
mailing list