From 5d09394fb119ba68e735750eaf4d8590b8a6fed6 Mon Sep 17 00:00:00 2001 From: Jonathan Gray Date: Tue, 19 Apr 2016 12:31:20 +1000 Subject: [PATCH] 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 Reviewed-by: Emil Velikov Reviewed-by: Matt Turner --- src/mesa/drivers/dri/i965/intel_tiled_memcpy.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) 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; -- 2.7.4