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:
authorSybren A. Stüvel <sybren@blender.org>2020-07-17 17:47:19 +0300
committerSybren A. Stüvel <sybren@blender.org>2020-07-23 15:52:46 +0300
commitee98dc8d0fc8d25a2369e6da58d76652f324c8ea (patch)
treeeca1c596b50ea77ea75dbdd3e40b33c15d294cc9 /source/blender/depsgraph/CMakeLists.txt
parent37ad90c35f640d9e5cb649ed3342e9c43cc37745 (diff)
Fix T77277: building depsgraph inter-driver relations is slow
The extra depsgraph relations that were added to prevent threading issues during evaluation (rB4c30dc343165) caused a considerable slowdown on complex scenes with many drivers (T77277, T78615). This commit improves this as follows. Only the following drivers are considered for execution serialisation: - Drivers on Array elements, and - Drivers on Boolean or Enum properties. Relations between drivers of the same arrays are added blindly, i.e. without checking for transitive or cyclic relations. This is possible as other relations will just target the `PROPERTIES_ENTRY` or `PROPERTIES_EXIT` nodes. Checking whether a driver is on an array is first done by checking `array_index > 0`, and then falling back to resolving the RNA path to an RNA property and inspecting that. The code also avoids circular dependencies when there are multiple drivers on the same property. This not something that is expected to happen (both the UI and the Python API prevent duplicate drivers), it did happen in a file (F8669945, example file of T78615) and it is easy to deal with here. Reviewers: sergey Subscribers: mont29 Comment update
Diffstat (limited to 'source/blender/depsgraph/CMakeLists.txt')
-rw-r--r--source/blender/depsgraph/CMakeLists.txt2
1 files changed, 2 insertions, 0 deletions
diff --git a/source/blender/depsgraph/CMakeLists.txt b/source/blender/depsgraph/CMakeLists.txt
index 355d2536e1a..839a3712129 100644
--- a/source/blender/depsgraph/CMakeLists.txt
+++ b/source/blender/depsgraph/CMakeLists.txt
@@ -46,6 +46,7 @@ set(SRC
intern/builder/deg_builder_nodes_view_layer.cc
intern/builder/deg_builder_pchanmap.cc
intern/builder/deg_builder_relations.cc
+ intern/builder/deg_builder_relations_drivers.cc
intern/builder/deg_builder_relations_keys.cc
intern/builder/deg_builder_relations_rig.cc
intern/builder/deg_builder_relations_scene.cc
@@ -100,6 +101,7 @@ set(SRC
intern/builder/deg_builder.h
intern/builder/deg_builder_cache.h
intern/builder/deg_builder_cycle.h
+ intern/builder/deg_builder_relations_drivers.h
intern/builder/deg_builder_map.h
intern/builder/deg_builder_nodes.h
intern/builder/deg_builder_pchanmap.h