|
@@ -0,0 +1,46 @@
|
|
|
+diff --git a/thirdparty/embree/common/simd/arm/sse2neon.h b/thirdparty/embree/common/simd/arm/sse2neon.h
|
|
|
+index b18d41e783..c54d0b7951 100644
|
|
|
+--- a/thirdparty/embree/common/simd/arm/sse2neon.h
|
|
|
++++ b/thirdparty/embree/common/simd/arm/sse2neon.h
|
|
|
+@@ -102,7 +102,9 @@
|
|
|
+ #include <stdint.h>
|
|
|
+ #include <stdlib.h>
|
|
|
+
|
|
|
+-#if defined(_WIN32)
|
|
|
++// -- GODOT start --
|
|
|
++#if defined(_WIN32) && !defined(__MINGW32__)
|
|
|
++// -- GODOT end --
|
|
|
+ /* Definitions for _mm_{malloc,free} are provided by <malloc.h>
|
|
|
+ * from both MinGW-w64 and MSVC.
|
|
|
+ */
|
|
|
+@@ -2080,8 +2082,16 @@ FORCE_INLINE void *_mm_malloc(size_t size, size_t align)
|
|
|
+ return malloc(size);
|
|
|
+ if (align == 2 || (sizeof(void *) == 8 && align == 4))
|
|
|
+ align = sizeof(void *);
|
|
|
+- if (!posix_memalign(&ptr, align, size))
|
|
|
++// -- GODOT start --
|
|
|
++#if defined(_WIN32)
|
|
|
++ ptr = _aligned_malloc(size, align);
|
|
|
++ if (ptr)
|
|
|
+ return ptr;
|
|
|
++#else
|
|
|
++ if (!posix_memalign(&ptr, align, size))
|
|
|
++ return ptr;
|
|
|
++#endif
|
|
|
++// -- GODOT end --
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
+ #endif
|
|
|
+@@ -1890,7 +1890,13 @@ FORCE_INLINE __m128 _mm_div_ss(__m128 a, __m128 b)
|
|
|
+ #if !defined(SSE2NEON_ALLOC_DEFINED)
|
|
|
+ FORCE_INLINE void _mm_free(void *addr)
|
|
|
+ {
|
|
|
++// -- GODOT start --
|
|
|
++#if defined(_WIN32)
|
|
|
++ _aligned_free(addr);
|
|
|
++#else
|
|
|
+ free(addr);
|
|
|
++#endif
|
|
|
++// -- GODOT end --
|
|
|
+ }
|
|
|
+ #endif
|