summaryrefslogtreecommitdiff
path: root/src/sna/blt.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2013-08-01 10:52:44 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2013-08-01 11:18:18 +0100
commit246911d742569eed6675698c1e51032ba50917d3 (patch)
tree2c9cc09b269fd810544678ca5d0bf27dc939b203 /src/sna/blt.c
parent8174c56c3ad6f1b0e6cd432c888f3eaca91159b4 (diff)
sna: Don't force inline string-ops for the general memcpy_blt routine
As we need optimal copy code for the general case, where unlike swizzling the run lengths are not known before hand, we need to call the arch specific routines from glibc. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'src/sna/blt.c')
-rw-r--r--src/sna/blt.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/sna/blt.c b/src/sna/blt.c
index 4a330938..4c27678d 100644
--- a/src/sna/blt.c
+++ b/src/sna/blt.c
@@ -138,7 +138,7 @@ xmm_save_128(__m128i *dst, __m128i data)
}
#endif
-fast_memcpy void
+fast void
memcpy_blt(const void *src, void *dst, int bpp,
int32_t src_stride, int32_t dst_stride,
int16_t src_x, int16_t src_y,
@@ -202,6 +202,14 @@ memcpy_blt(const void *src, void *dst, int bpp,
dst_bytes += dst_stride;
} while (--height);
break;
+ case 16:
+ do {
+ ((uint64_t *)dst_bytes)[0] = ((const uint64_t *)src_bytes)[0];
+ ((uint64_t *)dst_bytes)[1] = ((const uint64_t *)src_bytes)[1];
+ src_bytes += src_stride;
+ dst_bytes += dst_stride;
+ } while (--height);
+ break;
default:
do {