Blender V4.3
COM_FullFrameExecutionModel.h
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2021 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
5#pragma once
6
7#include "BLI_vector.hh"
8
9#include "COM_Enums.h"
10#include "COM_ExecutionModel.h"
11
12#ifdef WITH_CXX_GUARDEDALLOC
13# include "MEM_guardedalloc.h"
14#endif
15
16namespace blender::compositor {
17
18/* Forward declarations. */
19class CompositorContext;
20class ExecutionSystem;
21class MemoryBuffer;
22class NodeOperation;
23class SharedOperationBuffers;
24
29 private:
34 SharedOperationBuffers &active_buffers_;
35
39 int num_operations_finished_;
40
45
46 public:
48 SharedOperationBuffers &shared_buffers,
49 Span<NodeOperation *> operations);
50
51 void execute(ExecutionSystem &exec_system) override;
52
53 private:
54 void determine_areas_to_render_and_reads();
58 void render_operations();
59 void render_output_dependencies(NodeOperation *output_op);
64 Vector<MemoryBuffer *> get_input_buffers(NodeOperation *op, int output_x, int output_y);
65 MemoryBuffer *create_operation_buffer(NodeOperation *op, int output_x, int output_y);
66 void render_operation(NodeOperation *op);
67
68 void operation_finished(NodeOperation *operation);
69
74 void get_output_render_area(NodeOperation *output_op, rcti &r_area);
78 void determine_areas_to_render(NodeOperation *output_op, const rcti &output_area);
83 void determine_reads(NodeOperation *output_op);
84
85 void update_progress_bar();
86
87#ifdef WITH_CXX_GUARDEDALLOC
88 MEM_CXX_CLASS_ALLOC_FUNCS("COM:FullFrameExecutionModel")
89#endif
90};
91
92} // 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
NodeOperation contains calculation logic.