mirror of
				https://github.com/godotengine/godot.git
				synced 2025-10-31 13:41:03 +00:00 
			
		
		
		
	 767e374dce
			
		
	
	
		767e374dce
		
	
	
	
	
		
			
			Since Embree v3.13.0 supports AARCH64, switch back to the official repo instead of using Embree-aarch64. `thirdparty/embree/patches/godot-changes.patch` should now contain an accurate diff of the changes done to the library.
		
			
				
	
	
		
			103 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			103 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| 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 */
 |