123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- diff --git a/thirdparty/embree/common/sys/sysinfo.cpp b/thirdparty/embree/common/sys/sysinfo.cpp
- index ba97dc227b..1679599608 100644
- --- a/thirdparty/embree/common/sys/sysinfo.cpp
- +++ b/thirdparty/embree/common/sys/sysinfo.cpp
- @@ -618,7 +618,10 @@ namespace embree
- static int nThreads = -1;
- if (nThreads != -1) return nThreads;
-
- -#if defined(__MACOSX__)
- +// -- GODOT start --
- +// #if defined(__MACOSX__)
- +#if defined(__MACOSX__) || defined(__ANDROID__)
- +// -- GODOT end --
- nThreads = sysconf(_SC_NPROCESSORS_ONLN); // does not work in Linux LXC container
- assert(nThreads);
- #else
- diff --git a/thirdparty/embree/common/sys/thread.cpp b/thirdparty/embree/common/sys/thread.cpp
- index a7827e18f7..f4014be89b 100644
- --- a/thirdparty/embree/common/sys/thread.cpp
- +++ b/thirdparty/embree/common/sys/thread.cpp
- @@ -158,7 +158,9 @@ namespace embree
- /// Linux Platform
- ////////////////////////////////////////////////////////////////////////////////
-
- -#if defined(__LINUX__)
- +// -- GODOT start --
- +#if defined(__LINUX__) && !defined(__ANDROID__)
- +// -- GODOT end --
-
- #include <fstream>
- #include <sstream>
- @@ -247,6 +249,28 @@ namespace embree
- }
- #endif
-
- +// -- GODOT start --
- +////////////////////////////////////////////////////////////////////////////////
- +/// Android Platform
- +////////////////////////////////////////////////////////////////////////////////
- +
- +#if defined(__ANDROID__)
- +
- +namespace embree
- +{
- + /*! set affinity of the calling thread */
- + void setAffinity(ssize_t affinity)
- + {
- + cpu_set_t cset;
- + CPU_ZERO(&cset);
- + CPU_SET(affinity, &cset);
- +
- + sched_setaffinity(0, sizeof(cset), &cset);
- + }
- +}
- +#endif
- +// -- GODOT end --
- +
- ////////////////////////////////////////////////////////////////////////////////
- /// FreeBSD Platform
- ////////////////////////////////////////////////////////////////////////////////
- @@ -355,7 +379,9 @@ namespace embree
- pthread_attr_destroy(&attr);
-
- /* set affinity */
- -#if defined(__LINUX__)
- +// -- GODOT start --
- +#if defined(__LINUX__) && !defined(__ANDROID__)
- +// -- GODOT end --
- if (threadID >= 0) {
- cpu_set_t cset;
- CPU_ZERO(&cset);
- @@ -370,7 +396,16 @@ namespace embree
- CPU_SET(threadID, &cset);
- pthread_setaffinity_np(*tid, sizeof(cset), &cset);
- }
- +// -- GODOT start --
- +#elif defined(__ANDROID__)
- + if (threadID >= 0) {
- + cpu_set_t cset;
- + CPU_ZERO(&cset);
- + CPU_SET(threadID, &cset);
- + sched_setaffinity(pthread_gettid_np(*tid), sizeof(cset), &cset);
- + }
- #endif
- +// -- GODOT end --
-
- return thread_t(tid);
- }
- @@ -389,8 +424,14 @@ namespace embree
-
- /*! destroy a hardware thread by its handle */
- void destroyThread(thread_t tid) {
- +// -- GODOT start --
- +#if defined(__ANDROID__)
- + FATAL("Can't destroy threads on Android.");
- +#else
- pthread_cancel(*(pthread_t*)tid);
- delete (pthread_t*)tid;
- +#endif
- +// -- GODOT end --
- }
-
- /*! creates thread local storage */
|