xf86-video-intel: 3 commits - src/sna/sna_accel.c src/sna/sna_display.c src/sna/sna.h
Chris Wilson
ickle at kemper.freedesktop.org
Thu Jan 16 04:19:34 PST 2014
src/sna/sna.h | 10 +++++++---
src/sna/sna_accel.c | 6 +++++-
src/sna/sna_display.c | 12 +++++++++---
3 files changed, 21 insertions(+), 7 deletions(-)
New commits:
commit 6db99169a99393a8a669f89682bb8df13a7c5677
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Thu Jan 16 11:20:30 2014 +0000
sna: Regularly check that the devPrivate.ptr is valid
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/sna.h b/src/sna/sna.h
index 0acc9a2..3ac0fad 100644
--- a/src/sna/sna.h
+++ b/src/sna/sna.h
@@ -503,13 +503,17 @@ PixmapPtr sna_pixmap_create_unattached(ScreenPtr screen,
int width, int height, int depth);
void sna_pixmap_destroy(PixmapPtr pixmap);
-#define assert_pixmap_map(pixmap, priv) \
- assert(priv->mapped == false || pixmap->devPrivate.ptr == (priv->mapped == MAPPED_CPU ? MAP(priv->gpu_bo->map__cpu) : MAP(priv->gpu_bo->map__gtt)));
+#define assert_pixmap_map(pixmap, priv) do { \
+ assert(priv->mapped != MAPPED_NONE || pixmap->devPrivate.ptr == PTR(priv->ptr)); \
+ assert(priv->mapped == MAPPED_NONE || pixmap->devPrivate.ptr == (priv->mapped == MAPPED_CPU ? MAP(priv->gpu_bo->map__cpu) : MAP(priv->gpu_bo->map__gtt))); \
+} while (0)
static inline void sna_pixmap_unmap(PixmapPtr pixmap, struct sna_pixmap *priv)
{
- if (priv->mapped == MAPPED_NONE)
+ if (priv->mapped == MAPPED_NONE) {
+ assert(pixmap->devPrivate.ptr == PTR(priv->ptr));
return;
+ }
DBG(("%s: pixmap=%ld dropping %s mapping\n",
__FUNCTION__, pixmap->drawable.serialNumber,
commit 242d7503ddd98c59feda4bcc25e70cac06d3325e
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Thu Jan 16 11:08:05 2014 +0000
sna: Avoid allocating temporary storage for TearFree rotations
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c
index 5bce764..10ee9e4 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -4307,12 +4307,18 @@ sna_crtc_redisplay__composite(xf86CrtcPtr crtc, RegionPtr region, struct kgem_bo
DBG(("%s: compositing transformed damage boxes\n", __FUNCTION__));
pixmap = sna_pixmap_create_unattached(screen,
- crtc->mode.HDisplay,
- crtc->mode.VDisplay,
- sna->front->drawable.depth);
+ 0, 0, sna->front->drawable.depth);
if (pixmap == NullPixmap)
return;
+ if (!screen->ModifyPixmapHeader(pixmap,
+ crtc->mode.HDisplay,
+ crtc->mode.VDisplay,
+ sna->front->drawable.depth,
+ sna->front->drawable.bitsPerPixel,
+ bo->pitch, NULL))
+ goto free_pixmap;
+
if (!sna_pixmap_attach_to_bo(pixmap, bo))
goto free_pixmap;
commit 587452a6ad7ac57e37820c72220c4944451315a8
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Thu Jan 16 10:27:50 2014 +0000
sna: Make the temporary upload pixmap as having a statically allocated pointer
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 f6aee3c..fee5857 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -3681,11 +3681,13 @@ sna_pixmap_create_upload(ScreenPtr screen,
if (sna->freed_pixmap) {
pixmap = sna->freed_pixmap;
sna->freed_pixmap = pixmap->devPrivate.ptr;
+ assert(pixmap->refcnt == 0);
pixmap->drawable.serialNumber = NEXT_SERIAL_NUMBER;
pixmap->refcnt = 1;
} else {
- pixmap = create_pixmap(sna, screen, 0, 0, depth, 0);
+ pixmap = create_pixmap(sna, screen, 0, 0, depth,
+ CREATE_PIXMAP_USAGE_SCRATCH);
if (!pixmap)
return NullPixmap;
@@ -3725,6 +3727,8 @@ sna_pixmap_create_upload(ScreenPtr screen,
pixmap->devKind = priv->gpu_bo->pitch;
pixmap->devPrivate.ptr = ptr;
+ priv->ptr = MAKE_STATIC_PTR(ptr);
+ priv->stride = priv->gpu_bo->pitch;
pixmap->usage_hint = 0;
if (!kgem_buffer_is_inplace(priv->gpu_bo))
More information about the xorg-commit
mailing list