21 #ifdef WITH_CXX_GUARDEDALLOC
39 class ExecutionSystem;
42 class ReadBufferOperation;
76 std::ostream &
operator<<(std::ostream &os,
const ExecutionGroupFlags &flags);
102 unsigned int m_width;
107 unsigned int m_height;
113 unsigned int m_chunkSize;
118 unsigned int m_x_chunks_len;
123 unsigned int m_y_chunks_len;
128 unsigned int m_chunks_len;
134 unsigned int m_max_read_buffer_offset;
151 unsigned int m_chunks_finished;
167 double m_executionStartTime;
179 void determineChunkRect(
rcti *r_rect,
180 const unsigned int xChunk,
181 const unsigned int yChunk)
const;
187 void init_number_of_chunks();
218 bool scheduleChunk(
unsigned int chunkNumber);
227 void determineDependingAreaOfInterest(
rcti *input,
236 void init_read_buffer_operations();
237 void init_work_packages();
285 this->m_width = resolution[0];
286 this->m_height = resolution[1];
381 void determineChunkRect(
rcti *r_rect,
const unsigned int chunkNumber)
const;
385 this->m_chunkSize = chunksize;
405 #ifdef WITH_CXX_GUARDEDALLOC
406 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 setChunksize(int chunksize)
unsigned int getWidth() const
get the width of this execution group
MemoryBuffer ** getInputBuffersCPU()
get all inputbuffers needed to calculate an chunk
eCompositorPriority getRenderPriority()
get the Render priority of this ExecutionGroup
void execute(ExecutionSystem *graph)
schedule an ExecutionGroup
void setViewerBorder(float xmin, float xmax, float ymin, float ymax)
set border for viewer operation
MemoryBuffer * constructConsolidatedMemoryBuffer(MemoryProxy &memoryProxy, rcti &rect)
compose multiple chunks into a single chunk
MemoryBuffer * allocateOutputBuffer(rcti &rect)
allocate the outputbuffer of a chunk
const ExecutionGroupFlags get_flags() const
MemoryBuffer ** getInputBuffersOpenCL(int chunkNumber)
get all inputbuffers needed to calculate an chunk
void setOutputExecutionGroup(bool is_output)
set whether this ExecutionGroup is an output
void deinitExecution()
deinitExecution is called just after execution the whole graph.
NodeOperation * getOutputOperation() const
get the output operation of this ExecutionGroup
bool addOperation(NodeOperation *operation)
add an operation to this ExecutionGroup
void initExecution()
initExecution is called just before the execution of the whole graph will be done.
void setResolution(unsigned int resolution[2])
set the resolution of this executiongroup
void setRenderBorder(float xmin, float xmax, float ymin, float ymax)
void finalizeChunkExecution(int chunkNumber, MemoryBuffer **memoryBuffers)
after a chunk is executed the needed resources can be freed or unlocked.
unsigned int getHeight() const
get the height of this execution group
void determineResolution(unsigned int resolution[2])
determine the resolution of this ExecutionGroup
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.
static void area(int d1, int d2, int e1, int e2, float weights[2])
std::ostream & operator<<(std::ostream &os, const eCompositorPriority &priority)