diff options
Diffstat (limited to 'source/blender/nodes')
5 files changed, 42 insertions, 42 deletions
diff --git a/source/blender/nodes/NOD_geometry_exec.hh b/source/blender/nodes/NOD_geometry_exec.hh index 9c53d4414a5..9c8d0398518 100644 --- a/source/blender/nodes/NOD_geometry_exec.hh +++ b/source/blender/nodes/NOD_geometry_exec.hh @@ -149,12 +149,12 @@ class GeoNodeExecParams { { GeoNodesLFUserData *user_data = this->user_data(); BLI_assert(user_data != nullptr); - const ContextStack *context_stack = user_data->context_stack; - BLI_assert(context_stack != nullptr); + const ComputeContext *compute_context = user_data->compute_context; + BLI_assert(compute_context != nullptr); if (user_data->modifier_data->eval_log == nullptr) { return nullptr; } - return &user_data->modifier_data->eval_log->get_local_tree_logger(*context_stack); + return &user_data->modifier_data->eval_log->get_local_tree_logger(*compute_context); } /** diff --git a/source/blender/nodes/NOD_geometry_nodes_log.hh b/source/blender/nodes/NOD_geometry_nodes_log.hh index a56ea39e98c..b04ae35a41f 100644 --- a/source/blender/nodes/NOD_geometry_nodes_log.hh +++ b/source/blender/nodes/NOD_geometry_nodes_log.hh @@ -4,7 +4,7 @@ #include <chrono> -#include "BLI_context_stack.hh" +#include "BLI_compute_context.hh" #include "BLI_enumerable_thread_specific.hh" #include "BLI_generic_pointer.hh" #include "BLI_multi_value_map.hh" @@ -118,9 +118,9 @@ using TimePoint = Clock::time_point; class GeoTreeLogger { public: - std::optional<ContextStackHash> parent_hash; + std::optional<ComputeContextHash> parent_hash; std::optional<std::string> group_node_name; - Vector<ContextStackHash> children_hashes; + Vector<ComputeContextHash> children_hashes; LinearAllocator<> *allocator = nullptr; Vector<std::pair<std::string, NodeWarning>> node_warnings; @@ -177,15 +177,15 @@ class GeoModifierLog { private: struct LocalData { LinearAllocator<> allocator; - Map<ContextStackHash, destruct_ptr<GeoTreeLogger>> tree_logger_by_context; + Map<ComputeContextHash, destruct_ptr<GeoTreeLogger>> tree_logger_by_context; }; threading::EnumerableThreadSpecific<LocalData> data_per_thread_; - Map<ContextStackHash, std::unique_ptr<GeoTreeLog>> tree_logs_; + Map<ComputeContextHash, std::unique_ptr<GeoTreeLog>> tree_logs_; public: - GeoTreeLogger &get_local_tree_logger(const ContextStack &context_stack); - GeoTreeLog &get_tree_log(const ContextStackHash &context_stack_hash); + GeoTreeLogger &get_local_tree_logger(const ComputeContext &compute_context); + GeoTreeLog &get_tree_log(const ComputeContextHash &compute_context_hash); struct ObjectAndModifier { const Object *object; diff --git a/source/blender/nodes/NOD_geometry_nodes_to_lazy_function_graph.hh b/source/blender/nodes/NOD_geometry_nodes_to_lazy_function_graph.hh index c63f7dbb85f..8b05d56e596 100644 --- a/source/blender/nodes/NOD_geometry_nodes_to_lazy_function_graph.hh +++ b/source/blender/nodes/NOD_geometry_nodes_to_lazy_function_graph.hh @@ -8,7 +8,7 @@ #include "NOD_geometry_nodes_log.hh" #include "NOD_multi_function.hh" -#include "BLI_context_stack.hh" +#include "BLI_compute_context.hh" struct Object; struct Depsgraph; @@ -22,12 +22,12 @@ struct GeoNodesModifierData { const Object *self_object = nullptr; Depsgraph *depsgraph = nullptr; geo_eval_log::GeoModifierLog *eval_log = nullptr; - const MultiValueMap<ContextStackHash, const lf::FunctionNode *> *side_effect_nodes; + const MultiValueMap<ComputeContextHash, const lf::FunctionNode *> *side_effect_nodes; }; struct GeoNodesLFUserData : public lf::UserData { GeoNodesModifierData *modifier_data = nullptr; - const ContextStack *context_stack = nullptr; + const ComputeContext *compute_context = nullptr; }; struct GeometryNodeLazyFunctionMapping { diff --git a/source/blender/nodes/intern/geometry_nodes_log.cc b/source/blender/nodes/intern/geometry_nodes_log.cc index 97e6c3a2af3..e099c8be2de 100644 --- a/source/blender/nodes/intern/geometry_nodes_log.cc +++ b/source/blender/nodes/intern/geometry_nodes_log.cc @@ -3,7 +3,7 @@ #include "NOD_geometry_nodes_log.hh" #include "NOD_geometry_nodes_to_lazy_function_graph.hh" -#include "BKE_context_stack.hh" +#include "BKE_compute_contexts.hh" #include "BKE_curves.hh" #include "FN_field_cpp_type.hh" @@ -180,7 +180,7 @@ void GeoTreeLog::ensure_node_warnings() this->nodes.lookup_or_add_default(warnings.first).warnings.append(warnings.second); this->all_warnings.append(warnings.second); } - for (const ContextStackHash &child_hash : tree_logger->children_hashes) { + for (const ComputeContextHash &child_hash : tree_logger->children_hashes) { GeoTreeLog &child_reduced_log = modifier_log_->get_tree_log(child_hash); child_reduced_log.ensure_node_warnings(); const std::optional<std::string> &group_node_name = @@ -208,7 +208,7 @@ void GeoTreeLog::ensure_node_run_time() this->nodes.lookup_or_add_default_as(node_name).run_time += duration; this->run_time_sum += duration; } - for (const ContextStackHash &child_hash : tree_logger->children_hashes) { + for (const ComputeContextHash &child_hash : tree_logger->children_hashes) { GeoTreeLog &child_reduced_log = modifier_log_->get_tree_log(child_hash); child_reduced_log.ensure_node_run_time(); const std::optional<std::string> &group_node_name = @@ -289,39 +289,39 @@ void GeoTreeLog::ensure_existing_attributes() reduced_existing_attributes_ = true; } -GeoTreeLogger &GeoModifierLog::get_local_tree_logger(const ContextStack &context_stack) +GeoTreeLogger &GeoModifierLog::get_local_tree_logger(const ComputeContext &compute_context) { LocalData &local_data = data_per_thread_.local(); - Map<ContextStackHash, destruct_ptr<GeoTreeLogger>> &local_tree_loggers = + Map<ComputeContextHash, destruct_ptr<GeoTreeLogger>> &local_tree_loggers = local_data.tree_logger_by_context; destruct_ptr<GeoTreeLogger> &tree_logger_ptr = local_tree_loggers.lookup_or_add_default( - context_stack.hash()); + compute_context.hash()); if (tree_logger_ptr) { return *tree_logger_ptr; } tree_logger_ptr = local_data.allocator.construct<GeoTreeLogger>(); GeoTreeLogger &tree_logger = *tree_logger_ptr; tree_logger.allocator = &local_data.allocator; - const ContextStack *parent_context_stack = context_stack.parent(); - if (parent_context_stack != nullptr) { - tree_logger.parent_hash = parent_context_stack->hash(); - GeoTreeLogger &parent_logger = this->get_local_tree_logger(*parent_context_stack); - parent_logger.children_hashes.append(context_stack.hash()); + const ComputeContext *parent_compute_context = compute_context.parent(); + if (parent_compute_context != nullptr) { + tree_logger.parent_hash = parent_compute_context->hash(); + GeoTreeLogger &parent_logger = this->get_local_tree_logger(*parent_compute_context); + parent_logger.children_hashes.append(compute_context.hash()); } - if (const bke::NodeGroupContextStack *node_group_context_stack = - dynamic_cast<const bke::NodeGroupContextStack *>(&context_stack)) { - tree_logger.group_node_name.emplace(node_group_context_stack->node_name()); + if (const bke::NodeGroupComputeContext *node_group_compute_context = + dynamic_cast<const bke::NodeGroupComputeContext *>(&compute_context)) { + tree_logger.group_node_name.emplace(node_group_compute_context->node_name()); } return tree_logger; } -GeoTreeLog &GeoModifierLog::get_tree_log(const ContextStackHash &context_stack_hash) +GeoTreeLog &GeoModifierLog::get_tree_log(const ComputeContextHash &compute_context_hash) { - GeoTreeLog &reduced_tree_log = *tree_logs_.lookup_or_add_cb(context_stack_hash, [&]() { + GeoTreeLog &reduced_tree_log = *tree_logs_.lookup_or_add_cb(compute_context_hash, [&]() { Vector<GeoTreeLogger *> tree_logs; for (LocalData &local_data : data_per_thread_) { destruct_ptr<GeoTreeLogger> *tree_log = local_data.tree_logger_by_context.lookup_ptr( - context_stack_hash); + compute_context_hash); if (tree_log != nullptr) { tree_logs.append(tree_log->get()); } @@ -388,12 +388,13 @@ GeoTreeLog *GeoModifierLog::get_tree_log_for_node_editor(const SpaceNode &snode) if (tree_path.is_empty()) { return nullptr; } - ContextStackBuilder context_stack_builder; - context_stack_builder.push<bke::ModifierContextStack>(object_and_modifier->nmd->modifier.name); + ComputeContextBuilder compute_context_builder; + compute_context_builder.push<bke::ModifierComputeContext>( + object_and_modifier->nmd->modifier.name); for (const bNodeTreePath *path_item : tree_path.as_span().drop_front(1)) { - context_stack_builder.push<bke::NodeGroupContextStack>(path_item->node_name); + compute_context_builder.push<bke::NodeGroupComputeContext>(path_item->node_name); } - return &modifier_log->get_tree_log(context_stack_builder.hash()); + return &modifier_log->get_tree_log(compute_context_builder.hash()); } } // namespace blender::nodes::geo_eval_log diff --git a/source/blender/nodes/intern/geometry_nodes_to_lazy_function_graph.cc b/source/blender/nodes/intern/geometry_nodes_to_lazy_function_graph.cc index bcb39835a77..2c7c5cc932f 100644 --- a/source/blender/nodes/intern/geometry_nodes_to_lazy_function_graph.cc +++ b/source/blender/nodes/intern/geometry_nodes_to_lazy_function_graph.cc @@ -9,7 +9,7 @@ #include "DNA_ID.h" -#include "BKE_context_stack.hh" +#include "BKE_compute_contexts.hh" #include "BKE_geometry_set.hh" #include "BKE_type_conversions.hh" @@ -121,7 +121,7 @@ class LazyFunctionForGeometryNode : public LazyFunction { if (geo_eval_log::GeoModifierLog *modifier_log = user_data->modifier_data->eval_log) { geo_eval_log::GeoTreeLogger &tree_logger = modifier_log->get_local_tree_logger( - *user_data->context_stack); + *user_data->compute_context); tree_logger.node_execution_times.append_as(node_.name, start_time, end_time); } } @@ -474,7 +474,7 @@ class LazyFunctionForViewerNode : public LazyFunction { } geo_eval_log::GeoTreeLogger &tree_logger = - user_data->modifier_data->eval_log->get_local_tree_logger(*user_data->context_stack); + user_data->modifier_data->eval_log->get_local_tree_logger(*user_data->compute_context); tree_logger.log_viewer_node(bnode_, geometry, field); } }; @@ -534,10 +534,9 @@ class LazyFunctionForGroupNode : public LazyFunction { { GeoNodesLFUserData *user_data = dynamic_cast<GeoNodesLFUserData *>(context.user_data); BLI_assert(user_data != nullptr); - bke::NodeGroupContextStack context_stack{ - user_data->context_stack, group_node_.name, group_node_.id->name + 2}; + bke::NodeGroupComputeContext compute_context{user_data->compute_context, group_node_.name}; GeoNodesLFUserData group_user_data = *user_data; - group_user_data.context_stack = &context_stack; + group_user_data.compute_context = &compute_context; lf::Context group_context = context; group_context.user_data = &group_user_data; @@ -1156,7 +1155,7 @@ void GeometryNodesLazyFunctionLogger::log_socket_value(const fn::lazy_function:: return; } geo_eval_log::GeoTreeLogger &tree_logger = - user_data->modifier_data->eval_log->get_local_tree_logger(*user_data->context_stack); + user_data->modifier_data->eval_log->get_local_tree_logger(*user_data->compute_context); for (const bNodeSocket *bsocket : bsockets) { if (bsocket->is_input() && !bsocket->directly_linked_sockets().is_empty()) { continue; @@ -1174,7 +1173,7 @@ Vector<const lf::FunctionNode *> GeometryNodesLazyFunctionSideEffectProvider:: { GeoNodesLFUserData *user_data = dynamic_cast<GeoNodesLFUserData *>(context.user_data); BLI_assert(user_data != nullptr); - const ContextStackHash &context_hash = user_data->context_stack->hash(); + const ComputeContextHash &context_hash = user_data->compute_context->hash(); const GeoNodesModifierData &modifier_data = *user_data->modifier_data; return modifier_data.side_effect_nodes->lookup(context_hash); } |