summaryrefslogtreecommitdiffstats
path: root/src/mesa/drivers/dri/i965/intel_tiled_memcpy.c
diff options
context:
space:
mode:
authorJonathan Gray <jsg@jsg.id.au>2016-04-19 12:31:20 +1000
committerEmil Velikov <emil.l.velikov@gmail.com>2016-04-21 14:41:41 +0100
commit5d09394fb119ba68e735750eaf4d8590b8a6fed6 (patch)
tree45402a02ae058ce176226694fba81e7cbebe5b91 /src/mesa/drivers/dri/i965/intel_tiled_memcpy.c
parent9bbf3737f9c96377bee65b947da3e63adaa58d58 (diff)
downloadexternal_mesa3d-5d09394fb119ba68e735750eaf4d8590b8a6fed6.zip
external_mesa3d-5d09394fb119ba68e735750eaf4d8590b8a6fed6.tar.gz
external_mesa3d-5d09394fb119ba68e735750eaf4d8590b8a6fed6.tar.bz2
i965/tiled_memcpy: don't unconditionally use __builtin_bswap32
Use the defines Mesa configure sets to indicate presence of the bswap32 builtins. This lets i965 work on OpenBSD again after the changes that were made in 0a5d8d9af42fd77fce1492d55f958da97816961a. Signed-off-by: Jonathan Gray <jsg@jsg.id.au> Reviewed-by: Emil Velikov <emil.velikov@collabora.com> Reviewed-by: Matt Turner <mattst88@gmail.com>
Diffstat (limited to 'src/mesa/drivers/dri/i965/intel_tiled_memcpy.c')
-rw-r--r--src/mesa/drivers/dri/i965/intel_tiled_memcpy.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/mesa/drivers/dri/i965/intel_tiled_memcpy.c b/src/mesa/drivers/dri/i965/intel_tiled_memcpy.c
index a549854..c888e46 100644
--- a/src/mesa/drivers/dri/i965/intel_tiled_memcpy.c
+++ b/src/mesa/drivers/dri/i965/intel_tiled_memcpy.c
@@ -64,6 +64,19 @@ ror(uint32_t n, uint32_t d)
return (n >> d) | (n << (32 - d));
}
+static inline uint32_t
+bswap32(uint32_t n)
+{
+#if defined(HAVE___BUILTIN_BSWAP32)
+ return __builtin_bswap32(n);
+#else
+ return (n >> 24) |
+ ((n >> 8) & 0x0000ff00) |
+ ((n << 8) & 0x00ff0000) |
+ (n << 24);
+#endif
+}
+
/**
* Copy RGBA to BGRA - swap R and B.
*/
@@ -76,7 +89,7 @@ rgba8_copy(void *dst, const void *src, size_t bytes)
assert(bytes % 4 == 0);
while (bytes >= 4) {
- *d = ror(__builtin_bswap32(*s), 8);
+ *d = ror(bswap32(*s), 8);
d += 1;
s += 1;
bytes -= 4;