From 4089b7b80ba291dc04266a0dc58820ceeb48eb7b Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Wed, 20 Jul 2022 09:59:33 +0200 Subject: 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. --- source/blender/depsgraph/intern/eval/deg_eval.cc | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'source') 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) -- cgit v1.2.3