123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525 |
- 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
- --- a/thirdparty/embree/common/algorithms/parallel_reduce.h
- +++ b/thirdparty/embree/common/algorithms/parallel_reduce.h
- @@ -58,15 +58,19 @@ namespace embree
- const Value v = tbb::parallel_reduce(tbb::blocked_range<Index>(first,last,minStepSize),identity,
- [&](const tbb::blocked_range<Index>& r, const Value& start) { return reduction(start,func(range<Index>(r.begin(),r.end()))); },
- reduction,context);
- - if (context.is_group_execution_cancelled())
- - throw std::runtime_error("task cancelled");
- + // -- GODOT start --
- + // if (context.is_group_execution_cancelled())
- + // throw std::runtime_error("task cancelled");
- + // -- GODOT end --
- return v;
- #else
- const Value v = tbb::parallel_reduce(tbb::blocked_range<Index>(first,last,minStepSize),identity,
- [&](const tbb::blocked_range<Index>& r, const Value& start) { return reduction(start,func(range<Index>(r.begin(),r.end()))); },
- reduction);
- - if (tbb::task::self().is_cancelled())
- - throw std::runtime_error("task cancelled");
- + // -- GODOT start --
- + // if (tbb::task::self().is_cancelled())
- + // throw std::runtime_error("task cancelled");
- + // -- GODOT end --
- return v;
- #endif
- #else // TASKING_PPL
- diff --git a/thirdparty/embree/common/lexers/stringstream.cpp b/thirdparty/embree/common/lexers/stringstream.cpp
- index 42ffb10176..a037869506 100644
- --- a/thirdparty/embree/common/lexers/stringstream.cpp
- +++ b/thirdparty/embree/common/lexers/stringstream.cpp
- @@ -39,7 +39,10 @@ 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();
- + // -- 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
- --- a/thirdparty/embree/common/sys/alloc.cpp
- +++ b/thirdparty/embree/common/sys/alloc.cpp
- @@ -21,7 +21,10 @@ namespace embree
- void* ptr = _mm_malloc(size,align);
-
- if (size != 0 && ptr == nullptr)
- - throw std::bad_alloc();
- + // -- GODOT start --
- + // throw std::bad_alloc();
- + abort();
- + // -- GODOT end --
-
- return ptr;
- }
- @@ -128,7 +131,10 @@ 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();
- + // -- GODOT end --
- hugepages = false;
- return ptr;
- }
- @@ -145,7 +151,10 @@ namespace embree
- return bytesOld;
-
- if (!VirtualFree((char*)ptr+bytesNew,bytesOld-bytesNew,MEM_DECOMMIT))
- - throw std::bad_alloc();
- + // -- GODOT start --
- + // throw std::bad_alloc();
- + abort();
- + // -- GODOT end --
-
- return bytesNew;
- }
- @@ -156,7 +165,10 @@ namespace embree
- return;
-
- if (!VirtualFree(ptr,0,MEM_RELEASE))
- - throw std::bad_alloc();
- + // -- GODOT start --
- + // throw std::bad_alloc();
- + abort();
- + // -- GODOT end --
- }
-
- void os_advise(void *ptr, size_t bytes)
- @@ -260,7 +272,10 @@ 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();
- + // -- GODOT end --
- hugepages = false;
-
- /* advise huge page hint for THP */
- @@ -277,7 +292,10 @@ namespace embree
- return bytesOld;
-
- if (munmap((char*)ptr+bytesNew,bytesOld-bytesNew) == -1)
- - throw std::bad_alloc();
- + // -- GODOT start --
- + // throw std::bad_alloc();
- + abort();
- + // -- GODOT end --
-
- return bytesNew;
- }
- @@ -291,7 +309,10 @@ namespace embree
- const size_t pageSize = hugepages ? PAGE_SIZE_2M : PAGE_SIZE_4K;
- bytes = (bytes+pageSize-1) & ~(pageSize-1);
- if (munmap(ptr,bytes) == -1)
- - throw std::bad_alloc();
- + // -- GODOT start --
- + // throw std::bad_alloc();
- + abort();
- + // -- GODOT end --
- }
-
- /* hint for transparent huge pages (THP) */
- diff --git a/thirdparty/embree/common/sys/platform.h b/thirdparty/embree/common/sys/platform.h
- index be3ec36436..728bf6ed7d 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
-
- #if defined(DEBUG) // only report file and line in debug mode
- + // -- GODOT start --
- + // #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));
- + printf("%s (%d): %s", __FILE__, __LINE__, std::string(str).c_str()), abort();
- + // -- GODOT end --
- #else
- + // -- GODOT start --
- + // #define THROW_RUNTIME_ERROR(str)
- + // throw std::runtime_error(str);
- #define THROW_RUNTIME_ERROR(str) \
- - throw std::runtime_error(str);
- + abort();
- + // -- GODOT end --
- #endif
-
- #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
- --- a/thirdparty/embree/common/tasking/taskschedulerinternal.cpp
- +++ b/thirdparty/embree/common/tasking/taskschedulerinternal.cpp
- @@ -48,13 +48,15 @@ namespace embree
- {
- Task* prevTask = thread.task;
- thread.task = this;
- - try {
- - if (thread.scheduler->cancellingException == nullptr)
- + // -- GODOT start --
- + // try {
- + // if (thread.scheduler->cancellingException == nullptr)
- closure->execute();
- - } catch (...) {
- - if (thread.scheduler->cancellingException == nullptr)
- - thread.scheduler->cancellingException = std::current_exception();
- - }
- + // } catch (...) {
- + // if (thread.scheduler->cancellingException == nullptr)
- + // thread.scheduler->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
- --- a/thirdparty/embree/common/tasking/taskschedulerinternal.h
- +++ b/thirdparty/embree/common/tasking/taskschedulerinternal.h
- @@ -123,7 +123,10 @@ namespace embree
- {
- size_t ofs = bytes + ((align - stackPtr) & (align-1));
- if (stackPtr + ofs > CLOSURE_STACK_SIZE)
- - throw std::runtime_error("closure stack overflow");
- + // -- GODOT start --
- + // throw std::runtime_error("closure stack overflow");
- + abort();
- + // -- 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)
- {
- if (right >= TASK_STACK_SIZE)
- - throw std::runtime_error("task stack overflow");
- + // -- GODOT start --
- + // throw std::runtime_error("task stack overflow");
- + 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
- +++ b/thirdparty/embree/kernels/bvh/bvh_statistics.cpp
- @@ -150,7 +150,10 @@ namespace embree
- }
- }
- else {
- - throw std::runtime_error("not supported node type in bvh_statistics");
- + // -- GODOT start --
- + // throw std::runtime_error("not supported node type in bvh_statistics");
- + abort();
- + // -- GODOT end --
- }
- return s;
- }
- diff --git a/thirdparty/embree/kernels/common/rtcore.cpp b/thirdparty/embree/kernels/common/rtcore.cpp
- index 95a94319ec..a6ea55bfc4 100644
- --- a/thirdparty/embree/kernels/common/rtcore.cpp
- +++ b/thirdparty/embree/kernels/common/rtcore.cpp
- @@ -198,7 +198,10 @@ RTC_NAMESPACE_BEGIN;
- if (quality != RTC_BUILD_QUALITY_LOW &&
- quality != RTC_BUILD_QUALITY_MEDIUM &&
- quality != RTC_BUILD_QUALITY_HIGH)
- - throw std::runtime_error("invalid build quality");
- + // -- GODOT start --
- + // throw std::runtime_error("invalid build quality");
- + abort();
- + // -- GODOT end --
- scene->setBuildQuality(quality);
- RTC_CATCH_END2(scene);
- }
- @@ -1351,7 +1354,10 @@ RTC_NAMESPACE_BEGIN;
- quality != RTC_BUILD_QUALITY_MEDIUM &&
- quality != RTC_BUILD_QUALITY_HIGH &&
- quality != RTC_BUILD_QUALITY_REFIT)
- - throw std::runtime_error("invalid build quality");
- + // -- GODOT start --
- + // throw std::runtime_error("invalid build quality");
- + abort();
- + // -- 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
- --- a/thirdparty/embree/kernels/common/rtcore.h
- +++ b/thirdparty/embree/kernels/common/rtcore.h
- @@ -25,6 +25,13 @@ namespace embree
- #endif
-
- /*! Macros used in the rtcore API implementation */
- +// -- GODOT start --
- +#define RTC_CATCH_BEGIN
- +#define RTC_CATCH_END(device)
- +#define RTC_CATCH_END2(scene)
- +#define RTC_CATCH_END2_FALSE(scene) return false;
- +
- +#if 0
- #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
- #define RTC_TRACE(x)
- #endif
-
- +// -- GODOT start --
- +#if 0
- /*! used to throw embree API errors */
- struct rtcore_error : public std::exception
- {
- @@ -112,14 +123,18 @@ namespace embree
- RTCError error;
- std::string str;
- };
- +#endif
-
- #if defined(DEBUG) // only report file and line in debug mode
- #define throw_RTCError(error,str) \
- - throw rtcore_error(error,std::string(__FILE__) + " (" + toString(__LINE__) + "): " + std::string(str));
- + printf("%s (%d): %s", __FILE__, __LINE__, std::string(str).c_str()), abort();
- + // throw rtcore_error(error,std::string(__FILE__) + " (" + toString(__LINE__) + "): " + std::string(str));
- #else
- #define throw_RTCError(error,str) \
- - throw rtcore_error(error,str);
- + abort();
- + // throw rtcore_error(error,str);
- #endif
- +// -- GODOT end --
-
- #define RTC_BUILD_ARGUMENTS_HAS(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
- --- a/thirdparty/embree/kernels/common/scene.cpp
- +++ b/thirdparty/embree/kernels/common/scene.cpp
- @@ -790,16 +790,18 @@ namespace embree
- }
-
- /* initiate build */
- - try {
- + // -- GODOT start --
- + // try {
- scheduler->spawn_root([&]() { commit_task(); Lock<MutexSys> lock(schedulerMutex); this->scheduler = nullptr; }, 1, !join);
- - }
- - catch (...) {
- - accels_clear();
- - updateInterface();
- - Lock<MutexSys> lock(schedulerMutex);
- - this->scheduler = nullptr;
- - throw;
- - }
- + // }
- + // catch (...) {
- + // accels_clear();
- + // updateInterface();
- + // Lock<MutexSys> lock(schedulerMutex);
- + // this->scheduler = nullptr;
- + // throw;
- + // }
- + // -- GODOT end --
- }
-
- #endif
|