Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'intern/cycles/device/cpu/kernel_thread_globals.cpp')
-rw-r--r--intern/cycles/device/cpu/kernel_thread_globals.cpp27
1 files changed, 23 insertions, 4 deletions
diff --git a/intern/cycles/device/cpu/kernel_thread_globals.cpp b/intern/cycles/device/cpu/kernel_thread_globals.cpp
index 99af1525d92..90880f5e5f7 100644
--- a/intern/cycles/device/cpu/kernel_thread_globals.cpp
+++ b/intern/cycles/device/cpu/kernel_thread_globals.cpp
@@ -14,19 +14,23 @@ CPUKernelThreadGlobals::CPUKernelThreadGlobals(const KernelGlobalsCPU &kernel_gl
Profiler &cpu_profiler)
: KernelGlobalsCPU(kernel_globals), cpu_profiler_(cpu_profiler)
{
- reset_runtime_memory();
+ clear_runtime_pointers();
#ifdef WITH_OSL
OSLGlobals::thread_init(this, static_cast<OSLGlobals *>(osl_globals_memory));
#else
(void)osl_globals_memory;
#endif
+
+#ifdef WITH_PATH_GUIDING
+ opgl_path_segment_storage = new openpgl::cpp::PathSegmentStorage();
+#endif
}
CPUKernelThreadGlobals::CPUKernelThreadGlobals(CPUKernelThreadGlobals &&other) noexcept
: KernelGlobalsCPU(std::move(other)), cpu_profiler_(other.cpu_profiler_)
{
- other.reset_runtime_memory();
+ other.clear_runtime_pointers();
}
CPUKernelThreadGlobals::~CPUKernelThreadGlobals()
@@ -34,6 +38,12 @@ CPUKernelThreadGlobals::~CPUKernelThreadGlobals()
#ifdef WITH_OSL
OSLGlobals::thread_free(this);
#endif
+
+#ifdef WITH_PATH_GUIDING
+ delete opgl_path_segment_storage;
+ delete opgl_surface_sampling_distribution;
+ delete opgl_volume_sampling_distribution;
+#endif
}
CPUKernelThreadGlobals &CPUKernelThreadGlobals::operator=(CPUKernelThreadGlobals &&other)
@@ -44,16 +54,25 @@ CPUKernelThreadGlobals &CPUKernelThreadGlobals::operator=(CPUKernelThreadGlobals
*static_cast<KernelGlobalsCPU *>(this) = *static_cast<KernelGlobalsCPU *>(&other);
- other.reset_runtime_memory();
+ other.clear_runtime_pointers();
return *this;
}
-void CPUKernelThreadGlobals::reset_runtime_memory()
+void CPUKernelThreadGlobals::clear_runtime_pointers()
{
#ifdef WITH_OSL
osl = nullptr;
#endif
+
+#ifdef WITH_PATH_GUIDING
+ opgl_sample_data_storage = nullptr;
+ opgl_guiding_field = nullptr;
+
+ opgl_path_segment_storage = nullptr;
+ opgl_surface_sampling_distribution = nullptr;
+ opgl_volume_sampling_distribution = nullptr;
+#endif
}
void CPUKernelThreadGlobals::start_profiling()