[Bf-blender-cvs] [585a891ab2e] compositor-full-frame: Merge branch 'master' into compositor-full-frame
Manuel Castilla
noreply at git.blender.org
Fri Jul 23 19:23:12 CEST 2021
Commit: 585a891ab2e73c45a7225fa854cf92c559c897fb
Author: Manuel Castilla
Date: Thu Jul 22 21:55:42 2021 +0200
Branches: compositor-full-frame
https://developer.blender.org/rB585a891ab2e73c45a7225fa854cf92c559c897fb
Merge branch 'master' into compositor-full-frame
===================================================================
===================================================================
diff --cc source/blender/compositor/intern/COM_BufferOperation.cc
index 561a754a500,90c97f2a9c7..ae587fa87c4
--- a/source/blender/compositor/intern/COM_BufferOperation.cc
+++ b/source/blender/compositor/intern/COM_BufferOperation.cc
@@@ -20,9 -20,10 +20,10 @@@
namespace blender::compositor {
-BufferOperation::BufferOperation(MemoryBuffer *buffer, DataType data_type)
+BufferOperation::BufferOperation(MemoryBuffer *buffer, DataType data_type) : ConstantOperation()
{
buffer_ = buffer;
+ inflated_buffer_ = nullptr;
/* TODO: Implement a MemoryBuffer get_size() method returning a Size2d type. Shorten following
* code to: set_resolution(buffer.get_size()) */
unsigned int resolution[2];
diff --cc source/blender/compositor/intern/COM_ExecutionModel.cc
index 7dee3bd4bbc,b75b277e92c..08ec0585739
--- a/source/blender/compositor/intern/COM_ExecutionModel.cc
+++ b/source/blender/compositor/intern/COM_ExecutionModel.cc
@@@ -39,16 -37,6 +39,10 @@@ ExecutionModel::ExecutionModel(eExecuti
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
- {
- const bNodeTree *btree = context_.getbNodeTree();
- return btree->test_break(btree->tbh);
- }
-
} // namespace blender::compositor
diff --cc source/blender/compositor/intern/COM_FullFrameExecutionModel.cc
index b39600f12de,bd3a481d691..00b14ff18e3
--- a/source/blender/compositor/intern/COM_FullFrameExecutionModel.cc
+++ b/source/blender/compositor/intern/COM_FullFrameExecutionModel.cc
@@@ -21,11 -20,9 +21,12 @@@
#include "COM_Debug.h"
#include "COM_ExecutionGroup.h"
#include "COM_ReadBufferOperation.h"
+ #include "COM_ViewerOperation.h"
#include "COM_WorkScheduler.h"
+#include "BLI_map.hh"
+#include "BLI_set.hh"
+
#include "BLT_translation.h"
#ifdef WITH_CXX_GUARDEDALLOC
@@@ -36,13 -33,10 +37,10 @@@ namespace blender::compositor
FullFrameExecutionModel::FullFrameExecutionModel(CompositorContext &context,
SharedOperationBuffers &shared_buffers,
- Span<NodeOperation *> operations)
- : ExecutionModel(context, operations),
+ Vector<NodeOperation *> &operations)
+ : ExecutionModel(eExecutionModel::FullFrame, context, operations),
active_buffers_(shared_buffers),
- num_operations_finished_(0),
- priorities_(),
- work_mutex_(),
- work_finished_cond_()
+ num_operations_finished_(0)
{
priorities_.append(eCompositorPriority::High);
if (!context.isFastCalculation()) {
@@@ -136,18 -87,16 +91,13 @@@ Vector<MemoryBuffer *> FullFrameExecuti
MemoryBuffer *FullFrameExecutionModel::create_operation_buffer(NodeOperation *op)
{
- rcti op_rect;
- BLI_rcti_init(&op_rect, 0, op->getWidth(), 0, op->getHeight());
-
const DataType data_type = op->getOutputSocket(0)->getDataType();
const bool is_a_single_elem = op->get_flags().is_constant_operation;
- return new MemoryBuffer(data_type, op->get_canvas_area(), is_a_single_elem);
+ 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)
{
- if (active_buffers_.is_operation_rendered(op)) {
- return;
- }
-
- ensure_inputs_rendered(op, exec_system);
Vector<MemoryBuffer *> input_bufs = get_input_buffers(op);
const bool has_outputs = op->getNumberOfOutputSockets() > 0;
diff --cc source/blender/compositor/intern/COM_MemoryBuffer.h
index fc40708eeb9,048ed4c5d6e..9f68d508b2b
--- a/source/blender/compositor/intern/COM_MemoryBuffer.h
+++ b/source/blender/compositor/intern/COM_MemoryBuffer.h
@@@ -122,13 -125,11 +125,18 @@@ class MemoryBuffer
*/
MemoryBuffer(DataType datatype, const rcti &rect, bool is_a_single_elem = false);
+ MemoryBuffer(
+ float *buffer, int num_channels, int width, int height, bool is_a_single_elem = false);
+
+ MemoryBuffer(float *buffer, int num_channels, const rcti &rect, bool is_a_single_elem = false);
+
+ /**
+ * Construct MemoryBuffer from an existent float buffer. MemoryBuffer is not responsible for
+ * freeing given buffer.
+ */
+ MemoryBuffer(
+ float *buffer, int num_channels, int width, int height, bool is_a_single_elem = false);
+
/**
* Copy constructor
*/
diff --cc source/blender/compositor/intern/COM_NodeOperation.cc
index c52fca81b12,4e115cb3f2f..43710e62496
--- a/source/blender/compositor/intern/COM_NodeOperation.cc
+++ b/source/blender/compositor/intern/COM_NodeOperation.cc
@@@ -362,11 -334,13 +359,13 @@@ void NodeOperation::remove_buffers_and_
{
BLI_assert(original_inputs_links.size() == getNumberOfInputSockets());
for (int i = 0; i < original_inputs_links.size(); i++) {
- BLI_assert(typeid(*getInputOperation(i)) == typeid(BufferOperation));
-
+ NodeOperation *buffer_op = get_input_operation(i);
+ BLI_assert(buffer_op != nullptr);
+ BLI_assert(typeid(*buffer_op) == typeid(BufferOperation));
+ buffer_op->deinitExecution();
NodeOperationInput *input_socket = getInputSocket(i);
+ delete &input_socket->getLink()->getOperation();
input_socket->setLink(original_inputs_links[i]);
- delete buffer_op;
}
}
diff --cc source/blender/compositor/intern/COM_NodeOperation.h
index 2ed509d1250,fb9ec1e7a83..9667d82c289
--- a/source/blender/compositor/intern/COM_NodeOperation.h
+++ b/source/blender/compositor/intern/COM_NodeOperation.h
@@@ -310,8 -310,11 +310,13 @@@ class NodeOperation
const bNodeTree *m_btree;
protected:
+ eExecutionModel execution_model_;
+
+ /**
+ * Compositor execution model.
+ */
+ eExecutionModel execution_model_;
+
/**
* Width of the output of this operation.
*/
diff --cc source/blender/compositor/intern/COM_SharedOperationBuffers.cc
index b2c43147025,7e0486b0f54..02e4ff546ce
--- a/source/blender/compositor/intern/COM_SharedOperationBuffers.cc
+++ b/source/blender/compositor/intern/COM_SharedOperationBuffers.cc
@@@ -22,11 -22,8 +22,11 @@@
namespace blender::compositor {
+SharedOperationBuffers::SharedOperationBuffers() : buffers_()
+{
+}
SharedOperationBuffers::BufferData::BufferData()
- : buffer(nullptr), render_areas(), render_bounds({0}), registered_reads(0), received_reads(0)
+ : buffer(nullptr), registered_reads(0), received_reads(0), is_rendered(false)
{
}
diff --cc source/blender/compositor/intern/COM_SharedOperationBuffers.h
index 24c80102f9c,f7763cd8ae4..ddef724ff4a
--- a/source/blender/compositor/intern/COM_SharedOperationBuffers.h
+++ b/source/blender/compositor/intern/COM_SharedOperationBuffers.h
@@@ -40,9 -40,9 +40,10 @@@ class SharedOperationBuffers
BufferData();
std::unique_ptr<MemoryBuffer> buffer;
blender::Vector<rcti> render_areas;
+ rcti render_bounds;
int registered_reads;
int received_reads;
+ bool is_rendered;
} BufferData;
blender::Map<NodeOperation *, BufferData> buffers_;
diff --cc source/blender/compositor/operations/COM_SetColorOperation.h
index 2e7e28b6b5c,f4c0948ee1b..3ac60e24342
--- a/source/blender/compositor/operations/COM_SetColorOperation.h
+++ b/source/blender/compositor/operations/COM_SetColorOperation.h
@@@ -83,13 -83,12 +83,17 @@@ class SetColorOperation : public Consta
*/
void executePixelSampled(float output[4], float x, float y, PixelSampler sampler) override;
+ void update_memory_buffer(MemoryBuffer *output,
+ const rcti &output_rect,
+ Span<MemoryBuffer *> inputs,
+ ExecutionSystem &exec_system) override;
+
void determineResolution(unsigned int resolution[2],
unsigned int preferredResolution[2]) override;
+
+ void update_memory_buffer(MemoryBuffer *output,
+ const rcti &area,
+ Span<MemoryBuffer *> inputs) override;
};
} // namespace blender::compositor
diff --cc source/blender/compositor/operations/COM_SetValueOperation.h
index 335f3e29895,f18d44d9554..03fab560cc6
--- a/source/blender/compositor/operations/COM_SetValueOperation.h
+++ b/source/blender/compositor/operations/COM_SetValueOperation.h
@@@ -54,14 -54,11 +54,17 @@@ class SetValueOperation : public Consta
* The inner loop of this operation.
*/
void executePixelSampled(float output[4], float x, float y, PixelSampler sampler) override;
+
+ void update_memory_buffer(MemoryBuffer *output,
+ const rcti &output_rect,
+ Span<MemoryBuffer *> inputs,
+ ExecutionSystem &exec_system) override;
+
void determineResolution(unsigned int resolution[2],
unsigned int preferredResolution[2]) override;
+ void update_memory_buffer(MemoryBuffer *output,
+ const rcti &area,
+ Span<MemoryBuffer *> inputs) override;
};
} // namespace blender::compositor
More information about the Bf-blender-cvs
mailing list