[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