[Bf-blender-cvs] [a577499c752] master: Merge branch 'blender2.7'
Brecht Van Lommel
noreply at git.blender.org
Fri Mar 1 19:34:52 CET 2019
Commit: a577499c7521c5fcfaefd58ec1d8940886563adc
Author: Brecht Van Lommel
Date: Fri Mar 1 19:29:26 2019 +0100
Branches: master
https://developer.blender.org/rBa577499c7521c5fcfaefd58ec1d8940886563adc
Merge branch 'blender2.7'
===================================================================
===================================================================
diff --cc build_files/cmake/platform/platform_apple.cmake
index 6c0257b10a0,c9acaa25216..56ec5ad0df9
--- a/build_files/cmake/platform/platform_apple.cmake
+++ b/build_files/cmake/platform/platform_apple.cmake
@@@ -389,20 -390,15 +389,20 @@@ if(WITH_OPENMP
message(STATUS "Using ${LIBDIR}/openmp for OpenMP")
set(OPENMP_CUSTOM ON)
set(OPENMP_FOUND ON)
- set(OpenMP_C_FLAGS "-Xclang -fopenmp -I${LIBDIR}/openmp/include")
- set(OpenMP_CXX_FLAGS "-Xclang -fopenmp -I${LIBDIR}/openmp/include")
- set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L${LIBDIR}/openmp/lib -lomp")
+ set(OpenMP_C_FLAGS "-Xclang -fopenmp -I\"${LIBDIR}/openmp/include\"")
+ set(OpenMP_CXX_FLAGS "-Xclang -fopenmp -I\"${LIBDIR}/openmp/include\"")
+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L\"${LIBDIR}/openmp/lib\" -lomp")
# Copy libomp.dylib to allow executables like datatoc to work.
+ if(CMAKE_MAKE_PROGRAM MATCHES "xcodebuild")
+ set(OPENMP_DYLIB_AUX_PATH "${CMAKE_BINARY_DIR}/bin")
+ else()
+ set(OPENMP_DYLIB_AUX_PATH "${CMAKE_BINARY_DIR}")
+ endif()
+
execute_process(
- COMMAND mkdir -p ${CMAKE_BINARY_DIR}/Resources/lib
- COMMAND cp -p ${LIBDIR}/openmp/lib/libomp.dylib ${CMAKE_BINARY_DIR}/Resources/lib/libomp.dylib
- )
+ COMMAND mkdir -p ${OPENMP_DYLIB_AUX_PATH}/Resources/lib
+ COMMAND cp -p ${LIBDIR}/openmp/lib/libomp.dylib ${OPENMP_DYLIB_AUX_PATH}/Resources/lib/libomp.dylib)
endif()
endif()
diff --cc source/blender/nodes/composite/nodes/node_composite_image.c
index 870cb5554a0,4d0e63a7fdc..8c0a277668f
--- a/source/blender/nodes/composite/nodes/node_composite_image.c
+++ b/source/blender/nodes/composite/nodes/node_composite_image.c
@@@ -206,7 -205,7 +206,7 @@@ void node_cmp_rlayers_register_pass(bNo
}
}
- static void cmp_node_rlayer_create_outputs_cb(RenderEngine *UNUSED(engine), Scene *scene, ViewLayer *view_layer,
-static void cmp_node_rlayer_create_outputs_cb(void *UNUSED(userdata), Scene *scene, SceneRenderLayer *srl,
++static void cmp_node_rlayer_create_outputs_cb(void *UNUSED(userdata), Scene *scene, ViewLayer *view_layer,
const char *name, int UNUSED(channels), const char *UNUSED(chanid), int type)
{
/* Register the pass in all scenes that have a render layer node for this layer.
@@@ -238,7 -235,7 +238,7 @@@ static void cmp_node_rlayer_create_outp
node->storage = data;
RenderEngine *engine = RE_engine_create(engine_type);
- RE_engine_update_render_passes(engine, scene, view_layer, cmp_node_rlayer_create_outputs_cb);
- RE_engine_update_render_passes(engine, scene, srl, cmp_node_rlayer_create_outputs_cb, NULL);
++ RE_engine_update_render_passes(engine, scene, view_layer, cmp_node_rlayer_create_outputs_cb, NULL);
RE_engine_free(engine);
MEM_freeN(data);
diff --cc source/blender/render/extern/include/RE_engine.h
index 9e0ac0087ee,a4ec7ec6aa1..cdd696e56bb
--- a/source/blender/render/extern/include/RE_engine.h
+++ b/source/blender/render/extern/include/RE_engine.h
@@@ -100,7 -96,7 +100,7 @@@ typedef struct RenderEngineType
ExtensionRNA ext;
} RenderEngineType;
- typedef void (*update_render_passes_cb_t)(struct RenderEngine *engine, struct Scene *scene, struct ViewLayer *view_layer,
-typedef void (*update_render_passes_cb_t)(void *userdata, struct Scene *scene, struct SceneRenderLayer *srl,
++typedef void (*update_render_passes_cb_t)(void *userdata, struct Scene *scene, struct ViewLayer *view_layer,
const char *name, int channels, const char *chanid, int type);
typedef struct RenderEngine {
@@@ -167,9 -165,9 +168,9 @@@ bool RE_engine_is_external(struct Rende
void RE_engine_frame_set(struct RenderEngine *engine, int frame, float subframe);
-void RE_engine_update_render_passes(struct RenderEngine *engine, struct Scene *scene, struct SceneRenderLayer *srl,
+void RE_engine_update_render_passes(struct RenderEngine *engine, struct Scene *scene, struct ViewLayer *view_layer,
- update_render_passes_cb_t callback);
+ update_render_passes_cb_t callback, void *callback_data);
-void RE_engine_register_pass(struct RenderEngine *engine, struct Scene *scene, struct SceneRenderLayer *srl,
+void RE_engine_register_pass(struct RenderEngine *engine, struct Scene *scene, struct ViewLayer *view_layer,
const char *name, int channels, const char *chanid, int type);
/* Engine Types */
diff --cc source/blender/render/intern/include/render_result.h
index 687927027f0,8e3f9c1abd4..d7636a150ef
--- a/source/blender/render/intern/include/render_result.h
+++ b/source/blender/render/intern/include/render_result.h
@@@ -85,7 -87,7 +85,6 @@@ struct RenderPass *gp_add_pass(struct R
void render_result_exr_file_merge(struct RenderResult *rr, struct RenderResult *rrpart, const char *viewname);
void render_result_exr_file_path(struct Scene *scene, const char *layname, int sample, char *filepath);
--int render_result_exr_file_read_sample(struct Render *re, int sample, struct RenderEngine *engine);
int render_result_exr_file_read_path(struct RenderResult *rr, struct RenderLayer *rl_single, const char *filepath);
/* EXR cache */
diff --cc source/blender/render/intern/source/external_engine.c
index f437ec90db9,8401eae0e24..153d41627c9
--- a/source/blender/render/intern/source/external_engine.c
+++ b/source/blender/render/intern/source/external_engine.c
@@@ -794,17 -771,20 +791,20 @@@ int RE_engine_render(Render *re, int do
return 1;
}
-void RE_engine_update_render_passes(struct RenderEngine *engine, struct Scene *scene, struct SceneRenderLayer *srl,
+void RE_engine_update_render_passes(struct RenderEngine *engine, struct Scene *scene, struct ViewLayer *view_layer,
- update_render_passes_cb_t callback)
+ update_render_passes_cb_t callback, void *callback_data)
{
- if (!(scene && srl && engine && callback && engine->type->update_render_passes)) {
+ if (!(scene && view_layer && engine && callback && engine->type->update_render_passes)) {
return;
}
BLI_mutex_lock(&engine->update_render_passes_mutex);
engine->update_render_passes_cb = callback;
+ engine->update_render_passes_data = callback_data;
- engine->type->update_render_passes(engine, scene, srl);
+ engine->type->update_render_passes(engine, scene, view_layer);
+ engine->update_render_passes_cb = NULL;
+ engine->update_render_passes_data = NULL;
BLI_mutex_unlock(&engine->update_render_passes_mutex);
}
@@@ -816,20 -796,5 +816,20 @@@ void RE_engine_register_pass(struct Ren
return;
}
- engine->update_render_passes_cb(engine, scene, view_layer, name, channels, chanid, type);
- engine->update_render_passes_cb(engine->update_render_passes_data, scene, srl, name, channels, chanid, type);
++ engine->update_render_passes_cb(engine->update_render_passes_data, scene, view_layer, name, channels, chanid, type);
+}
+
+void RE_engine_free_blender_memory(RenderEngine *engine)
+{
+ /* Weak way to save memory, but not crash grease pencil.
+ *
+ * TODO(sergey): Find better solution for this.
+ * TODO(sergey): Try to find solution which does not involve looping over
+ * all the objects.
+ */
+ if (DRW_render_check_grease_pencil(engine->depsgraph)) {
+ return;
+ }
+ DEG_graph_free(engine->depsgraph);
+ engine->depsgraph = NULL;
}
diff --cc source/blender/render/intern/source/render_result.c
index 4809c643522,24430df31d6..6e0eaa68b82
--- a/source/blender/render/intern/source/render_result.c
+++ b/source/blender/render/intern/source/render_result.c
@@@ -1058,19 -1108,29 +1058,28 @@@ void render_result_save_empty_result_ti
}
}
- static void render_result_register_pass_cb(RenderEngine *engine, Scene *UNUSED(scene), ViewLayer *view_layer,
- const char *name, int channels, const char *chanid, int UNUSED(type))
+ /* Compute list of passes needed by render engine. */
-static void templates_register_pass_cb(void *userdata, Scene *UNUSED(scene), SceneRenderLayer *UNUSED(srl),
++static void templates_register_pass_cb(void *userdata, Scene *UNUSED(scene), ViewLayer *UNUSED(view_layer),
+ const char *name, int channels, const char *chan_id, int UNUSED(type))
{
- RE_engine_add_pass(engine, name, channels, chanid, view_layer->name);
+ ListBase *templates = userdata;
+ RenderPass *pass = MEM_callocN(sizeof(RenderPass), "RenderPassTemplate");
+
+ pass->channels = channels;
+ BLI_strncpy(pass->name, name, sizeof(pass->name));
+ BLI_strncpy(pass->chan_id, chan_id, sizeof(pass->chan_id));
+
+ BLI_addtail(templates, pass);
}
- static void render_result_create_all_passes(RenderEngine *engine, Render *re, RenderLayer *rl)
+ static void render_result_get_pass_templates(RenderEngine *engine, Render *re, RenderLayer *rl, ListBase *templates)
{
+ BLI_listbase_clear(templates);
+
if (engine && engine->type->update_render_passes) {
- ViewLayer *view_layer;
- view_layer = BLI_findstring(&re->view_layers, rl->name, offsetof(ViewLayer, name));
- SceneRenderLayer *srl;
- srl = BLI_findstring(&re->r.layers, rl->name, offsetof(SceneRenderLayer, name));
- if (srl) {
- RE_engine_update_render_passes(engine, re->scene, srl, templates_register_pass_cb, templates);
++ ViewLayer *view_layer = BLI_findstring(&re->view_layers, rl->name, offsetof(ViewLayer, name));
+ if (view_layer) {
- RE_engine_update_render_passes(engine, re->scene, view_layer, render_result_register_pass_cb);
++ RE_engine_update_render_passes(engine, re->scene, view_layer, templates_register_pass_cb, templates);
}
}
}
@@@ -1140,31 -1237,38 +1186,6 @@@ void render_result_exr_file_path(Scene
BLI_make_file_string("/", filepath, BKE_tempdir_session(), name);
}
--/* only for temp buffer, makes exact copy of render result */
--int render_result_exr_file_read_sample(Render *re, int sample, RenderEngine *engine)
--{
-- RenderLayer *rl;
-- char str[FILE_MAXFILE + MAX_ID_NAME + MAX_ID_NAME + 100]
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list