[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