[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