10SharedOperationBuffers::BufferData::BufferData()
11 : buffer(nullptr), registered_reads(0), received_reads(0), is_rendered(
false)
15SharedOperationBuffers::BufferData &SharedOperationBuffers::get_buffer_data(NodeOperation *op)
17 return buffers_.lookup_or_add_cb(op, []() {
return BufferData(); });
20bool SharedOperationBuffers::is_area_registered(
NodeOperation *op,
const rcti &area_to_render)
25 BufferData &buf_data = get_buffer_data(op);
26 for (
rcti ®_rect : buf_data.render_areas) {
36 get_buffer_data(op).render_areas.append(area_to_render);
41 return get_buffer_data(op).registered_reads > 0;
46 get_buffer_data(read_op).registered_reads++;
53 Span<rcti> render_areas = get_buffer_data(op).render_areas.as_span();
55 for (
rcti dst : render_areas) {
57 dst_areas.
append(std::move(dst));
64 return get_buffer_data(op).is_rendered;
68 std::unique_ptr<MemoryBuffer> buffer)
70 BufferData &buf_data = get_buffer_data(op);
73 buf_data.buffer = std::move(buffer);
74 buf_data.is_rendered =
true;
80 return get_buffer_data(op).buffer.get();
85 BufferData &buf_data = get_buffer_data(read_op);
86 buf_data.received_reads++;
87 BLI_assert(buf_data.received_reads > 0 && buf_data.received_reads <= buf_data.registered_reads);
88 if (buf_data.received_reads == buf_data.registered_reads) {
90 buf_data.buffer =
nullptr;
void BLI_rcti_translate(struct rcti *rect, int x, int y)
bool BLI_rcti_inside_rcti(const rcti *rct_a, const rcti *rct_b)
void append(const T &value)
a MemoryBuffer contains access to the data
NodeOperation contains calculation logic.