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:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2019-05-14 16:05:24 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2019-05-14 16:06:23 +0300
commitb63ffa89199a941e2f5fd26cad5c9b60087a6a20 (patch)
tree4597da11d93c5c7d330a18c800a87cae093705ac /intern/cycles
parent0dd5281ab295361bea348874cf841a5937352ba3 (diff)
Fix Cycles build error after recent changes
We need to do aligned alloc of the services instead of globals now since the concurrent map moved there.
Diffstat (limited to 'intern/cycles')
-rw-r--r--intern/cycles/device/device_cpu.cpp16
-rw-r--r--intern/cycles/render/osl.cpp6
-rw-r--r--intern/cycles/util/util_aligned_malloc.h4
3 files changed, 11 insertions, 15 deletions
diff --git a/intern/cycles/device/device_cpu.cpp b/intern/cycles/device/device_cpu.cpp
index 5d279ebb965..837a8186064 100644
--- a/intern/cycles/device/device_cpu.cpp
+++ b/intern/cycles/device/device_cpu.cpp
@@ -43,7 +43,6 @@
#include "render/buffers.h"
#include "render/coverage.h"
-#include "util/util_aligned_malloc.h"
#include "util/util_debug.h"
#include "util/util_foreach.h"
#include "util/util_function.h"
@@ -166,7 +165,7 @@ class CPUDevice : public Device {
bool need_texture_info;
#ifdef WITH_OSL
- OSLGlobals *osl_globals;
+ OSLGlobals osl_globals;
#endif
bool use_split_kernel;
@@ -283,9 +282,7 @@ class CPUDevice : public Device {
}
#ifdef WITH_OSL
- /* Must use aligned malloc due to concurrent hash map. */
- osl_globals = util_aligned_new<OSLGlobals>();
- kernel_globals.osl = osl_globals;
+ kernel_globals.osl = &osl_globals;
#endif
use_split_kernel = DebugFlags().cpu.split_kernel;
if (use_split_kernel) {
@@ -320,9 +317,6 @@ class CPUDevice : public Device {
~CPUDevice()
{
-#ifdef WITH_OSL
- util_aligned_delete(osl_globals);
-#endif
task_pool.stop();
texture_info.free();
}
@@ -498,7 +492,7 @@ class CPUDevice : public Device {
void *osl_memory()
{
#ifdef WITH_OSL
- return osl_globals;
+ return &osl_globals;
#else
return NULL;
#endif
@@ -987,7 +981,7 @@ class CPUDevice : public Device {
KernelGlobals kg = kernel_globals;
#ifdef WITH_OSL
- OSLShader::thread_init(&kg, &kernel_globals, osl_globals);
+ OSLShader::thread_init(&kg, &kernel_globals, &osl_globals);
#endif
for (int sample = 0; sample < task.num_samples; sample++) {
for (int x = task.shader_x; x < task.shader_x + task.shader_w; x++)
@@ -1059,7 +1053,7 @@ class CPUDevice : public Device {
kg.decoupled_volume_steps_index = 0;
kg.coverage_asset = kg.coverage_object = kg.coverage_material = NULL;
#ifdef WITH_OSL
- OSLShader::thread_init(&kg, &kernel_globals, osl_globals);
+ OSLShader::thread_init(&kg, &kernel_globals, &osl_globals);
#endif
return kg;
}
diff --git a/intern/cycles/render/osl.cpp b/intern/cycles/render/osl.cpp
index 4bc18e53c9b..6f927bd5c42 100644
--- a/intern/cycles/render/osl.cpp
+++ b/intern/cycles/render/osl.cpp
@@ -30,6 +30,7 @@
# include "kernel/osl/osl_services.h"
# include "kernel/osl/osl_shader.h"
+# include "util/util_aligned_malloc.h"
# include "util/util_foreach.h"
# include "util/util_logging.h"
# include "util/util_md5.h"
@@ -224,7 +225,8 @@ void OSLShaderManager::shading_system_init()
thread_scoped_lock lock(ss_shared_mutex);
if (ss_shared_users == 0) {
- services_shared = new OSLRenderServices(ts_shared);
+ /* Must use aligned new due to concurrent hash map. */
+ services_shared = util_aligned_new<OSLRenderServices>(ts_shared);
string shader_path = path_get("shader");
# ifdef _WIN32
@@ -293,7 +295,7 @@ void OSLShaderManager::shading_system_free()
delete ss_shared;
ss_shared = NULL;
- delete services_shared;
+ util_aligned_delete(services_shared);
services_shared = NULL;
}
diff --git a/intern/cycles/util/util_aligned_malloc.h b/intern/cycles/util/util_aligned_malloc.h
index 7115e4cb0c6..df7d93c056d 100644
--- a/intern/cycles/util/util_aligned_malloc.h
+++ b/intern/cycles/util/util_aligned_malloc.h
@@ -31,10 +31,10 @@ void *util_aligned_malloc(size_t size, int alignment);
void util_aligned_free(void *ptr);
/* Aligned new operator. */
-template<typename T> T *util_aligned_new()
+template<typename T, typename... Args> T *util_aligned_new(Args... args)
{
void *mem = util_aligned_malloc(sizeof(T), alignof(T));
- return new (mem) T();
+ return new (mem) T(args...);
}
template<typename T> void util_aligned_delete(T *t)