[Bf-blender-cvs] [b76f54e540b] functions: splitup graph evaluation in three parts
Jacques Lucke
noreply at git.blender.org
Sat Apr 27 22:43:39 CEST 2019
Commit: b76f54e540b19d33d75494b924ab7bf509dbbd03
Author: Jacques Lucke
Date: Sat Apr 27 22:23:23 2019 +0200
Branches: functions
https://developer.blender.org/rBb76f54e540b19d33d75494b924ab7bf509dbbd03
splitup graph evaluation in three parts
===================================================================
M source/blender/functions/backends/tuple_call/fgraph_tuple_call.cpp
===================================================================
diff --git a/source/blender/functions/backends/tuple_call/fgraph_tuple_call.cpp b/source/blender/functions/backends/tuple_call/fgraph_tuple_call.cpp
index a323a609a4d..a56d06f0b81 100644
--- a/source/blender/functions/backends/tuple_call/fgraph_tuple_call.cpp
+++ b/source/blender/functions/backends/tuple_call/fgraph_tuple_call.cpp
@@ -183,6 +183,14 @@ class ExecuteFGraph : public TupleCallBody {
memset(storage.m_input_inits, 0, m_inputs_init_buffer_size);
memset(storage.m_output_inits, 0, m_outputs_init_buffer_size);
+ this->copy_inputs_to_storage(fn_in, fn_out, storage);
+ this->evaluate_graph_to_compute_outputs(storage, fn_out, ctx);
+ this->destruct_remaining_values(storage);
+ }
+
+ private:
+ void copy_inputs_to_storage(Tuple &fn_in, Tuple &fn_out, SocketValueStorage &storage) const
+ {
for (uint i = 0; i < m_fgraph.inputs().size(); i++) {
DFGraphSocket socket = m_fgraph.inputs()[i];
if (socket.is_input()) {
@@ -204,7 +212,12 @@ class ExecuteFGraph : public TupleCallBody {
}
}
}
+ }
+ void evaluate_graph_to_compute_outputs(SocketValueStorage &storage,
+ Tuple &fn_out,
+ ExecutionContext &ctx) const
+ {
SmallStack<DFGraphSocket> sockets_to_compute;
for (auto socket : m_fgraph.outputs()) {
sockets_to_compute.push(socket);
@@ -273,22 +286,8 @@ class ExecuteFGraph : public TupleCallBody {
}
}
}
-
- for (uint input_id = 0; input_id < m_inputs_init_buffer_size; input_id++) {
- if (storage.is_input_initialized(input_id)) {
- SocketInfo &socket_info = m_input_info[input_id];
- socket_info.type->destruct_type(storage.input_value_ptr(input_id));
- }
- }
- for (uint output_id = 0; output_id < m_outputs_init_buffer_size; output_id++) {
- if (storage.is_output_initialized(output_id)) {
- SocketInfo &socket_info = m_output_info[output_id];
- socket_info.type->destruct_type(storage.output_value_ptr(output_id));
- }
- }
}
- private:
void forward_output(uint output_id, SocketValueStorage &storage, Tuple &fn_out) const
{
BLI_assert(storage.is_output_initialized(output_id));
@@ -344,6 +343,22 @@ class ExecuteFGraph : public TupleCallBody {
}
}
}
+
+ void destruct_remaining_values(SocketValueStorage &storage) const
+ {
+ for (uint input_id = 0; input_id < m_inputs_init_buffer_size; input_id++) {
+ if (storage.is_input_initialized(input_id)) {
+ SocketInfo &socket_info = m_input_info[input_id];
+ socket_info.type->destruct_type(storage.input_value_ptr(input_id));
+ }
+ }
+ for (uint output_id = 0; output_id < m_outputs_init_buffer_size; output_id++) {
+ if (storage.is_output_initialized(output_id)) {
+ SocketInfo &socket_info = m_output_info[output_id];
+ socket_info.type->destruct_type(storage.output_value_ptr(output_id));
+ }
+ }
+ }
};
class ExecuteFGraph_Simple : public TupleCallBody {
More information about the Bf-blender-cvs
mailing list