Blender  V3.3
COM_FullFrameExecutionModel.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later
2  * Copyright 2021 Blender Foundation. */
3 
4 #pragma once
5 
6 #include "BLI_vector.hh"
7 
8 #include "COM_Enums.h"
9 #include "COM_ExecutionModel.h"
10 
11 #ifdef WITH_CXX_GUARDEDALLOC
12 # include "MEM_guardedalloc.h"
13 #endif
14 
15 namespace blender::compositor {
16 
17 /* Forward declarations. */
18 class CompositorContext;
19 class ExecutionSystem;
20 class MemoryBuffer;
21 class NodeOperation;
22 class SharedOperationBuffers;
23 
28  private:
33  SharedOperationBuffers &active_buffers_;
34 
38  int num_operations_finished_;
39 
43  Vector<eCompositorPriority> priorities_;
44 
45  public:
47  SharedOperationBuffers &shared_buffers,
48  Span<NodeOperation *> operations);
49 
50  void execute(ExecutionSystem &exec_system) override;
51 
52  private:
53  void determine_areas_to_render_and_reads();
57  void render_operations();
58  void render_output_dependencies(NodeOperation *output_op);
63  Vector<MemoryBuffer *> get_input_buffers(NodeOperation *op, int output_x, int output_y);
64  MemoryBuffer *create_operation_buffer(NodeOperation *op, int output_x, int output_y);
65  void render_operation(NodeOperation *op);
66 
67  void operation_finished(NodeOperation *operation);
68 
73  void get_output_render_area(NodeOperation *output_op, rcti &r_area);
77  void determine_areas_to_render(NodeOperation *output_op, const rcti &output_area);
82  void determine_reads(NodeOperation *output_op);
83 
84  void update_progress_bar();
85 
86 #ifdef WITH_CXX_GUARDEDALLOC
87  MEM_CXX_CLASS_ALLOC_FUNCS("COM:FullFrameExecutionModel")
88 #endif
89 };
90 
91 } // namespace blender::compositor
Read Guarded memory(de)allocation.
Overall context of the compositor.
the ExecutionSystem contains the whole compositor tree.
FullFrameExecutionModel(CompositorContext &context, SharedOperationBuffers &shared_buffers, Span< NodeOperation * > operations)
void execute(ExecutionSystem &exec_system) override
a MemoryBuffer contains access to the data of a chunk
NodeOperation contains calculation logic.