[Bf-blender-cvs] [a070dd8bdd6] master: Cleanup: Set execution system as operations member in Compositor

Manuel Castilla noreply at git.blender.org
Tue Jul 6 18:16:41 CEST 2021


Commit: a070dd8bdd6e3765b005dc01ec08036fdda36360
Author: Manuel Castilla
Date:   Tue Jul 6 16:15:03 2021 +0200
Branches: master
https://developer.blender.org/rBa070dd8bdd6e3765b005dc01ec08036fdda36360

Cleanup: Set execution system as operations member in Compositor

===================================================================

M	source/blender/compositor/intern/COM_ExecutionSystem.cc
M	source/blender/compositor/intern/COM_FullFrameExecutionModel.cc
M	source/blender/compositor/intern/COM_FullFrameExecutionModel.h
M	source/blender/compositor/intern/COM_MultiThreadedOperation.cc
M	source/blender/compositor/intern/COM_MultiThreadedOperation.h
M	source/blender/compositor/intern/COM_NodeOperation.cc
M	source/blender/compositor/intern/COM_NodeOperation.h
M	source/blender/compositor/operations/COM_SetColorOperation.cc
M	source/blender/compositor/operations/COM_SetColorOperation.h
M	source/blender/compositor/operations/COM_SetValueOperation.cc
M	source/blender/compositor/operations/COM_SetValueOperation.h

===================================================================

diff --git a/source/blender/compositor/intern/COM_ExecutionSystem.cc b/source/blender/compositor/intern/COM_ExecutionSystem.cc
index a12ec774032..abe94ec8f40 100644
--- a/source/blender/compositor/intern/COM_ExecutionSystem.cc
+++ b/source/blender/compositor/intern/COM_ExecutionSystem.cc
@@ -101,6 +101,9 @@ void ExecutionSystem::set_operations(const Vector<NodeOperation *> &operations,
 {
   m_operations = operations;
   m_groups = groups;
+  for (NodeOperation *op : m_operations) {
+    op->set_execution_system(this);
+  }
 }
 
 void ExecutionSystem::execute()
diff --git a/source/blender/compositor/intern/COM_FullFrameExecutionModel.cc b/source/blender/compositor/intern/COM_FullFrameExecutionModel.cc
index 21075bb7255..c9fc11868e8 100644
--- a/source/blender/compositor/intern/COM_FullFrameExecutionModel.cc
+++ b/source/blender/compositor/intern/COM_FullFrameExecutionModel.cc
@@ -63,7 +63,7 @@ void FullFrameExecutionModel::execute(ExecutionSystem &exec_system)
   DebugInfo::graphviz(&exec_system);
 
   determine_areas_to_render_and_reads();
-  render_operations(exec_system);
+  render_operations();
 }
 
 void FullFrameExecutionModel::determine_areas_to_render_and_reads()
@@ -107,14 +107,14 @@ MemoryBuffer *FullFrameExecutionModel::create_operation_buffer(NodeOperation *op
   return new MemoryBuffer(data_type, op_rect, is_a_single_elem);
 }
 
-void FullFrameExecutionModel::render_operation(NodeOperation *op, ExecutionSystem &exec_system)
+void FullFrameExecutionModel::render_operation(NodeOperation *op)
 {
   Vector<MemoryBuffer *> input_bufs = get_input_buffers(op);
 
   const bool has_outputs = op->getNumberOfOutputSockets() > 0;
   MemoryBuffer *op_buf = has_outputs ? create_operation_buffer(op) : nullptr;
   Span<rcti> areas = active_buffers_.get_areas_to_render(op);
-  op->render(op_buf, areas, input_bufs, exec_system);
+  op->render(op_buf, areas, input_bufs);
   active_buffers_.set_rendered_buffer(op, std::unique_ptr<MemoryBuffer>(op_buf));
 
   operation_finished(op);
@@ -123,7 +123,7 @@ void FullFrameExecutionModel::render_operation(NodeOperation *op, ExecutionSyste
 /**
  * Render output operations in order of priority.
  */
-void FullFrameExecutionModel::render_operations(ExecutionSystem &exec_system)
+void FullFrameExecutionModel::render_operations()
 {
   const bool is_rendering = context_.isRendering();
 
@@ -131,8 +131,8 @@ void FullFrameExecutionModel::render_operations(ExecutionSystem &exec_system)
   for (eCompositorPriority priority : priorities_) {
     for (NodeOperation *op : operations_) {
       if (op->isOutputOperation(is_rendering) && op->getRenderPriority() == priority) {
-        render_output_dependencies(op, exec_system);
-        render_operation(op, exec_system);
+        render_output_dependencies(op);
+        render_operation(op);
       }
     }
   }
@@ -166,14 +166,13 @@ static Vector<NodeOperation *> get_operation_dependencies(NodeOperation *operati
   return dependencies;
 }
 
-void FullFrameExecutionModel::render_output_dependencies(NodeOperation *output_op,
-                                                         ExecutionSystem &exec_system)
+void FullFrameExecutionModel::render_output_dependencies(NodeOperation *output_op)
 {
   BLI_assert(output_op->isOutputOperation(context_.isRendering()));
   Vector<NodeOperation *> dependencies = get_operation_dependencies(output_op);
   for (NodeOperation *op : dependencies) {
     if (!active_buffers_.is_operation_rendered(op)) {
-      render_operation(op, exec_system);
+      render_operation(op);
     }
   }
 }
diff --git a/source/blender/compositor/intern/COM_FullFrameExecutionModel.h b/source/blender/compositor/intern/COM_FullFrameExecutionModel.h
index e68ad93b407..cefa0d00cbd 100644
--- a/source/blender/compositor/intern/COM_FullFrameExecutionModel.h
+++ b/source/blender/compositor/intern/COM_FullFrameExecutionModel.h
@@ -66,11 +66,11 @@ class FullFrameExecutionModel : public ExecutionModel {
 
  private:
   void determine_areas_to_render_and_reads();
-  void render_operations(ExecutionSystem &exec_system);
-  void render_output_dependencies(NodeOperation *output_op, ExecutionSystem &exec_system);
+  void render_operations();
+  void render_output_dependencies(NodeOperation *output_op);
   Vector<MemoryBuffer *> get_input_buffers(NodeOperation *op);
   MemoryBuffer *create_operation_buffer(NodeOperation *op);
-  void render_operation(NodeOperation *op, ExecutionSystem &exec_system);
+  void render_operation(NodeOperation *op);
 
   void operation_finished(NodeOperation *operation);
 
diff --git a/source/blender/compositor/intern/COM_MultiThreadedOperation.cc b/source/blender/compositor/intern/COM_MultiThreadedOperation.cc
index e6e98d69b36..7ccf6f76d9f 100644
--- a/source/blender/compositor/intern/COM_MultiThreadedOperation.cc
+++ b/source/blender/compositor/intern/COM_MultiThreadedOperation.cc
@@ -12,12 +12,11 @@ MultiThreadedOperation::MultiThreadedOperation()
 
 void MultiThreadedOperation::update_memory_buffer(MemoryBuffer *output,
                                                   const rcti &area,
-                                                  Span<MemoryBuffer *> inputs,
-                                                  ExecutionSystem &exec_system)
+                                                  Span<MemoryBuffer *> inputs)
 {
   for (current_pass_ = 0; current_pass_ < num_passes_; current_pass_++) {
     update_memory_buffer_started(output, area, inputs);
-    exec_system.execute_work(area, [=](const rcti &split_rect) {
+    exec_system_->execute_work(area, [=](const rcti &split_rect) {
       update_memory_buffer_partial(output, split_rect, inputs);
     });
     update_memory_buffer_finished(output, area, inputs);
diff --git a/source/blender/compositor/intern/COM_MultiThreadedOperation.h b/source/blender/compositor/intern/COM_MultiThreadedOperation.h
index ad09c4df089..a7e574ca745 100644
--- a/source/blender/compositor/intern/COM_MultiThreadedOperation.h
+++ b/source/blender/compositor/intern/COM_MultiThreadedOperation.h
@@ -64,8 +64,7 @@ class MultiThreadedOperation : public NodeOperation {
  private:
   void update_memory_buffer(MemoryBuffer *output,
                             const rcti &area,
-                            Span<MemoryBuffer *> inputs,
-                            ExecutionSystem &exec_system) override;
+                            Span<MemoryBuffer *> inputs) override;
 };
 
 }  // namespace blender::compositor
diff --git a/source/blender/compositor/intern/COM_NodeOperation.cc b/source/blender/compositor/intern/COM_NodeOperation.cc
index b60b70017a3..04c5019af62 100644
--- a/source/blender/compositor/intern/COM_NodeOperation.cc
+++ b/source/blender/compositor/intern/COM_NodeOperation.cc
@@ -226,18 +226,16 @@ void NodeOperation::get_area_of_interest(NodeOperation *input_op,
  * \param output_buf: Buffer to write result to.
  * \param areas: Areas within this operation bounds to render.
  * \param inputs_bufs: Inputs operations buffers.
- * \param exec_system: Execution system.
  */
 void NodeOperation::render(MemoryBuffer *output_buf,
                            Span<rcti> areas,
-                           Span<MemoryBuffer *> inputs_bufs,
-                           ExecutionSystem &exec_system)
+                           Span<MemoryBuffer *> inputs_bufs)
 {
   if (get_flags().is_fullframe_operation) {
-    render_full_frame(output_buf, areas, inputs_bufs, exec_system);
+    render_full_frame(output_buf, areas, inputs_bufs);
   }
   else {
-    render_full_frame_fallback(output_buf, areas, inputs_bufs, exec_system);
+    render_full_frame_fallback(output_buf, areas, inputs_bufs);
   }
 }
 
@@ -246,12 +244,11 @@ void NodeOperation::render(MemoryBuffer *output_buf,
  */
 void NodeOperation::render_full_frame(MemoryBuffer *output_buf,
                                       Span<rcti> areas,
-                                      Span<MemoryBuffer *> inputs_bufs,
-                                      ExecutionSystem &exec_system)
+                                      Span<MemoryBuffer *> inputs_bufs)
 {
   initExecution();
   for (const rcti &area : areas) {
-    update_memory_buffer(output_buf, area, inputs_bufs, exec_system);
+    update_memory_buffer(output_buf, area, inputs_bufs);
   }
   deinitExecution();
 }
@@ -261,8 +258,7 @@ void NodeOperation::render_full_frame(MemoryBuffer *output_buf,
  */
 void NodeOperation::render_full_frame_fallback(MemoryBuffer *output_buf,
                                                Span<rcti> areas,
-                                               Span<MemoryBuffer *> inputs_bufs,
-                                               ExecutionSystem &exec_system)
+                                               Span<MemoryBuffer *> inputs_bufs)
 {
   Vector<NodeOperationOutput *> orig_input_links = replace_inputs_with_buffers(inputs_bufs);
 
@@ -274,7 +270,7 @@ void NodeOperation::render_full_frame_fallback(MemoryBuffer *output_buf,
   }
   else {
     for (const rcti &rect : areas) {
-      exec_system.execute_work(rect, [=](const rcti &split_rect) {
+      exec_system_->execute_work(rect, [=](const rcti &split_rect) {
         rcti tile_rect = split_rect;
         if (is_output_operation) {
           executeRegion(&tile_rect, 0);
diff --git a/source/blender/compositor/intern/COM_NodeOperation.h b/source/blender/compositor/intern/COM_NodeOperation.h
index 5ae0aae67d5..168cdbda573 100644
--- a/source/blender/compositor/intern/COM_NodeOperation.h
+++ b/source/blender/compositor/intern/COM_NodeOperation.h
@@ -316,6 +316,8 @@ class NodeOperation {
    */
   NodeOperationFlags flags;
 
+  ExecutionSystem *exec_system_;
+
  public:
   virtual ~NodeOperation()
   {
@@ -402,6 +404,12 @@ class NodeOperation {
   {
     this->m_btree = tree;
   }
+
+  void set_execution_system(ExecutionSystem *system)
+  {
+    exec_system_ = system;
+  }
+
   virtual void initExecution();
 
   /**
@@ -569,18 +577,14 @@ class NodeOperation {
   /** \name Full Frame Methods
    * \{ */
 
-  void render(MemoryBuffer *output_buf,
-              Span<rcti> areas,
-              Span<MemoryBuffer *> inputs_bufs,
-              ExecutionSystem &exec_system);
+  void render(MemoryBuffer *output_buf, Span<rcti> area

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list