From e741804ce34f2099f733f55b8ac5c3db711de169 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Mon, 3 Apr 2017 15:36:52 +0200 Subject: Buildbot: Update bundled vetrsion of server configuration --- build_files/buildbot/master.cfg | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/build_files/buildbot/master.cfg b/build_files/buildbot/master.cfg index 387e53593b3..d126d0e1c0e 100644 --- a/build_files/buildbot/master.cfg +++ b/build_files/buildbot/master.cfg @@ -4,10 +4,10 @@ # # List of the branches being built automatically overnight -NIGHT_SCHEDULE_BRANCHES = [None] +NIGHT_SCHEDULE_BRANCHES = [None, "blender2.8"] # List of the branches available for force build -FORCE_SCHEDULE_BRANCHES = ["master", "gooseberry", "experimental-build"] +FORCE_SCHEDULE_BRANCHES = ["master", "blender2.8", "experimental-build"] """ Stock Twisted directory lister doesn't provide any information about last file @@ -127,7 +127,14 @@ def schedule_force_build(name): project=forcesched.FixedParameter(name="project", default="", hide=True)), # For now, hide other codebases. forcesched.CodebaseParameter(hide=True, codebase="blender-translations"), - forcesched.CodebaseParameter(hide=True, codebase="blender-addons"), + forcesched.CodebaseParameter( + codebase="blender-addons", + branch=forcesched.ChoiceStringParameter( + name="branch", choices=["master", "blender2.8"], default="master"), + repository=forcesched.FixedParameter(name="repository", default="", hide=True), + project=forcesched.FixedParameter(name="project", default="", hide=True), + revision=forcesched.FixedParameter(name="revision", default="", hide=True), + ), forcesched.CodebaseParameter(hide=True, codebase="blender-addons-contrib"), forcesched.CodebaseParameter(hide=True, codebase="blender-dev-tools"), forcesched.CodebaseParameter(hide=True, codebase="lib svn")], @@ -139,12 +146,16 @@ def schedule_build(name, hour, minute=0): scheduler_name = "nightly " + name if current_branch: scheduler_name += ' ' + current_branch + # Use special addons submodule branch when building blender2.8 branch. + addons_branch = "master" + if current_branch == "blender2.8": + addons_branch = "blender2.8" c['schedulers'].append(timed.Nightly(name=scheduler_name, codebases={ "blender": {"repository": ""}, "blender-translations": {"repository": "", "branch": "master"}, "blender-addons": {"repository": "", "branch": "master"}, - "blender-addons-contrib": {"repository": "", "branch": "master"}, + "blender-addons-contrib": {"repository": "", "branch": addons_branch}, "blender-dev-tools": {"repository": "", "branch": "master"}, "lib svn": {"repository": "", "branch": "trunk"}}, branch=current_branch, @@ -225,8 +236,7 @@ def git_step(branch=''): def git_submodules_update(): - command = ['git', 'submodule', 'foreach', '--recursive', - 'git', 'pull', 'origin', 'master'] + command = ['git', 'submodule', 'update', '--remote'] return ShellCommand(name='Submodules Update', command=command, description='updating', -- cgit v1.2.3 From 728f75c6a72417b3860f8e9116d57b6dc0488156 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Mon, 3 Apr 2017 15:51:31 +0200 Subject: Buildbot: Some more twqeaks to master config --- build_files/buildbot/master.cfg | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/build_files/buildbot/master.cfg b/build_files/buildbot/master.cfg index d126d0e1c0e..de503a62ec1 100644 --- a/build_files/buildbot/master.cfg +++ b/build_files/buildbot/master.cfg @@ -245,7 +245,10 @@ def git_submodules_update(): def lib_svn_step(dir): - return SVN(name='lib svn', + name = "lib svn" + if dir == "darwin": + name = "C++11 lib svn" + return SVN(name=name, baseURL='https://svn.blender.org/svnroot/bf-blender/%%BRANCH%%/lib/' + dir, codebase='lib svn', mode='update', @@ -274,6 +277,9 @@ def generic_builder(id, libdir='', branch='', rsync=False): f = BuildFactory() if libdir != '': f.addStep(lib_svn_step(libdir)) + # Special trick to make sure we always have all the libs. + if libdir.startswith("darwin"): + f.addStep(lib_svn_step("darwin")) for submodule in ('blender-translations', 'blender-addons', -- cgit v1.2.3 From 4f7eb3ad12134d162db74386556ba9e4b6208722 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Tue, 4 Apr 2017 12:15:35 +0200 Subject: Buildbot: Update master config --- build_files/buildbot/master.cfg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build_files/buildbot/master.cfg b/build_files/buildbot/master.cfg index de503a62ec1..ba023817279 100644 --- a/build_files/buildbot/master.cfg +++ b/build_files/buildbot/master.cfg @@ -154,8 +154,8 @@ def schedule_build(name, hour, minute=0): codebases={ "blender": {"repository": ""}, "blender-translations": {"repository": "", "branch": "master"}, - "blender-addons": {"repository": "", "branch": "master"}, - "blender-addons-contrib": {"repository": "", "branch": addons_branch}, + "blender-addons": {"repository": "", "branch": addons_branch}, + "blender-addons-contrib": {"repository": "", "branch": "master"}, "blender-dev-tools": {"repository": "", "branch": "master"}, "lib svn": {"repository": "", "branch": "trunk"}}, branch=current_branch, -- cgit v1.2.3 From ca5ccf5cd4a9319dc24a3b3c56b9b2a9aea70805 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Tue, 4 Apr 2017 12:32:15 +0200 Subject: Task: Remove non-atomic pool suspended flag assignment This was done some lines above by atomic fetch and and. --- source/blender/blenlib/intern/task.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/source/blender/blenlib/intern/task.c b/source/blender/blenlib/intern/task.c index 17e20f8fa18..297d0f0b310 100644 --- a/source/blender/blenlib/intern/task.c +++ b/source/blender/blenlib/intern/task.c @@ -743,9 +743,7 @@ void BLI_task_pool_work_and_wait(TaskPool *pool) BLI_condition_notify_all(&scheduler->queue_cond); BLI_mutex_unlock(&scheduler->queue_mutex); - } - pool->is_suspended = false; } pool->do_work = true; -- cgit v1.2.3 From b93ddfd8ac565e536350de5699dddad09d0f407e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Thu, 16 Feb 2017 10:59:19 +0100 Subject: Alembic: force ALEMBIC_LIB_USES_BOOST=ON when not using C++11 Alembic requires one of ALEMBIC_LIB_USES_BOOST, ALEMBIC_LIB_USES_TR1, or C++11, and silently defaults to the latter if the former two are OFF. Before this change, Alembic was only built without C++11 of OpenEXR was built at the same time. This dependency was both unnecessary and undocumented. --- build_files/build_environment/install_deps.sh | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/build_files/build_environment/install_deps.sh b/build_files/build_environment/install_deps.sh index ed1b9a3e62a..08cb6822810 100755 --- a/build_files/build_environment/install_deps.sh +++ b/build_files/build_environment/install_deps.sh @@ -2266,6 +2266,12 @@ compile_ALEMBIC() { cmake_d="-D CMAKE_INSTALL_PREFIX=$_inst" + # Without Boost or TR1, Alembic requires C++11. + if [ "$USE_CXX11" != true ]; then + cmake_d="$cmake_d -D ALEMBIC_LIB_USES_BOOST=ON" + cmake_d="$cmake_d -D ALEMBIC_LIB_USES_TR1=OFF" + fi + if [ -d $INST/boost ]; then cmake_d="$cmake_d -D BOOST_ROOT=$INST/boost" cmake_d="$cmake_d -D USE_STATIC_BOOST=ON" @@ -2285,8 +2291,6 @@ compile_ALEMBIC() { cmake_d="$cmake_d -D USE_STATIC_HDF5=OFF" cmake_d="$cmake_d -D ALEMBIC_ILMBASE_LINK_STATIC=OFF" cmake_d="$cmake_d -D ALEMBIC_SHARED_LIBS=OFF" - cmake_d="$cmake_d -D ALEMBIC_LIB_USES_BOOST=ON" - cmake_d="$cmake_d -D ALEMBIC_LIB_USES_TR1=OFF" INFO "ILMBASE_ROOT=$INST/openexr" fi -- cgit v1.2.3 From ffac92e38539a74424fe8cfd6fac9d79144c4872 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Tue, 4 Apr 2017 12:52:37 +0200 Subject: Buildbot: Update master config --- build_files/buildbot/master.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build_files/buildbot/master.cfg b/build_files/buildbot/master.cfg index ba023817279..c650cb8c302 100644 --- a/build_files/buildbot/master.cfg +++ b/build_files/buildbot/master.cfg @@ -302,7 +302,7 @@ def generic_builder(id, libdir='', branch='', rsync=False): f.addStep(FileUpload(name='upload', slavesrc='buildbot_upload.zip', masterdest=filename, - maxsize=150 * 1024 * 1024, + maxsize=180 * 1024 * 1024, workdir='install')) f.addStep(MasterShellCommand(name='unpack', command=['python2.7', unpack_script, filename], -- cgit v1.2.3 From 8a60d843272d39fa453f0bfa941c9e947e99624f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Tue, 4 Apr 2017 12:55:38 +0200 Subject: Bumped Alembic library version to 1.7.1 This provides us with a clearer API (so I don't have to use const_cast<> in upcoming code). It also allows layering of different Alembic files, so you can have a base file and load a separate file containing overrides. Verbally approved by Dr. Sergey. --- build_files/build_environment/install_deps.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build_files/build_environment/install_deps.sh b/build_files/build_environment/install_deps.sh index 08cb6822810..381330be7d2 100755 --- a/build_files/build_environment/install_deps.sh +++ b/build_files/build_environment/install_deps.sh @@ -360,7 +360,7 @@ OPENVDB_FORCE_REBUILD=false OPENVDB_SKIP=false # Alembic needs to be compiled for now -ALEMBIC_VERSION="1.6.0" +ALEMBIC_VERSION="1.7.1" ALEMBIC_VERSION_MIN=$ALEMBIC_VERSION ALEMBIC_FORCE_BUILD=false ALEMBIC_FORCE_REBUILD=false -- cgit v1.2.3 From a63a31dd12ece94cef9cddd6ce609541ab431a97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Tue, 4 Apr 2017 14:50:36 +0200 Subject: install_deps: removed leftover compile_HDF5 command It was a leftover from when Alembic with HDF5 was still officially supported. --- build_files/build_environment/install_deps.sh | 3 --- 1 file changed, 3 deletions(-) diff --git a/build_files/build_environment/install_deps.sh b/build_files/build_environment/install_deps.sh index 381330be7d2..c65305703bf 100755 --- a/build_files/build_environment/install_deps.sh +++ b/build_files/build_environment/install_deps.sh @@ -2236,9 +2236,6 @@ compile_ALEMBIC() { return fi - compile_HDF5 - PRINT "" - # To be changed each time we make edits that would modify the compiled result! alembic_magic=2 _init_alembic -- cgit v1.2.3 From 5ce95df2c6f2b86d53795b9b24fdd8ba239597f9 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Tue, 4 Apr 2017 13:47:18 +0200 Subject: Cycles: Fix uninitialized memory access when comparing curve mapping nodes The issue is coming from the fact that float3 is actually 16 bytes aligned data type and the "padding" was not initialized. This caused memcmp() to access non-initialized memory. --- intern/cycles/blender/blender_util.h | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/intern/cycles/blender/blender_util.h b/intern/cycles/blender/blender_util.h index 4d575330520..abdbb6be0fd 100644 --- a/intern/cycles/blender/blender_util.h +++ b/intern/cycles/blender/blender_util.h @@ -174,22 +174,19 @@ static inline void curvemapping_color_to_array(BL::CurveMapping& cumap, if(rgb_curve) { BL::CurveMap mapI = cumap.curves[3]; - for(int i = 0; i < size; i++) { - float t = min_x + (float)i/(float)(size-1) * range_x; - - data[i][0] = mapR.evaluate(mapI.evaluate(t)); - data[i][1] = mapG.evaluate(mapI.evaluate(t)); - data[i][2] = mapB.evaluate(mapI.evaluate(t)); + const float t = min_x + (float)i/(float)(size-1) * range_x; + data[i] = make_float3(mapR.evaluate(mapI.evaluate(t)), + mapG.evaluate(mapI.evaluate(t)), + mapB.evaluate(mapI.evaluate(t))); } } else { for(int i = 0; i < size; i++) { float t = min_x + (float)i/(float)(size-1) * range_x; - - data[i][0] = mapR.evaluate(t); - data[i][1] = mapG.evaluate(t); - data[i][2] = mapB.evaluate(t); + data[i] = make_float3(mapR.evaluate(t), + mapG.evaluate(t), + mapB.evaluate(t)); } } } -- cgit v1.2.3 From 7b149bfde649e178ab8710702f1f0157bff2ef7e Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Tue, 4 Apr 2017 13:38:43 +0200 Subject: Depsgraph: Use atomic operation to tag the changed ID --- source/blender/blenkernel/intern/depsgraph.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c index 678dc92a5f2..302e55a1f5a 100644 --- a/source/blender/blenkernel/intern/depsgraph.c +++ b/source/blender/blenkernel/intern/depsgraph.c @@ -3053,7 +3053,7 @@ void DAG_id_type_tag(Main *bmain, short idtype) DAG_id_type_tag(bmain, ID_SCE); } - bmain->id_tag_update[BKE_idcode_to_index(idtype)] = 1; + atomic_fetch_and_or_uint8((uint8_t*)&bmain->id_tag_update[BKE_idcode_to_index(idtype)], 1); } int DAG_id_type_tagged(Main *bmain, short idtype) -- cgit v1.2.3 From 92aeb84fde6402c0d2e337b030c06cfd171f5ba1 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Tue, 4 Apr 2017 13:36:58 +0200 Subject: Cycles: Tag shaders for update after the threading part is over This avoids write access happening in non-atomic manner in Shader::tag_update which modifies the global managers. Even for 1 byte data types it's quite dangerous. --- intern/cycles/blender/blender_shader.cpp | 22 ++++++++++++---------- intern/cycles/blender/blender_sync.h | 1 - 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/intern/cycles/blender/blender_shader.cpp b/intern/cycles/blender/blender_shader.cpp index df21e2640bd..3f04f11aab4 100644 --- a/intern/cycles/blender/blender_shader.cpp +++ b/intern/cycles/blender/blender_shader.cpp @@ -27,7 +27,9 @@ #include "blender/blender_util.h" #include "util/util_debug.h" +#include "util/util_foreach.h" #include "util/util_string.h" +#include "util/util_set.h" #include "util/util_task.h" CCL_NAMESPACE_BEGIN @@ -1158,13 +1160,6 @@ static void add_nodes(Scene *scene, /* Sync Materials */ -void BlenderSync::sync_materials_simpligy(Shader *shader) -{ - ShaderGraph *graph = shader->graph; - graph->simplify(scene); - shader->tag_update(scene); -} - void BlenderSync::sync_materials(bool update_all) { shader_map.set_default(scene->default_surface); @@ -1173,6 +1168,7 @@ void BlenderSync::sync_materials(bool update_all) BL::BlendData::materials_iterator b_mat; TaskPool pool; + set updated_shaders; for(b_data.materials.begin(b_mat); b_mat != b_data.materials.end(); ++b_mat) { Shader *shader; @@ -1220,9 +1216,11 @@ void BlenderSync::sync_materials(bool update_all) * right before compiling. */ if(!preview) { - pool.push(function_bind(&BlenderSync::sync_materials_simpligy, - this, - shader)); + pool.push(function_bind(&ShaderGraph::simplify, graph, scene)); + /* NOTE: Update shaders out of the threads since those routines + * are accessing and writing to a global context. + */ + updated_shaders.insert(shader); } else { /* NOTE: Update tagging can access links which are being @@ -1234,6 +1232,10 @@ void BlenderSync::sync_materials(bool update_all) } pool.wait_work(); + + foreach(Shader *shader, updated_shaders) { + shader->tag_update(scene); + } } /* Sync World */ diff --git a/intern/cycles/blender/blender_sync.h b/intern/cycles/blender/blender_sync.h index 62e2f8f563a..36bedc505af 100644 --- a/intern/cycles/blender/blender_sync.h +++ b/intern/cycles/blender/blender_sync.h @@ -96,7 +96,6 @@ public: private: /* sync */ void sync_lamps(bool update_all); - void sync_materials_simpligy(Shader *shader); void sync_materials(bool update_all); void sync_objects(BL::SpaceView3D& b_v3d, float motion_time = 0.0f); void sync_motion(BL::RenderSettings& b_render, -- cgit v1.2.3