diff --git a/android/native/jni/Android.mk b/android/native/jni/Android.mk index ca27487b94..a84b349509 100644 --- a/android/native/jni/Android.mk +++ b/android/native/jni/Android.mk @@ -1,6 +1,6 @@ RARCH_VERSION = "0.9.8-beta3" LOCAL_PATH := $(call my-dir) -PERF_TEST := 0 +PERF_TEST := 1 HAVE_OPENSL := 1 include $(CLEAR_VARS) @@ -15,8 +15,9 @@ LOCAL_CFLAGS += -DANDROID_X86 -DHAVE_SSSE3 endif ifeq ($(TARGET_ARCH_ABI),armeabi-v7a) -#LOCAL_CFLAGS += -mfpu=neon -LOCAL_CFLAGS += -DANDROID_ARM_V7 +LOCAL_CFLAGS += -mfpu=neon +LOCAL_CFLAGS += -DANDROID_ARM_V7 -DHAVE_NEON +LOCAL_SRC_FILES += ../../../audio/sinc_neon.S.neon endif ifeq ($(TARGET_ARCH),mips) @@ -27,7 +28,7 @@ LOCAL_MODULE := retroarch-activity RARCH_PATH := ../../.. LIBXML_PATH := ../../../deps/libxml2 -LOCAL_SRC_FILES = $(RARCH_PATH)/console/griffin/griffin.c +LOCAL_SRC_FILES += $(RARCH_PATH)/console/griffin/griffin.c ifeq ($(PERF_TEST), 1) diff --git a/audio/sinc_neon.S b/audio/sinc_neon.S index f6c78ce122..2b67215214 100644 --- a/audio/sinc_neon.S +++ b/audio/sinc_neon.S @@ -26,8 +26,8 @@ process_sinc_neon_asm: vld1.f32 {q4-q5}, [r2]! vld1.f32 {q6-q7}, [r2]! # Coeff - vld1.f32 {q8-q9}, [r3, :1024]! - vld1.f32 {q10-q11}, [r3, :1024]! + vld1.f32 {q8-q9}, [r3, :128]! + vld1.f32 {q10-q11}, [r3, :128]! # Left vmul.f32 q0, q0, q8 diff --git a/console/griffin/griffin.c b/console/griffin/griffin.c index cf397a897c..e5e7cdd580 100644 --- a/console/griffin/griffin.c +++ b/console/griffin/griffin.c @@ -247,7 +247,11 @@ FIFO BUFFER /*============================================================ AUDIO HERMITE ============================================================ */ +#ifdef HAVE_NEON +#include "../../audio/sinc.c" +#else #include "../../audio/hermite.c" +#endif /*============================================================ RSOUND diff --git a/gfx/scaler/filter.c b/gfx/scaler/filter.c index c4bb12f606..df469eca98 100644 --- a/gfx/scaler/filter.c +++ b/gfx/scaler/filter.c @@ -95,7 +95,7 @@ static bool gen_filter_bilinear(struct scaler_ctx *ctx) return true; } -static inline double sinc(double phase) +static inline double filter_sinc(double phase) { if (fabs(phase) < 0.0001) return 1.0; @@ -116,7 +116,7 @@ static void gen_filter_sinc_sub(struct scaler_filter *filter, int len, int pos, { double sinc_phase = M_PI * ((double)((sinc_size << 15) + (pos & 0xffff)) / 0x10000 - j); double lanczos_phase = sinc_phase / ((sinc_size >> 1)); - int16_t sinc_val = FILTER_UNITY * sinc(sinc_phase * phase_mul) * sinc(lanczos_phase) * phase_mul; + int16_t sinc_val = FILTER_UNITY * filter_sinc(sinc_phase * phase_mul) * filter_sinc(lanczos_phase) * phase_mul; //sinc_sum += sinc_val; filter->filter[i * sinc_size + j] = sinc_val;