diff options
author | Jacques Lucke <jacques@blender.org> | 2022-09-20 11:59:12 +0300 |
---|---|---|
committer | Jacques Lucke <jacques@blender.org> | 2022-09-20 12:08:05 +0300 |
commit | 5c81d3bd4691214164a7f071d239ef6c84dba8dc (patch) | |
tree | cbab752ca58da40b45c15540707a2b0a22d769da /source/blender/nodes/NOD_geometry_nodes_lazy_function.hh | |
parent | 7a239812ca55153fc9751b6a87bc5c4deb76456b (diff) |
Geometry Nodes: improve evaluator with lazy threading
In large node setup the threading overhead was sometimes very significant.
That's especially true when most nodes do very little work.
This commit improves the scheduling by not using multi-threading in many
cases unless it's likely that it will be worth it. For more details see the comments
in `BLI_lazy_threading.hh`.
Differential Revision: https://developer.blender.org/D15976
Diffstat (limited to 'source/blender/nodes/NOD_geometry_nodes_lazy_function.hh')
-rw-r--r-- | source/blender/nodes/NOD_geometry_nodes_lazy_function.hh | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/source/blender/nodes/NOD_geometry_nodes_lazy_function.hh b/source/blender/nodes/NOD_geometry_nodes_lazy_function.hh index 929f20af1c8..240a0115f68 100644 --- a/source/blender/nodes/NOD_geometry_nodes_lazy_function.hh +++ b/source/blender/nodes/NOD_geometry_nodes_lazy_function.hh @@ -124,6 +124,11 @@ struct GeometryNodesLazyFunctionGraphInfo { * Mappings between the lazy-function graph and the #bNodeTree. */ GeometryNodeLazyFunctionGraphMapping mapping; + /** + * Approximate number of nodes in the graph if all sub-graphs were inlined. + * This can be used as a simple heuristic for the complexity of the node group. + */ + int num_inline_nodes_approximate = 0; GeometryNodesLazyFunctionGraphInfo(); ~GeometryNodesLazyFunctionGraphInfo(); @@ -148,6 +153,9 @@ class GeometryNodesLazyFunctionLogger : public fn::lazy_function::GraphExecutor: void dump_when_input_is_set_twice(const lf::InputSocket &target_socket, const lf::OutputSocket &from_socket, const lf::Context &context) const override; + void log_before_node_execute(const lf::FunctionNode &node, + const lf::Params ¶ms, + const lf::Context &context) const override; }; /** |