diff options
Diffstat (limited to 'intern/cycles/device/device_cpu.cpp')
-rw-r--r-- | intern/cycles/device/device_cpu.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/intern/cycles/device/device_cpu.cpp b/intern/cycles/device/device_cpu.cpp index ee3a3ddea64..d37ed046c1e 100644 --- a/intern/cycles/device/device_cpu.cpp +++ b/intern/cycles/device/device_cpu.cpp @@ -24,6 +24,10 @@ # include <OSL/oslexec.h> #endif +#ifdef WITH_EMBREE +# include <embree3/rtcore.h> +#endif + #include "device/device.h" #include "device/device_denoising.h" #include "device/device_intern.h" @@ -183,6 +187,9 @@ class CPUDevice : public Device { oidn::FilterRef oidn_filter; #endif thread_spin_lock oidn_task_lock; +#ifdef WITH_EMBREE + RTCDevice embree_device; +#endif bool use_split_kernel; @@ -302,6 +309,9 @@ class CPUDevice : public Device { #ifdef WITH_OSL kernel_globals.osl = &osl_globals; #endif +#ifdef WITH_EMBREE + embree_device = rtcNewDevice("verbose=0"); +#endif use_split_kernel = DebugFlags().cpu.split_kernel; if (use_split_kernel) { VLOG(1) << "Will be using split kernel."; @@ -339,6 +349,9 @@ class CPUDevice : public Device { ~CPUDevice() { +#ifdef WITH_EMBREE + rtcReleaseDevice(embree_device); +#endif task_pool.cancel(); texture_info.free(); } @@ -523,6 +536,15 @@ class CPUDevice : public Device { #endif } + void *bvh_device() const override + { +#ifdef WITH_EMBREE + return embree_device; +#else + return NULL; +#endif + } + void thread_run(DeviceTask &task) { if (task.type == DeviceTask::RENDER) |