Blender V4.3
COM_SharedOperationBuffers.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_map.hh"
8#include "BLI_vector.hh"
9
10#include "DNA_vec_types.h"
11
12#ifdef WITH_CXX_GUARDEDALLOC
13# include "MEM_guardedalloc.h"
14#endif
15
16namespace blender::compositor {
17
18class MemoryBuffer;
19class NodeOperation;
20
26 private:
27 typedef struct BufferData {
28 public:
29 BufferData();
30 std::unique_ptr<MemoryBuffer> buffer;
31 blender::Vector<rcti> render_areas;
32 int registered_reads;
33 int received_reads;
34 bool is_rendered;
35 } BufferData;
37
38 public:
42 bool is_area_registered(NodeOperation *op, const rcti &area_to_render);
46 void register_area(NodeOperation *op, const rcti &area_to_render);
47
56 void register_read(NodeOperation *read_op);
57
61 Vector<rcti> get_areas_to_render(NodeOperation *op, int offset_x, int offset_y);
69 void set_rendered_buffer(NodeOperation *op, std::unique_ptr<MemoryBuffer> buffer);
74
79 void read_finished(NodeOperation *read_op);
80
81 private:
82 BufferData &get_buffer_data(NodeOperation *op);
83
84#ifdef WITH_CXX_GUARDEDALLOC
85 MEM_CXX_CLASS_ALLOC_FUNCS("COM:SharedOperationBuffers")
86#endif
87};
88
89} // namespace blender::compositor
Read Guarded memory(de)allocation.
a MemoryBuffer contains access to the data
NodeOperation contains calculation logic.
void set_rendered_buffer(NodeOperation *op, std::unique_ptr< MemoryBuffer > buffer)
Vector< rcti > get_areas_to_render(NodeOperation *op, int offset_x, int offset_y)
bool is_area_registered(NodeOperation *op, const rcti &area_to_render)
MemoryBuffer * get_rendered_buffer(NodeOperation *op)
void register_area(NodeOperation *op, const rcti &area_to_render)