diff options
Diffstat (limited to 'thirdparty/embree/patches/godot-changes-noexcept.patch')
-rw-r--r-- | thirdparty/embree/patches/godot-changes-noexcept.patch | 572 |
1 files changed, 295 insertions, 277 deletions
diff --git a/thirdparty/embree/patches/godot-changes-noexcept.patch b/thirdparty/embree/patches/godot-changes-noexcept.patch index 84169c36e4..bf9973a764 100644 --- a/thirdparty/embree/patches/godot-changes-noexcept.patch +++ b/thirdparty/embree/patches/godot-changes-noexcept.patch @@ -1,121 +1,5 @@ -diff --git a/thirdparty/embree/common/algorithms/parallel_for.h b/thirdparty/embree/common/algorithms/parallel_for.h -index f2969a88f1..6d411e4852 100644 ---- a/thirdparty/embree/common/algorithms/parallel_for.h -+++ b/thirdparty/embree/common/algorithms/parallel_for.h -@@ -21,7 +21,10 @@ namespace embree - func(r.begin()); - }); - if (!TaskScheduler::wait()) -- throw std::runtime_error("task cancelled"); -+ // -- GODOT start -- -+ // throw std::runtime_error("task cancelled"); -+ abort(); -+ // -- GODOT end -- - } - #elif defined(TASKING_TBB) - #if TBB_INTERFACE_VERSION >= 12002 -@@ -30,13 +33,19 @@ namespace embree - func(i); - },context); - if (context.is_group_execution_cancelled()) -- throw std::runtime_error("task cancelled"); -+ // -- GODOT start -- -+ // throw std::runtime_error("task cancelled"); -+ abort(); -+ // -- GODOT end -- - #else - tbb::parallel_for(Index(0),N,Index(1),[&](Index i) { - func(i); - }); - if (tbb::task::self().is_cancelled()) -- throw std::runtime_error("task cancelled"); -+ // -- GODOT start -- -+ // throw std::runtime_error("task cancelled"); -+ abort(); -+ // -- GODOT end -- - #endif - - #elif defined(TASKING_PPL) -@@ -56,7 +65,10 @@ namespace embree - #if defined(TASKING_INTERNAL) - TaskScheduler::spawn(first,last,minStepSize,func); - if (!TaskScheduler::wait()) -- throw std::runtime_error("task cancelled"); -+ // -- GODOT start -- -+ // throw std::runtime_error("task cancelled"); -+ abort(); -+ // -- GODOT end -- - - #elif defined(TASKING_TBB) - #if TBB_INTERFACE_VERSION >= 12002 -@@ -65,13 +77,19 @@ namespace embree - func(range<Index>(r.begin(),r.end())); - },context); - if (context.is_group_execution_cancelled()) -- throw std::runtime_error("task cancelled"); -+ // -- GODOT start -- -+ // throw std::runtime_error("task cancelled"); -+ abort(); -+ // -- GODOT end -- - #else - tbb::parallel_for(tbb::blocked_range<Index>(first,last,minStepSize),[&](const tbb::blocked_range<Index>& r) { - func(range<Index>(r.begin(),r.end())); - }); - if (tbb::task::self().is_cancelled()) -- throw std::runtime_error("task cancelled"); -+ // -- GODOT start -- -+ // throw std::runtime_error("task cancelled"); -+ abort(); -+ // -- GODOT end -- - #endif - - #elif defined(TASKING_PPL) -@@ -103,13 +121,19 @@ namespace embree - func(i); - },tbb::simple_partitioner(),context); - if (context.is_group_execution_cancelled()) -- throw std::runtime_error("task cancelled"); -+ // -- GODOT start -- -+ // throw std::runtime_error("task cancelled"); -+ abort(); -+ // -- GODOT end -- - #else - tbb::parallel_for(Index(0),N,Index(1),[&](Index i) { - func(i); - },tbb::simple_partitioner()); - if (tbb::task::self().is_cancelled()) -- throw std::runtime_error("task cancelled"); -+ // -- GODOT start -- -+ // throw std::runtime_error("task cancelled"); -+ abort(); -+ // -- GODOT end -- - #endif - } - -@@ -124,13 +148,19 @@ namespace embree - func(i); - },ap,context); - if (context.is_group_execution_cancelled()) -- throw std::runtime_error("task cancelled"); -+ // -- GODOT start -- -+ // throw std::runtime_error("task cancelled"); -+ abort(); -+ // -- GODOT end -- - #else - tbb::parallel_for(Index(0),N,Index(1),[&](Index i) { - func(i); - },ap); - if (tbb::task::self().is_cancelled()) -- throw std::runtime_error("task cancelled"); -+ // -- GODOT start -- -+ // throw std::runtime_error("task cancelled"); -+ abort(); -+ // -- GODOT end -- - #endif - } - diff --git a/thirdparty/embree/common/algorithms/parallel_reduce.h b/thirdparty/embree/common/algorithms/parallel_reduce.h -index 1a94aad8c4..cd0078f2e6 100644 +index b52b1e2e13..51ec0a6405 100644 --- a/thirdparty/embree/common/algorithms/parallel_reduce.h +++ b/thirdparty/embree/common/algorithms/parallel_reduce.h @@ -58,15 +58,19 @@ namespace embree @@ -143,119 +27,233 @@ index 1a94aad8c4..cd0078f2e6 100644 #endif #else // TASKING_PPL diff --git a/thirdparty/embree/common/lexers/stringstream.cpp b/thirdparty/embree/common/lexers/stringstream.cpp -index 42ffb10176..a037869506 100644 +index 42ffb10176..c93da0b420 100644 --- a/thirdparty/embree/common/lexers/stringstream.cpp +++ b/thirdparty/embree/common/lexers/stringstream.cpp -@@ -39,7 +39,10 @@ namespace embree +@@ -39,7 +39,12 @@ namespace embree std::vector<char> str; str.reserve(64); while (cin->peek() != EOF && !isSeparator(cin->peek())) { int c = cin->get(); - if (!isValidChar(c)) throw std::runtime_error("invalid character "+std::string(1,c)+" in input"); + // -- GODOT start -- + // if (!isValidChar(c)) throw std::runtime_error("invalid character "+std::string(1,c)+" in input"); -+ if (!isValidChar(c)) abort(); ++ if (!isValidChar(c)) { ++ abort(); ++ } + // -- GODOT end -- str.push_back((char)c); } str.push_back(0); diff --git a/thirdparty/embree/common/sys/alloc.cpp b/thirdparty/embree/common/sys/alloc.cpp -index 1bc30fe9a5..abdd269069 100644 +index de225fafc6..71616a3982 100644 --- a/thirdparty/embree/common/sys/alloc.cpp +++ b/thirdparty/embree/common/sys/alloc.cpp -@@ -21,7 +21,10 @@ namespace embree +@@ -24,16 +24,32 @@ namespace embree + + void enableUSMAllocEmbree(sycl::context* context, sycl::device* device) + { +- if (tls_context_embree != nullptr) throw std::runtime_error("USM allocation already enabled"); +- if (tls_device_embree != nullptr) throw std::runtime_error("USM allocation already enabled"); ++ // -- GODOT start -- ++ // if (tls_context_embree != nullptr) throw std::runtime_error("USM allocation already enabled"); ++ // if (tls_device_embree != nullptr) throw std::runtime_error("USM allocation already enabled"); ++ if (tls_context_embree != nullptr) { ++ abort(); ++ } ++ if (tls_device_embree != nullptr) { ++ abort(); ++ } ++ // -- GODOT end -- + tls_context_embree = context; + tls_device_embree = device; + } + + void disableUSMAllocEmbree() + { +- if (tls_context_embree == nullptr) throw std::runtime_error("USM allocation not enabled"); +- if (tls_device_embree == nullptr) throw std::runtime_error("USM allocation not enabled"); ++ // -- GODOT start -- ++ // if (tls_context_embree == nullptr) throw std::runtime_error("USM allocation not enabled"); ++ // if (tls_device_embree == nullptr) throw std::runtime_error("USM allocation not enabled"); ++ if (tls_context_embree == nullptr) { ++ abort(); ++ } ++ if (tls_device_embree == nullptr) { ++ abort(); ++ } ++ // -- GODOT end -- + tls_context_embree = nullptr; + tls_device_embree = nullptr; + } +@@ -48,8 +64,16 @@ namespace embree + + void disableUSMAllocTutorial() + { +- if (tls_context_tutorial == nullptr) throw std::runtime_error("USM allocation not enabled"); +- if (tls_device_tutorial == nullptr) throw std::runtime_error("USM allocation not enabled"); ++ // -- GODOT start -- ++ // if (tls_context_tutorial == nullptr) throw std::runtime_error("USM allocation not enabled"); ++ // if (tls_device_tutorial == nullptr) throw std::runtime_error("USM allocation not enabled"); ++ if (tls_context_tutorial == nullptr) { ++ abort(); ++ } ++ if (tls_device_tutorial == nullptr) { ++ abort(); ++ } ++ // -- GODOT end -- + + tls_context_tutorial = nullptr; + tls_device_tutorial = nullptr; +@@ -64,8 +88,13 @@ namespace embree + + assert((align & (align-1)) == 0); void* ptr = _mm_malloc(size,align); +- if (size != 0 && ptr == nullptr) +- throw std::bad_alloc(); ++ // -- GODOT start -- ++ // if (size != 0 && ptr == nullptr) ++ // throw std::bad_alloc(); ++ if (size != 0 && ptr == nullptr) { ++ abort(); ++ } ++ // -- GODOT end -- + return ptr; + } - if (size != 0 && ptr == nullptr) +@@ -94,8 +123,13 @@ namespace embree + else + ptr = sycl::aligned_alloc_shared(align,size,*device,*context); + +- if (size != 0 && ptr == nullptr) - throw std::bad_alloc(); -+ // -- GODOT start -- -+ // throw std::bad_alloc(); ++ // -- GODOT start -- ++ // if (size != 0 && ptr == nullptr) ++ // throw std::bad_alloc(); ++ if (size != 0 && ptr == nullptr) { + abort(); -+ // -- GODOT end -- - ++ } ++ // -- GODOT end -- + return ptr; } -@@ -128,7 +131,10 @@ namespace embree +@@ -241,7 +275,12 @@ namespace embree /* fall back to 4k pages */ int flags = MEM_COMMIT | MEM_RESERVE; char* ptr = (char*) VirtualAlloc(nullptr,bytes,flags,PAGE_READWRITE); - if (ptr == nullptr) throw std::bad_alloc(); + // -- GODOT start -- + // if (ptr == nullptr) throw std::bad_alloc(); -+ if (ptr == nullptr) abort(); ++ if (ptr == nullptr) { ++ abort(); ++ } + // -- GODOT end -- hugepages = false; return ptr; } -@@ -145,7 +151,10 @@ namespace embree +@@ -257,8 +296,13 @@ namespace embree + if (bytesNew >= bytesOld) return bytesOld; - if (!VirtualFree((char*)ptr+bytesNew,bytesOld-bytesNew,MEM_DECOMMIT)) +- if (!VirtualFree((char*)ptr+bytesNew,bytesOld-bytesNew,MEM_DECOMMIT)) - throw std::bad_alloc(); -+ // -- GODOT start -- -+ // throw std::bad_alloc(); ++ // -- GODOT start -- ++ // if (!VirtualFree((char*)ptr+bytesNew,bytesOld-bytesNew,MEM_DECOMMIT)) ++ // throw std::bad_alloc(); ++ if (!VirtualFree((char*)ptr+bytesNew,bytesOld-bytesNew,MEM_DECOMMIT)) { + abort(); -+ // -- GODOT end -- ++ } ++ // -- GODOT end -- return bytesNew; } -@@ -156,7 +165,10 @@ namespace embree +@@ -268,8 +312,13 @@ namespace embree + if (bytes == 0) return; - if (!VirtualFree(ptr,0,MEM_RELEASE)) +- if (!VirtualFree(ptr,0,MEM_RELEASE)) - throw std::bad_alloc(); -+ // -- GODOT start -- -+ // throw std::bad_alloc(); ++ // -- GODOT start -- ++ // if (!VirtualFree(ptr,0,MEM_RELEASE)) ++ // throw std::bad_alloc(); ++ if (!VirtualFree(ptr,0,MEM_RELEASE)) { + abort(); -+ // -- GODOT end -- ++ } ++ // -- GODOT end -- } void os_advise(void *ptr, size_t bytes) -@@ -260,7 +272,10 @@ namespace embree +@@ -373,7 +422,12 @@ namespace embree /* fallback to 4k pages */ void* ptr = (char*) mmap(0, bytes, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0); - if (ptr == MAP_FAILED) throw std::bad_alloc(); + // -- GODOT start -- + // if (ptr == MAP_FAILED) throw std::bad_alloc(); -+ if (ptr == MAP_FAILED) abort(); ++ if (ptr == MAP_FAILED) { ++ abort(); ++ } + // -- GODOT end -- hugepages = false; /* advise huge page hint for THP */ -@@ -277,7 +292,10 @@ namespace embree +@@ -389,8 +443,13 @@ namespace embree + if (bytesNew >= bytesOld) return bytesOld; - if (munmap((char*)ptr+bytesNew,bytesOld-bytesNew) == -1) +- if (munmap((char*)ptr+bytesNew,bytesOld-bytesNew) == -1) - throw std::bad_alloc(); -+ // -- GODOT start -- -+ // throw std::bad_alloc(); ++ // -- GODOT start -- ++ // if (munmap((char*)ptr+bytesNew,bytesOld-bytesNew) == -1) ++ // throw std::bad_alloc(); ++ if (munmap((char*)ptr+bytesNew,bytesOld-bytesNew) == -1) { + abort(); -+ // -- GODOT end -- ++ } ++ // -- GODOT end -- return bytesNew; } -@@ -291,7 +309,10 @@ namespace embree +@@ -403,8 +462,13 @@ namespace embree + /* for hugepages we need to also align the size */ const size_t pageSize = hugepages ? PAGE_SIZE_2M : PAGE_SIZE_4K; bytes = (bytes+pageSize-1) & ~(pageSize-1); - if (munmap(ptr,bytes) == -1) +- if (munmap(ptr,bytes) == -1) - throw std::bad_alloc(); -+ // -- GODOT start -- -+ // throw std::bad_alloc(); ++ // -- GODOT start -- ++ // if (munmap(ptr,bytes) == -1) ++ // throw std::bad_alloc(); ++ if (munmap(ptr,bytes) == -1) { + abort(); -+ // -- GODOT end -- ++ } ++ // -- GODOT end -- } /* hint for transparent huge pages (THP) */ +diff --git a/thirdparty/embree/common/sys/alloc.h b/thirdparty/embree/common/sys/alloc.h +index e19c2c221a..28b17f988d 100644 +--- a/thirdparty/embree/common/sys/alloc.h ++++ b/thirdparty/embree/common/sys/alloc.h +@@ -160,7 +160,10 @@ namespace embree + typedef std::ptrdiff_t difference_type; + + __forceinline pointer allocate( size_type n ) { +- throw std::runtime_error("no allocation supported"); ++ // -- GODOT start -- ++ // throw std::runtime_error("no allocation supported"); ++ abort(); ++ // -- GODOT end -- + } + + __forceinline void deallocate( pointer p, size_type n ) { diff --git a/thirdparty/embree/common/sys/platform.h b/thirdparty/embree/common/sys/platform.h -index be3ec36436..728bf6ed7d 100644 +index 6dc0cf3318..d4a9b9e119 100644 --- a/thirdparty/embree/common/sys/platform.h +++ b/thirdparty/embree/common/sys/platform.h -@@ -178,11 +178,19 @@ - #define PRINT4(x,y,z,w) embree_cout << STRING(x) << " = " << (x) << ", " << STRING(y) << " = " << (y) << ", " << STRING(z) << " = " << (z) << ", " << STRING(w) << " = " << (w) << embree_endl +@@ -213,11 +213,19 @@ + #define UPRINT4(x,y,z,w) embree_cout_uniform << STRING(x) << " = " << (x) << ", " << STRING(y) << " = " << (y) << ", " << STRING(z) << " = " << (z) << ", " << STRING(w) << " = " << (w) << embree_endl #if defined(DEBUG) // only report file and line in debug mode + // -- GODOT start -- -+ // #define THROW_RUNTIME_ERROR(str) ++ // #define THROW_RUNTIME_ERROR(str) \ + // throw std::runtime_error(std::string(__FILE__) + " (" + toString(__LINE__) + "): " + std::string(str)); #define THROW_RUNTIME_ERROR(str) \ - throw std::runtime_error(std::string(__FILE__) + " (" + toString(__LINE__) + "): " + std::string(str)); @@ -263,7 +261,7 @@ index be3ec36436..728bf6ed7d 100644 + // -- GODOT end -- #else + // -- GODOT start -- -+ // #define THROW_RUNTIME_ERROR(str) ++ // #define THROW_RUNTIME_ERROR(str) \ + // throw std::runtime_error(str); #define THROW_RUNTIME_ERROR(str) \ - throw std::runtime_error(str); @@ -273,7 +271,7 @@ index be3ec36436..728bf6ed7d 100644 #define FATAL(x) THROW_RUNTIME_ERROR(x) diff --git a/thirdparty/embree/common/tasking/taskschedulerinternal.cpp b/thirdparty/embree/common/tasking/taskschedulerinternal.cpp -index dca835a716..ad438588a3 100644 +index 83ead95122..88b88a30ec 100644 --- a/thirdparty/embree/common/tasking/taskschedulerinternal.cpp +++ b/thirdparty/embree/common/tasking/taskschedulerinternal.cpp @@ -48,13 +48,15 @@ namespace embree @@ -281,115 +279,59 @@ index dca835a716..ad438588a3 100644 Task* prevTask = thread.task; thread.task = this; - try { -- if (thread.scheduler->cancellingException == nullptr) +- if (context->cancellingException == nullptr) + // -- GODOT start -- + // try { -+ // if (thread.scheduler->cancellingException == nullptr) ++ // if (context->cancellingException == nullptr) closure->execute(); - } catch (...) { -- if (thread.scheduler->cancellingException == nullptr) -- thread.scheduler->cancellingException = std::current_exception(); +- if (context->cancellingException == nullptr) +- context->cancellingException = std::current_exception(); - } + // } catch (...) { -+ // if (thread.scheduler->cancellingException == nullptr) -+ // thread.scheduler->cancellingException = std::current_exception(); ++ // if (context->cancellingException == nullptr) ++ // context->cancellingException = std::current_exception(); + // } + // -- GODOT end -- thread.task = prevTask; add_dependencies(-1); } -@@ -291,8 +293,11 @@ namespace embree - size_t threadIndex = allocThreadIndex(); - condition.wait(mutex, [&] () { return hasRootTask.load(); }); - mutex.unlock(); -- std::exception_ptr except = thread_loop(threadIndex); -- if (except != nullptr) std::rethrow_exception(except); -+ // -- GODOT start -- -+ // std::exception_ptr except = thread_loop(threadIndex); -+ // if (except != nullptr) std::rethrow_exception(except); -+ thread_loop(threadIndex); -+ // -- GODOT end -- - } - - void TaskScheduler::reset() { -@@ -324,7 +329,10 @@ namespace embree - return thread->scheduler->cancellingException == nullptr; - } - -- std::exception_ptr TaskScheduler::thread_loop(size_t threadIndex) -+// -- GODOT start -- -+// std::exception_ptr TaskScheduler::thread_loop(size_t threadIndex) -+ void TaskScheduler::thread_loop(size_t threadIndex) -+// -- GODOT end -- - { - /* allocate thread structure */ - std::unique_ptr<Thread> mthread(new Thread(threadIndex,this)); // too large for stack allocation -@@ -347,9 +355,10 @@ namespace embree - swapThread(oldThread); - - /* remember exception to throw */ -- std::exception_ptr except = nullptr; -- if (cancellingException != nullptr) except = cancellingException; -- -+ // -- GODOT start -- -+ // std::exception_ptr except = nullptr; -+ // if (cancellingException != nullptr) except = cancellingException; -+ // -- GODOT end -- - /* wait for all threads to terminate */ - threadCounter--; - #if defined(__WIN32__) -@@ -367,7 +376,10 @@ namespace embree - yield(); - #endif - } -- return except; -+ // -- GODOT start -- -+ // return except; -+ return; -+ // -- GODOT end -- - } - - bool TaskScheduler::steal_from_other_threads(Thread& thread) diff --git a/thirdparty/embree/common/tasking/taskschedulerinternal.h b/thirdparty/embree/common/tasking/taskschedulerinternal.h -index 61a0e57c5b..6cc2495195 100644 +index 355648b3f8..e72d3b72ba 100644 --- a/thirdparty/embree/common/tasking/taskschedulerinternal.h +++ b/thirdparty/embree/common/tasking/taskschedulerinternal.h -@@ -123,7 +123,10 @@ namespace embree +@@ -130,8 +130,13 @@ namespace embree + __forceinline void* alloc(size_t bytes, size_t align = 64) { size_t ofs = bytes + ((align - stackPtr) & (align-1)); - if (stackPtr + ofs > CLOSURE_STACK_SIZE) +- if (stackPtr + ofs > CLOSURE_STACK_SIZE) - throw std::runtime_error("closure stack overflow"); -+ // -- GODOT start -- -+ // throw std::runtime_error("closure stack overflow"); ++ // -- GODOT start -- ++ // if (stackPtr + ofs > CLOSURE_STACK_SIZE) ++ // throw std::runtime_error("closure stack overflow"); ++ if (stackPtr + ofs > CLOSURE_STACK_SIZE) { + abort(); -+ // -- GODOT end -- ++ } ++ // -- GODOT end -- stackPtr += ofs; return &stack[stackPtr-bytes]; } -@@ -132,7 +135,10 @@ namespace embree - __forceinline void push_right(Thread& thread, const size_t size, const Closure& closure) +@@ -139,8 +144,13 @@ namespace embree + template<typename Closure> + __forceinline void push_right(Thread& thread, const size_t size, const Closure& closure, TaskGroupContext* context) { - if (right >= TASK_STACK_SIZE) +- if (right >= TASK_STACK_SIZE) - throw std::runtime_error("task stack overflow"); -+ // -- GODOT start -- -+ // throw std::runtime_error("task stack overflow"); -+ abort(); -+ // -- GODOT end -- ++ // -- GODOT start -- ++ // if (right >= TASK_STACK_SIZE) ++ // throw std::runtime_error("task stack overflow"); ++ if (right >= TASK_STACK_SIZE) { ++ abort(); ++ } ++ // -- GODOT end -- /* allocate new task on right side of stack */ size_t oldStackPtr = stackPtr; -@@ -238,7 +244,10 @@ namespace embree - void wait_for_threads(size_t threadCount); - - /*! thread loop for all worker threads */ -- std::exception_ptr thread_loop(size_t threadIndex); -+ // -- GODOT start -- -+ // std::exception_ptr thread_loop(size_t threadIndex); -+ void thread_loop(size_t threadIndex); -+ // -- GODOT end -- - - /*! steals a task from a different thread */ - bool steal_from_other_threads(Thread& thread); diff --git a/thirdparty/embree/kernels/bvh/bvh_statistics.cpp b/thirdparty/embree/kernels/bvh/bvh_statistics.cpp index 40f9043736..57f75bfd7e 100644 --- a/thirdparty/embree/kernels/bvh/bvh_statistics.cpp @@ -406,40 +348,94 @@ index 40f9043736..57f75bfd7e 100644 } return s; } +diff --git a/thirdparty/embree/kernels/common/alloc.h b/thirdparty/embree/kernels/common/alloc.h +index 2bd292de4d..840d48c327 100644 +--- a/thirdparty/embree/kernels/common/alloc.h ++++ b/thirdparty/embree/kernels/common/alloc.h +@@ -189,8 +189,13 @@ namespace embree + , atype(osAllocation ? EMBREE_OS_MALLOC : ALIGNED_MALLOC) + , primrefarray(device,0) + { +- if (osAllocation && useUSM) +- throw std::runtime_error("USM allocation cannot be combined with OS allocation."); ++ // -- GODOT start -- ++ // if (osAllocation && useUSM) ++ // throw std::runtime_error("USM allocation cannot be combined with OS allocation."); ++ if (osAllocation && useUSM) { ++ abort(); ++ } ++ // -- GODOT end -- + + for (size_t i=0; i<MAX_THREAD_USED_BLOCK_SLOTS; i++) + { +@@ -502,8 +507,13 @@ namespace embree + Block* myUsedBlocks = threadUsedBlocks[slot]; + if (myUsedBlocks) { + void* ptr = myUsedBlocks->malloc(device,bytes,align,partial); +- if (ptr == nullptr && !blockAllocation) +- throw std::bad_alloc(); ++ // -- GODOT start -- ++ // if (ptr == nullptr && !blockAllocation) ++ // throw std::bad_alloc(); ++ if (ptr == nullptr && !blockAllocation) { ++ abort(); ++ } ++ // -- GODOT end -- + if (ptr) return ptr; + } + diff --git a/thirdparty/embree/kernels/common/rtcore.cpp b/thirdparty/embree/kernels/common/rtcore.cpp -index 95a94319ec..a6ea55bfc4 100644 +index 8dc5d7045b..eb8d2c0a58 100644 --- a/thirdparty/embree/kernels/common/rtcore.cpp +++ b/thirdparty/embree/kernels/common/rtcore.cpp -@@ -198,7 +198,10 @@ RTC_NAMESPACE_BEGIN; +@@ -257,10 +257,17 @@ RTC_NAMESPACE_BEGIN; + RTC_TRACE(rtcSetSceneBuildQuality); + RTC_VERIFY_HANDLE(hscene); + RTC_ENTER_DEVICE(hscene); ++ // -- GODOT start -- ++ // if (quality != RTC_BUILD_QUALITY_LOW && ++ // quality != RTC_BUILD_QUALITY_MEDIUM && ++ // quality != RTC_BUILD_QUALITY_HIGH) ++ // throw std::runtime_error("invalid build quality"); if (quality != RTC_BUILD_QUALITY_LOW && quality != RTC_BUILD_QUALITY_MEDIUM && - quality != RTC_BUILD_QUALITY_HIGH) +- quality != RTC_BUILD_QUALITY_HIGH) - throw std::runtime_error("invalid build quality"); -+ // -- GODOT start -- -+ // throw std::runtime_error("invalid build quality"); ++ quality != RTC_BUILD_QUALITY_HIGH) { + abort(); -+ // -- GODOT end -- ++ } ++ // -- GODOT end -- scene->setBuildQuality(quality); RTC_CATCH_END2(scene); } -@@ -1351,7 +1354,10 @@ RTC_NAMESPACE_BEGIN; +@@ -1563,11 +1570,19 @@ RTC_API void rtcSetGeometryTransform(RTCGeometry hgeometry, unsigned int timeSte + RTC_TRACE(rtcSetGeometryBuildQuality); + RTC_VERIFY_HANDLE(hgeometry); + RTC_ENTER_DEVICE(hgeometry); ++ // -- GODOT start -- ++ // if (quality != RTC_BUILD_QUALITY_LOW && ++ // quality != RTC_BUILD_QUALITY_MEDIUM && ++ // quality != RTC_BUILD_QUALITY_HIGH && ++ // quality != RTC_BUILD_QUALITY_REFIT) ++ // throw std::runtime_error("invalid build quality"); + if (quality != RTC_BUILD_QUALITY_LOW && quality != RTC_BUILD_QUALITY_MEDIUM && quality != RTC_BUILD_QUALITY_HIGH && - quality != RTC_BUILD_QUALITY_REFIT) +- quality != RTC_BUILD_QUALITY_REFIT) - throw std::runtime_error("invalid build quality"); -+ // -- GODOT start -- -+ // throw std::runtime_error("invalid build quality"); ++ quality != RTC_BUILD_QUALITY_REFIT) { + abort(); -+ // -- GODOT end -- ++ } ++ // -- GODOT end -- geometry->setBuildQuality(quality); RTC_CATCH_END2(geometry); } diff --git a/thirdparty/embree/kernels/common/rtcore.h b/thirdparty/embree/kernels/common/rtcore.h -index 4e4b24e9c2..ac58a84d6f 100644 +index 73a061de11..47526482c1 100644 --- a/thirdparty/embree/kernels/common/rtcore.h +++ b/thirdparty/embree/kernels/common/rtcore.h -@@ -25,6 +25,13 @@ namespace embree - #endif +@@ -13,13 +13,13 @@ namespace embree + __forceinline bool isIncoherent(RTCRayQueryFlags flags) { return (flags & RTC_RAY_QUERY_FLAG_COHERENT) == RTC_RAY_QUERY_FLAG_INCOHERENT; } /*! Macros used in the rtcore API implementation */ +// -- GODOT start -- @@ -447,21 +443,18 @@ index 4e4b24e9c2..ac58a84d6f 100644 +#define RTC_CATCH_END(device) +#define RTC_CATCH_END2(scene) +#define RTC_CATCH_END2_FALSE(scene) return false; -+ -+#if 0 + #if 0 +-# define RTC_CATCH_BEGIN +-# define RTC_CATCH_END(device) +-# define RTC_CATCH_END2(scene) +-# define RTC_CATCH_END2_FALSE(scene) return false; +-#else +- ++// -- GODOT end -- #define RTC_CATCH_BEGIN try { #define RTC_CATCH_END(device) \ -@@ -71,6 +78,8 @@ namespace embree - Device::process_error(device,RTC_ERROR_UNKNOWN,"unknown exception caught"); \ - return false; \ - } -+#endif -+// -- GODOT end -- - - #define RTC_VERIFY_HANDLE(handle) \ - if (handle == nullptr) { \ -@@ -97,6 +106,8 @@ namespace embree +@@ -94,6 +94,8 @@ namespace embree #define RTC_TRACE(x) #endif @@ -470,7 +463,7 @@ index 4e4b24e9c2..ac58a84d6f 100644 /*! used to throw embree API errors */ struct rtcore_error : public std::exception { -@@ -112,14 +123,18 @@ namespace embree +@@ -109,14 +111,18 @@ namespace embree RTCError error; std::string str; }; @@ -490,36 +483,61 @@ index 4e4b24e9c2..ac58a84d6f 100644 +// -- GODOT end -- #define RTC_BUILD_ARGUMENTS_HAS(settings,member) \ - (settings.byteSize > (offsetof(RTCBuildArguments,member)+sizeof(settings.member))) + (settings.byteSize > (offsetof(RTCBuildArguments,member)+sizeof(settings.member))) diff --git a/thirdparty/embree/kernels/common/scene.cpp b/thirdparty/embree/kernels/common/scene.cpp -index ad1916c54e..65d31d0f81 100644 +index fda8dd938a..10cb3c4bec 100644 --- a/thirdparty/embree/kernels/common/scene.cpp +++ b/thirdparty/embree/kernels/common/scene.cpp -@@ -790,16 +790,18 @@ namespace embree +@@ -894,16 +894,18 @@ namespace embree } /* initiate build */ - try { + // -- GODOT start -- + // try { - scheduler->spawn_root([&]() { commit_task(); Lock<MutexSys> lock(schedulerMutex); this->scheduler = nullptr; }, 1, !join); + TaskScheduler::TaskGroupContext context; + scheduler->spawn_root([&]() { commit_task(); Lock<MutexSys> lock(taskGroup->schedulerMutex); taskGroup->scheduler = nullptr; }, &context, 1, !join); - } - catch (...) { - accels_clear(); -- updateInterface(); -- Lock<MutexSys> lock(schedulerMutex); -- this->scheduler = nullptr; +- Lock<MutexSys> lock(taskGroup->schedulerMutex); +- taskGroup->scheduler = nullptr; - throw; - } + // } + // catch (...) { + // accels_clear(); -+ // updateInterface(); -+ // Lock<MutexSys> lock(schedulerMutex); -+ // this->scheduler = nullptr; ++ // Lock<MutexSys> lock(taskGroup->schedulerMutex); ++ // taskGroup->scheduler = nullptr; + // throw; + // } + // -- GODOT end -- } #endif +diff --git a/thirdparty/embree/kernels/common/state.cpp b/thirdparty/embree/kernels/common/state.cpp +index 4e3ab6ddfb..1d73ae9629 100644 +--- a/thirdparty/embree/kernels/common/state.cpp ++++ b/thirdparty/embree/kernels/common/state.cpp +@@ -194,13 +194,15 @@ namespace embree + bool State::parseFile(const FileName& fileName) + { + Ref<Stream<int> > file; +- try { ++ // -- GODOT start -- ++ // try { + file = new FileStream(fileName); +- } +- catch (std::runtime_error& e) { +- (void) e; +- return false; +- } ++ // } ++ // catch (std::runtime_error& e) { ++ // (void) e; ++ // return false; ++ // } ++ // -- GODOT end -- + + std::vector<std::string> syms; + for (size_t i=0; i<sizeof(symbols)/sizeof(void*); i++) |