[Bf-blender-cvs] [f2a1a6f870a] compositor-full-frame: Compositor: Set current execution model in operations

Manuel Castilla noreply at git.blender.org
Mon May 31 11:31:51 CEST 2021


Commit: f2a1a6f870a4f19e92edf220780e524c26a916d3
Author: Manuel Castilla
Date:   Mon May 31 11:01:27 2021 +0200
Branches: compositor-full-frame
https://developer.blender.org/rBf2a1a6f870a4f19e92edf220780e524c26a916d3

Compositor: Set current execution model in operations

Operations may share methods between tiled and full frame implementation and they may need to differentiate between them in some cases. This is just a temporal solution while keeping both execution models.

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

M	source/blender/compositor/intern/COM_ExecutionModel.cc
M	source/blender/compositor/intern/COM_ExecutionModel.h
M	source/blender/compositor/intern/COM_FullFrameExecutionModel.cc
M	source/blender/compositor/intern/COM_NodeOperation.h
M	source/blender/compositor/intern/COM_TiledExecutionModel.cc

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

diff --git a/source/blender/compositor/intern/COM_ExecutionModel.cc b/source/blender/compositor/intern/COM_ExecutionModel.cc
index ba7fbfd8ae3..7dee3bd4bbc 100644
--- a/source/blender/compositor/intern/COM_ExecutionModel.cc
+++ b/source/blender/compositor/intern/COM_ExecutionModel.cc
@@ -20,7 +20,9 @@
 
 namespace blender::compositor {
 
-ExecutionModel::ExecutionModel(CompositorContext &context, Vector<NodeOperation *> &operations)
+ExecutionModel::ExecutionModel(eExecutionModel model,
+                               CompositorContext &context,
+                               Vector<NodeOperation *> &operations)
     : context_(context), operations_(operations)
 {
   const bNodeTree *node_tree = context_.getbNodeTree();
@@ -37,6 +39,10 @@ ExecutionModel::ExecutionModel(CompositorContext &context, Vector<NodeOperation
   border_.use_render_border = context.isRendering() && (rd->mode & R_BORDER) &&
                               !(rd->mode & R_CROP);
   border_.render_border = &rd->border;
+
+  for (NodeOperation *op : operations) {
+    op->set_execution_model(model);
+  }
 }
 
 bool ExecutionModel::is_breaked() const
diff --git a/source/blender/compositor/intern/COM_ExecutionModel.h b/source/blender/compositor/intern/COM_ExecutionModel.h
index b6ebcb096ac..128739576b7 100644
--- a/source/blender/compositor/intern/COM_ExecutionModel.h
+++ b/source/blender/compositor/intern/COM_ExecutionModel.h
@@ -59,7 +59,9 @@ class ExecutionModel {
   Vector<NodeOperation *> &operations_;
 
  public:
-  ExecutionModel(CompositorContext &context, Vector<NodeOperation *> &operations);
+  ExecutionModel(eExecutionModel model,
+                 CompositorContext &context,
+                 Vector<NodeOperation *> &operations);
 
   virtual ~ExecutionModel()
   {
diff --git a/source/blender/compositor/intern/COM_FullFrameExecutionModel.cc b/source/blender/compositor/intern/COM_FullFrameExecutionModel.cc
index 9d0d4ab4883..86dd78e0f91 100644
--- a/source/blender/compositor/intern/COM_FullFrameExecutionModel.cc
+++ b/source/blender/compositor/intern/COM_FullFrameExecutionModel.cc
@@ -37,7 +37,7 @@ namespace blender::compositor {
 FullFrameExecutionModel::FullFrameExecutionModel(CompositorContext &context,
                                                  SharedOperationBuffers &shared_buffers,
                                                  Vector<NodeOperation *> &operations)
-    : ExecutionModel(context, operations),
+    : ExecutionModel(eExecutionModel::FullFrame, context, operations),
       active_buffers_(shared_buffers),
       num_operations_finished_(0),
       priorities_(),
diff --git a/source/blender/compositor/intern/COM_NodeOperation.h b/source/blender/compositor/intern/COM_NodeOperation.h
index ba5e98a9701..2ed509d1250 100644
--- a/source/blender/compositor/intern/COM_NodeOperation.h
+++ b/source/blender/compositor/intern/COM_NodeOperation.h
@@ -310,6 +310,8 @@ class NodeOperation {
   const bNodeTree *m_btree;
 
  protected:
+  eExecutionModel execution_model_;
+
   /**
    * Width of the output of this operation.
    */
@@ -365,6 +367,16 @@ class NodeOperation {
     return flags;
   }
 
+  eExecutionModel get_execution_model() const
+  {
+    return execution_model_;
+  }
+
+  void set_execution_model(eExecutionModel model)
+  {
+    execution_model_ = model;
+  }
+
   rcti get_canvas_area() const;
   void set_canvas_area(const rcti &rect);
 
diff --git a/source/blender/compositor/intern/COM_TiledExecutionModel.cc b/source/blender/compositor/intern/COM_TiledExecutionModel.cc
index 44b94f71826..9cbc9f9971d 100644
--- a/source/blender/compositor/intern/COM_TiledExecutionModel.cc
+++ b/source/blender/compositor/intern/COM_TiledExecutionModel.cc
@@ -33,7 +33,7 @@ namespace blender::compositor {
 TiledExecutionModel::TiledExecutionModel(CompositorContext &context,
                                          Vector<NodeOperation *> &operations,
                                          Span<ExecutionGroup *> groups)
-    : ExecutionModel(context, operations), groups_(groups)
+    : ExecutionModel(eExecutionModel::Tiled, context, operations), groups_(groups)
 {
   const bNodeTree *node_tree = context.getbNodeTree();
   node_tree->stats_draw(node_tree->sdh, TIP_("Compositing | Determining resolution"));



More information about the Bf-blender-cvs mailing list