summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2011-12-12 20:40:29 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2011-12-13 01:38:09 +0000
commitf6a30df8dc75852d1f6daeabe4511b275594e52e (patch)
tree8ce0937cf91da1be33917e7918ec7905c36e1de7
parent3c163d105e964a1084d665500ef917254d8f2179 (diff)
sna: Enable memcpy uploads to SHM pixmaps
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-rw-r--r--src/sna/sna_accel.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
index dc0fad50..c7b4ebf1 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -1441,12 +1441,16 @@ sna_put_zpixmap_blt(DrawablePtr drawable, GCPtr gc, RegionPtr region,
int16_t dx, dy;
int n;
- if (!priv)
- return false;
-
if (gc->alu != GXcopy)
return false;
+ if (!priv) {
+ if (drawable->depth < 8)
+ return false;
+
+ goto blt;
+ }
+
/* XXX performing the upload inplace is currently about 20x slower
* for putimage10 on gen6 -- mostly due to slow page faulting in kernel.
* So we try again with vma caching and only for pixmaps who will be
@@ -1496,6 +1500,7 @@ sna_put_zpixmap_blt(DrawablePtr drawable, GCPtr gc, RegionPtr region,
if (priv->flush)
list_move(&priv->list, &sna->dirty_pixmaps);
+blt:
get_drawable_deltas(drawable, pixmap, &dx, &dy);
x += dx + drawable->x;
y += dy + drawable->y;