aboutsummaryrefslogtreecommitdiffstats
path: root/Alc/ALu.c
diff options
context:
space:
mode:
Diffstat (limited to 'Alc/ALu.c')
-rw-r--r--Alc/ALu.c45
1 files changed, 45 insertions, 0 deletions
diff --git a/Alc/ALu.c b/Alc/ALu.c
index c15f75b7..cb180ee3 100644
--- a/Alc/ALu.c
+++ b/Alc/ALu.c
@@ -36,6 +36,8 @@
#include "alu.h"
#include "bs2b.h"
+#include "mixer_defs.h"
+
struct ChanMap {
enum Channel channel;
@@ -49,6 +51,49 @@ ALfloat ConeScale = 1.0f;
ALfloat ZScale = 1.0f;
+static DryMixerFunc SelectDirectMixer(void)
+{
+#ifdef HAVE_SSE
+ if((CPUCapFlags&CPU_CAP_SSE))
+ return MixDirect_SSE;
+#endif
+#ifdef HAVE_NEON
+ if((CPUCapFlags&CPU_CAP_NEON))
+ return MixDirect_Neon;
+#endif
+
+ return MixDirect_C;
+}
+
+static DryMixerFunc SelectHrtfMixer(void)
+{
+#ifdef HAVE_SSE
+ if((CPUCapFlags&CPU_CAP_SSE))
+ return MixDirect_Hrtf_SSE;
+#endif
+#ifdef HAVE_NEON
+ if((CPUCapFlags&CPU_CAP_NEON))
+ return MixDirect_Hrtf_Neon;
+#endif
+
+ return MixDirect_Hrtf_C;
+}
+
+static WetMixerFunc SelectSendMixer(void)
+{
+#ifdef HAVE_SSE
+ if((CPUCapFlags&CPU_CAP_SSE))
+ return MixSend_SSE;
+#endif
+#ifdef HAVE_NEON
+ if((CPUCapFlags&CPU_CAP_NEON))
+ return MixSend_Neon;
+#endif
+
+ return MixSend_C;
+}
+
+
static __inline ALvoid aluMatrixVector(ALfloat *vector,ALfloat w,ALfloat matrix[4][4])
{
ALfloat temp[4] = {