From 2c2f70c444a28a9aafbe64bf84232c3a902a4206 Mon Sep 17 00:00:00 2001 From: Lyuma Date: Mon, 18 Jan 2021 06:20:24 -0800 Subject: [PATCH] embree: cross compile fixes. Fix typos in #if; add missing _MSC_VER; avoid warning in random generator. --- modules/lightmapper_cpu/lightmapper_cpu.cpp | 3 +- scene/3d/lightmapper.h | 2 +- thirdparty/embree/common/math/math.h | 6 ++-- .../embree/include/embree3/rtcore_common.h | 2 +- thirdparty/embree/pathces/godot-changes.patch | 31 ++++++++++++++++--- 5 files changed, 33 insertions(+), 11 deletions(-) diff --git a/modules/lightmapper_cpu/lightmapper_cpu.cpp b/modules/lightmapper_cpu/lightmapper_cpu.cpp index 3cbdc7dc9e..44a03da7e5 100644 --- a/modules/lightmapper_cpu/lightmapper_cpu.cpp +++ b/modules/lightmapper_cpu/lightmapper_cpu.cpp @@ -780,7 +780,8 @@ _ALWAYS_INLINE_ float uniform_rand() { state ^= state << 13; state ^= state >> 17; state ^= state << 5; - return float(state) / UINT32_MAX; + /* implicit conversion from 'unsigned int' to 'float' changes value from 4294967295 to 4294967296 */ + return float(state) / float(UINT32_MAX); } void LightmapperCPU::_compute_indirect_light(uint32_t p_idx, void *r_lightmap) { diff --git a/scene/3d/lightmapper.h b/scene/3d/lightmapper.h index 720f95a864..b1346ca8c3 100644 --- a/scene/3d/lightmapper.h +++ b/scene/3d/lightmapper.h @@ -35,7 +35,7 @@ #if !defined(__aligned) -#if (defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__)) && !defined(__CYGWIN__) +#if defined(_WIN32) && defined(_MSC_VER) #define __aligned(...) __declspec(align(__VA_ARGS__)) #else #define __aligned(...) __attribute__((aligned(__VA_ARGS__))) diff --git a/thirdparty/embree/common/math/math.h b/thirdparty/embree/common/math/math.h index 1982c27c15..91e7a56608 100644 --- a/thirdparty/embree/common/math/math.h +++ b/thirdparty/embree/common/math/math.h @@ -12,8 +12,8 @@ #include #include -#if defined(__WIN32__) && !defined(__MINGW32__) -#if (__MSV_VER <= 1700) +#if defined(__WIN32__) +#if defined(_MSC_VER) && (_MSC_VER <= 1700) namespace std { __forceinline bool isinf ( const float x ) { return _finite(x) == 0; } @@ -86,7 +86,7 @@ namespace embree return _mm_cvtss_f32(c); } -#if defined(__WIN32__) && (__MSC_VER <= 1700) +#if defined(__WIN32__) && defined(_MSC_VER) && (_MSC_VER <= 1700) __forceinline float nextafter(float x, float y) { if ((x0)) return x*(1.1f+float(ulp)); else return x*(0.9f-float(ulp)); } __forceinline double nextafter(double x, double y) { return _nextafter(x, y); } __forceinline int roundf(float f) { return (int)(f + 0.5f); } diff --git a/thirdparty/embree/include/embree3/rtcore_common.h b/thirdparty/embree/include/embree3/rtcore_common.h index a516f6bdf1..bd2e7144dd 100644 --- a/thirdparty/embree/include/embree3/rtcore_common.h +++ b/thirdparty/embree/include/embree3/rtcore_common.h @@ -19,7 +19,7 @@ typedef int ssize_t; #endif #endif -#ifdef _WIN32 +#if defined(_WIN32) && defined(_MSC_VER) # define RTC_ALIGN(...) __declspec(align(__VA_ARGS__)) #else # define RTC_ALIGN(...) __attribute__((aligned(__VA_ARGS__))) diff --git a/thirdparty/embree/pathces/godot-changes.patch b/thirdparty/embree/pathces/godot-changes.patch index 82b3da44ac..31873da9c5 100644 --- a/thirdparty/embree/pathces/godot-changes.patch +++ b/thirdparty/embree/pathces/godot-changes.patch @@ -2,15 +2,24 @@ diff --git a/common/math/math.h b/common/math/math.h index 5af0691a2..1982c27c1 100644 --- a/common/math/math.h +++ b/common/math/math.h -@@ -12,7 +12,7 @@ - #include +@@ -13,7 +13,7 @@ #include --#if defined(__WIN32__) -+#if defined(__WIN32__) && !defined(__MINGW32__) - #if (__MSV_VER <= 1700) + #if defined(__WIN32__) +-#if (__MSV_VER <= 1700) ++#if defined(_MSC_VER) && (_MSC_VER <= 1700) namespace std { + __forceinline bool isinf ( const float x ) { return _finite(x) == 0; } +@@ -86,7 +86,7 @@ + return _mm_cvtss_f32(c); + } + +-#if defined(__WIN32__) && (__MSC_VER <= 1700) ++#if defined(__WIN32__) && defined(_MSC_VER) && (_MSC_VER <= 1700) + __forceinline float nextafter(float x, float y) { if ((x0)) return x*(1.1f+float(ulp)); else return x*(0.9f-float(ulp)); } + __forceinline double nextafter(double x, double y) { return _nextafter(x, y); } + __forceinline int roundf(float f) { return (int)(f + 0.5f); } diff --git a/common/sys/intrinsics.h b/common/sys/intrinsics.h index 3f0619cac..58f5c3bb4 100644 --- a/common/sys/intrinsics.h @@ -190,3 +199,15 @@ index 98dba2687..369e5edf0 100644 #endif // We need to define these to avoid implicit linkage against +diff a/include/embree3/rtcore_common.h b/include/embree3/rtcore_common.h +--- a/include/embree3/rtcore_common.h ++++ b/include/embree3/rtcore_common.h +@@ -19,7 +19,7 @@ + #endif + #endif + +-#ifdef _WIN32 ++#if defined(_WIN32) && defined(_MSC_VER) + # define RTC_ALIGN(...) __declspec(align(__VA_ARGS__)) + #else + # define RTC_ALIGN(...) __attribute__((aligned(__VA_ARGS__)))