6 #ifdef WITH_CXX_GUARDEDALLOC
23 class ExecutionSystem;
27 class ReadBufferOperation;
60 std::ostream &
operator<<(std::ostream &os,
const ExecutionGroupFlags &flags);
97 unsigned int chunk_size_;
102 unsigned int x_chunks_len_;
107 unsigned int y_chunks_len_;
112 unsigned int chunks_len_;
118 unsigned int max_read_buffer_offset_;
135 unsigned int chunks_finished_;
151 double execution_start_time_;
163 void determine_chunk_rect(
rcti *r_rect,
unsigned int x_chunk,
unsigned int y_chunk)
const;
170 void init_number_of_chunks();
201 bool schedule_chunk(
unsigned int chunk_number);
210 void determine_depending_area_of_interest(
rcti *
input,
219 void init_read_buffer_operations();
220 void init_work_packages();
268 width_ = resolution[0];
269 height_ = resolution[1];
360 void determine_chunk_rect(
rcti *r_rect,
unsigned int chunk_number)
const;
364 chunk_size_ = chunksize;
384 #ifdef WITH_CXX_GUARDEDALLOC
385 MEM_CXX_CLASS_ALLOC_FUNCS(
"COM:ExecutionGroup")
Read Guarded memory(de)allocation.
Class ExecutionGroup is a group of Operations that are executed as one. This grouping is used to comb...
void finalize_chunk_execution(int chunk_number, MemoryBuffer **memory_buffers)
after a chunk is executed the needed resources can be freed or unlocked.
void set_resolution(unsigned int resolution[2])
set the resolution of this executiongroup
void execute(ExecutionSystem *graph)
schedule an ExecutionGroup
bool add_operation(NodeOperation *operation)
add an operation to this ExecutionGroup
NodeOperation * get_output_operation() const
get the output operation of this ExecutionGroup
const ExecutionGroupFlags get_flags() const
MemoryBuffer * construct_consolidated_memory_buffer(MemoryProxy &memory_proxy, rcti &rect)
compose multiple chunks into a single chunk
MemoryBuffer ** get_input_buffers_opencl(int chunk_number)
get all inputbuffers needed to calculate an chunk
void set_chunksize(int chunksize)
MemoryBuffer * allocate_output_buffer(rcti &rect)
allocate the outputbuffer of a chunk
void init_execution()
init_execution is called just before the execution of the whole graph will be done.
void set_output_execution_group(bool is_output)
set whether this ExecutionGroup is an output
eCompositorPriority get_render_priority()
get the Render priority of this ExecutionGroup
unsigned int get_height() const
get the height of this execution group
void determine_resolution(unsigned int resolution[2])
determine the resolution of this ExecutionGroup
unsigned int get_width() const
get the width of this execution group
void set_render_border(float xmin, float xmax, float ymin, float ymax)
void set_viewer_border(float xmin, float xmax, float ymin, float ymax)
set border for viewer operation
void deinit_execution()
deinit_execution is called just after execution the whole graph.
the ExecutionSystem contains the whole compositor tree.
a MemoryBuffer contains access to the data of a chunk
A MemoryProxy is a unique identifier for a memory buffer. A single MemoryProxy is used among all chun...
NodeOperation contains calculation logic.
eCompositorPriority
Possible priority settings.
ccl_global KernelShaderEvalInput ccl_global float * output
ccl_global KernelShaderEvalInput * input
static void area(int d1, int d2, int e1, int e2, float weights[2])
std::ostream & operator<<(std::ostream &os, const eCompositorPriority &priority)