summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/vc4/vc4_tiling.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/drivers/vc4/vc4_tiling.h')
-rw-r--r--src/gallium/drivers/vc4/vc4_tiling.h27
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 */