diff options
Diffstat (limited to 'src/gallium/drivers/vc4/vc4_tiling.h')
-rw-r--r-- | src/gallium/drivers/vc4/vc4_tiling.h | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/src/gallium/drivers/vc4/vc4_tiling.h b/src/gallium/drivers/vc4/vc4_tiling.h index ba1ad6fb3f7..3168ec20a60 100644 --- a/src/gallium/drivers/vc4/vc4_tiling.h +++ b/src/gallium/drivers/vc4/vc4_tiling.h @@ -27,6 +27,7 @@ #include <stdbool.h> #include <stdint.h> #include "util/macros.h" +#include "util/u_cpu_detect.h" /** Return the width in pixels of a 64-byte microtile. */ static inline uint32_t @@ -83,23 +84,18 @@ void vc4_store_tiled_image(void *dst, uint32_t dst_stride, uint8_t tiling_format, int cpp, const struct pipe_box *box); -/* If we're building for ARMv7 (Pi 2+), assume it has NEON. For Raspbian we - * should extend this to have some runtime detection of being built for ARMv6 - * on a Pi 2+. - */ -#if defined(__ARM_ARCH) && __ARM_ARCH == 7 -#define NEON_SUFFIX(x) x ## _neon -#else -#define NEON_SUFFIX(x) x ## _base -#endif - static inline void vc4_load_lt_image(void *dst, uint32_t dst_stride, void *src, uint32_t src_stride, int cpp, const struct pipe_box *box) { - NEON_SUFFIX(vc4_load_lt_image)(dst, dst_stride, src, src_stride, + if (util_cpu_caps.has_neon) { + vc4_load_lt_image_neon(dst, dst_stride, src, src_stride, cpp, box); + } else { + vc4_load_lt_image_base(dst, dst_stride, src, src_stride, + cpp, box); + } } static inline void @@ -107,10 +103,13 @@ vc4_store_lt_image(void *dst, uint32_t dst_stride, void *src, uint32_t src_stride, int cpp, const struct pipe_box *box) { - NEON_SUFFIX(vc4_store_lt_image)(dst, dst_stride, src, src_stride, + if (util_cpu_caps.has_neon) { + vc4_store_lt_image_neon(dst, dst_stride, src, src_stride, cpp, box); + } else { + vc4_store_lt_image_base(dst, dst_stride, src, src_stride, + cpp, box); + } } -#undef NEON_SUFFIX - #endif /* VC4_TILING_H */ |