Merge pull request #45285 from lyuma/lightmapper_cross_compile_fixes
[3.2.4] Fix lightmapper build on llvm-mingw on Linux
This commit is contained in:
commit
3dcb0409f7
|
@ -780,7 +780,8 @@ _ALWAYS_INLINE_ float uniform_rand() {
|
||||||
state ^= state << 13;
|
state ^= state << 13;
|
||||||
state ^= state >> 17;
|
state ^= state >> 17;
|
||||||
state ^= state << 5;
|
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) {
|
void LightmapperCPU::_compute_indirect_light(uint32_t p_idx, void *r_lightmap) {
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
|
|
||||||
#if !defined(__aligned)
|
#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__))
|
#define __aligned(...) __declspec(align(__VA_ARGS__))
|
||||||
#else
|
#else
|
||||||
#define __aligned(...) __attribute__((aligned(__VA_ARGS__)))
|
#define __aligned(...) __attribute__((aligned(__VA_ARGS__)))
|
||||||
|
|
|
@ -12,8 +12,8 @@
|
||||||
#include <xmmintrin.h>
|
#include <xmmintrin.h>
|
||||||
#include <immintrin.h>
|
#include <immintrin.h>
|
||||||
|
|
||||||
#if defined(__WIN32__) && !defined(__MINGW32__)
|
#if defined(__WIN32__)
|
||||||
#if (__MSV_VER <= 1700)
|
#if defined(_MSC_VER) && (_MSC_VER <= 1700)
|
||||||
namespace std
|
namespace std
|
||||||
{
|
{
|
||||||
__forceinline bool isinf ( const float x ) { return _finite(x) == 0; }
|
__forceinline bool isinf ( const float x ) { return _finite(x) == 0; }
|
||||||
|
@ -86,7 +86,7 @@ namespace embree
|
||||||
return _mm_cvtss_f32(c);
|
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 ((x<y) == (x>0)) return x*(1.1f+float(ulp)); else return x*(0.9f-float(ulp)); }
|
__forceinline float nextafter(float x, float y) { if ((x<y) == (x>0)) 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 double nextafter(double x, double y) { return _nextafter(x, y); }
|
||||||
__forceinline int roundf(float f) { return (int)(f + 0.5f); }
|
__forceinline int roundf(float f) { return (int)(f + 0.5f); }
|
||||||
|
|
|
@ -19,7 +19,7 @@ typedef int ssize_t;
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef _WIN32
|
#if defined(_WIN32) && defined(_MSC_VER)
|
||||||
# define RTC_ALIGN(...) __declspec(align(__VA_ARGS__))
|
# define RTC_ALIGN(...) __declspec(align(__VA_ARGS__))
|
||||||
#else
|
#else
|
||||||
# define RTC_ALIGN(...) __attribute__((aligned(__VA_ARGS__)))
|
# define RTC_ALIGN(...) __attribute__((aligned(__VA_ARGS__)))
|
||||||
|
|
|
@ -2,15 +2,24 @@ diff --git a/common/math/math.h b/common/math/math.h
|
||||||
index 5af0691a2..1982c27c1 100644
|
index 5af0691a2..1982c27c1 100644
|
||||||
--- a/common/math/math.h
|
--- a/common/math/math.h
|
||||||
+++ b/common/math/math.h
|
+++ b/common/math/math.h
|
||||||
@@ -12,7 +12,7 @@
|
@@ -13,7 +13,7 @@
|
||||||
#include <xmmintrin.h>
|
|
||||||
#include <immintrin.h>
|
#include <immintrin.h>
|
||||||
|
|
||||||
-#if defined(__WIN32__)
|
#if defined(__WIN32__)
|
||||||
+#if defined(__WIN32__) && !defined(__MINGW32__)
|
-#if (__MSV_VER <= 1700)
|
||||||
#if (__MSV_VER <= 1700)
|
+#if defined(_MSC_VER) && (_MSC_VER <= 1700)
|
||||||
namespace std
|
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 ((x<y) == (x>0)) 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
|
diff --git a/common/sys/intrinsics.h b/common/sys/intrinsics.h
|
||||||
index 3f0619cac..58f5c3bb4 100644
|
index 3f0619cac..58f5c3bb4 100644
|
||||||
--- a/common/sys/intrinsics.h
|
--- a/common/sys/intrinsics.h
|
||||||
|
@ -190,3 +199,15 @@ index 98dba2687..369e5edf0 100644
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// We need to define these to avoid implicit linkage against
|
// 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__)))
|
||||||
|
|
Loading…
Reference in New Issue