[Bf-blender-cvs] [4089b7b80ba] master: Depsgraph: Clear operation evaluation flags early on

Sergey Sharybin noreply at git.blender.org
Thu Jul 21 09:53:59 CEST 2022


Commit: 4089b7b80ba291dc04266a0dc58820ceeb48eb7b
Author: Sergey Sharybin
Date:   Wed Jul 20 09:59:33 2022 +0200
Branches: master
https://developer.blender.org/rB4089b7b80ba291dc04266a0dc58820ceeb48eb7b

Depsgraph: Clear operation evaluation flags early on

The goal is to make it possible to evaluate the graph in multiple
passes without evaluating the same node multiple times.

Currently should not be any functional changes.

===================================================================

M	source/blender/depsgraph/intern/eval/deg_eval.cc

===================================================================

diff --git a/source/blender/depsgraph/intern/eval/deg_eval.cc b/source/blender/depsgraph/intern/eval/deg_eval.cc
index 9ac1f5275ac..47f2a8ca219 100644
--- a/source/blender/depsgraph/intern/eval/deg_eval.cc
+++ b/source/blender/depsgraph/intern/eval/deg_eval.cc
@@ -101,6 +101,12 @@ void evaluate_node(const DepsgraphEvalState *state, OperationNode *operation_nod
   else {
     operation_node->evaluate(depsgraph);
   }
+
+  /* Clear the flag early on, allowing partial updates without re-evaluating the same node multiple
+   * times.
+   * This is a thread-safe modification as the node's flags are only read for a non-scheduled nodes
+   * and this node has been scheduled. */
+  operation_node->flag &= ~DEPSOP_FLAG_NEEDS_UPDATE;
 }
 
 void deg_task_run_func(TaskPool *pool, void *taskdata)



More information about the Bf-blender-cvs mailing list