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.cpp34
1 files changed, 25 insertions, 9 deletions
diff --git a/intern/cycles/device/cpu/kernel_thread_globals.cpp b/intern/cycles/device/cpu/kernel_thread_globals.cpp
index 89545399602..90880f5e5f7 100644
--- a/intern/cycles/device/cpu/kernel_thread_globals.cpp
+++ b/intern/cycles/device/cpu/kernel_thread_globals.cpp
@@ -3,10 +3,7 @@
#include "device/cpu/kernel_thread_globals.h"
-// clang-format off
-#include "kernel/osl/shader.h"
#include "kernel/osl/globals.h"
-// clang-format on
#include "util/profiling.h"
@@ -17,25 +14,35 @@ 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
- OSLShader::thread_init(this, reinterpret_cast<OSLGlobals *>(osl_globals_memory));
+ 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()
{
#ifdef WITH_OSL
- OSLShader::thread_free(this);
+ 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
}
@@ -47,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()