Commit: ea1335e7c104ac5cc8853b64ae9f579d5684868c
Author: Sergey Sharybin
Date: Wed Jan 14 17:30:36 2015 +0500
Branches: depsgraph_refactor
https://developer.blender.org/rBea1335e7c104ac5cc8853b64ae9f579d5684868c
Depsgraph: Don't re-tag operations for update
This way we're saving some time in both tagging (by skipping loop over
component operations
which are tagged already) and scene evaluation (because now we don't have
redundant entries
in the directly modified operations).
This gives about 30% speedup on loading Koro rig file.
===================================================================
M source/blender/depsgraph/intern/depsnode_component.cpp
M source/blender/depsgraph/intern/depsnode_operation.cpp
===================================================================
diff --git a/source/blender/depsgraph/intern/depsnode_component.cpp
b/source/blender/depsgraph/intern/depsnode_component.cpp
index 3d26ecd..fe83b0d 100644
--- a/source/blender/depsgraph/intern/depsnode_component.cpp
+++ b/source/blender/depsgraph/intern/depsnode_component.cpp
@@ -195,6 +195,10 @@ void ComponentDepsNode::clear_operations()
void ComponentDepsNode::tag_update(Depsgraph *graph)
{
+ OperationDepsNode *entry_op = get_entry_operation();
+ if (entry_op != NULL && entry_op->flag & DEPSOP_FLAG_NEEDS_UPDATE) {
+ return;
+ }
for (OperationMap::const_iterator it = operations.begin(); it !=
operations.end(); ++it) {
OperationDepsNode *op_node = it->second;
op_node->tag_update(graph);
diff --git a/source/blender/depsgraph/intern/depsnode_operation.cpp
b/source/blender/depsgraph/intern/depsnode_operation.cpp
index 5ebce54..3700e74 100644
--- a/source/blender/depsgraph/intern/depsnode_operation.cpp
+++ b/source/blender/depsgraph/intern/depsnode_operation.cpp
@@ -68,9 +68,11 @@ string OperationDepsNode::identifier() const
void OperationDepsNode::tag_update(Depsgraph *graph)
{
- /* tag for update, but also note that this was the source of an update
*/
+ if (flag & DEPSOP_FLAG_NEEDS_UPDATE) {
+ return;
+ }
+ /* Tag for update, but also note that this was the source of an update.
*/
flag |= (DEPSOP_FLAG_NEEDS_UPDATE | DEPSOP_FLAG_DIRECTLY_MODIFIED);
-
graph->add_entry_tag(this);
}
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs