diff options
Diffstat (limited to 'source/blender/compositor/intern')
17 files changed, 461 insertions, 461 deletions
diff --git a/source/blender/compositor/intern/COM_CPUDevice.h b/source/blender/compositor/intern/COM_CPUDevice.h index b938b5fc588..8d4d5f1c324 100644 --- a/source/blender/compositor/intern/COM_CPUDevice.h +++ b/source/blender/compositor/intern/COM_CPUDevice.h @@ -26,16 +26,16 @@ #include "COM_Device.h" /** - * @brief class representing a CPU device. - * @note for every hardware thread in the system a CPUDevice instance will exist in the workscheduler + * \brief class representing a CPU device. + * \note for every hardware thread in the system a CPUDevice instance will exist in the workscheduler */ class CPUDevice : public Device { public: CPUDevice(int thread_id); /** - * @brief execute a WorkPackage - * @param work the WorkPackage to execute + * \brief execute a WorkPackage + * \param work the WorkPackage to execute */ void execute(WorkPackage *work); diff --git a/source/blender/compositor/intern/COM_CompositorContext.h b/source/blender/compositor/intern/COM_CompositorContext.h index b43e163870c..e7889b11f5b 100644 --- a/source/blender/compositor/intern/COM_CompositorContext.h +++ b/source/blender/compositor/intern/COM_CompositorContext.h @@ -32,98 +32,98 @@ #include "COM_defines.h" /** - * @brief Overall context of the compositor + * \brief Overall context of the compositor */ class CompositorContext { private: /** - * @brief The rendering field describes if we are rendering (F12) or if we are editing (Node editor) + * \brief The rendering field describes if we are rendering (F12) or if we are editing (Node editor) * This field is initialized in ExecutionSystem and must only be read from that point on. - * @see ExecutionSystem + * \see ExecutionSystem */ bool m_rendering; /** - * @brief The quality of the composite. + * \brief The quality of the composite. * This field is initialized in ExecutionSystem and must only be read from that point on. - * @see ExecutionSystem + * \see ExecutionSystem */ CompositorQuality m_quality; Scene *m_scene; /** - * @brief Reference to the render data that is being composited. + * \brief Reference to the render data that is being composited. * This field is initialized in ExecutionSystem and must only be read from that point on. - * @see ExecutionSystem + * \see ExecutionSystem */ RenderData *m_rd; /** - * @brief reference to the bNodeTree + * \brief reference to the bNodeTree * This field is initialized in ExecutionSystem and must only be read from that point on. - * @see ExecutionSystem + * \see ExecutionSystem */ bNodeTree *m_bnodetree; /** - * @brief Preview image hash table + * \brief Preview image hash table * This field is initialized in ExecutionSystem and must only be read from that point on. */ bNodeInstanceHash *m_previews; /** - * @brief does this system have active opencl devices? + * \brief does this system have active opencl devices? */ bool m_hasActiveOpenCLDevices; /** - * @brief Skip slow nodes + * \brief Skip slow nodes */ bool m_fastCalculation; - /* @brief color management settings */ + /* \brief color management settings */ const ColorManagedViewSettings *m_viewSettings; const ColorManagedDisplaySettings *m_displaySettings; /** - * @brief active rendering view name + * \brief active rendering view name */ const char *m_viewName; public: /** - * @brief constructor initializes the context with default values. + * \brief constructor initializes the context with default values. */ CompositorContext(); /** - * @brief set the rendering field of the context + * \brief set the rendering field of the context */ void setRendering(bool rendering) { this->m_rendering = rendering; } /** - * @brief get the rendering field of the context + * \brief get the rendering field of the context */ bool isRendering() const { return this->m_rendering; } /** - * @brief set the scene of the context + * \brief set the scene of the context */ void setRenderData(RenderData *rd) { this->m_rd = rd; } /** - * @brief set the bnodetree of the context + * \brief set the bnodetree of the context */ void setbNodeTree(bNodeTree *bnodetree) { this->m_bnodetree = bnodetree; } /** - * @brief get the bnodetree of the context + * \brief get the bnodetree of the context */ const bNodeTree *getbNodeTree() const { return this->m_bnodetree; } /** - * @brief get the scene of the context + * \brief get the scene of the context */ const RenderData *getRenderData() const { return this->m_rd; } @@ -131,67 +131,67 @@ public: Scene *getScene() const { return m_scene; } /** - * @brief set the preview image hash table + * \brief set the preview image hash table */ void setPreviewHash(bNodeInstanceHash *previews) { this->m_previews = previews; } /** - * @brief get the preview image hash table + * \brief get the preview image hash table */ bNodeInstanceHash *getPreviewHash() const { return this->m_previews; } /** - * @brief set view settings of color color management + * \brief set view settings of color color management */ void setViewSettings(const ColorManagedViewSettings *viewSettings) { this->m_viewSettings = viewSettings; } /** - * @brief get view settings of color color management + * \brief get view settings of color color management */ const ColorManagedViewSettings *getViewSettings() const { return this->m_viewSettings; } /** - * @brief set display settings of color color management + * \brief set display settings of color color management */ void setDisplaySettings(const ColorManagedDisplaySettings *displaySettings) { this->m_displaySettings = displaySettings; } /** - * @brief get display settings of color color management + * \brief get display settings of color color management */ const ColorManagedDisplaySettings *getDisplaySettings() const { return this->m_displaySettings; } /** - * @brief set the quality + * \brief set the quality */ void setQuality(CompositorQuality quality) { this->m_quality = quality; } /** - * @brief get the quality + * \brief get the quality */ const CompositorQuality getQuality() const { return this->m_quality; } /** - * @brief get the current framenumber of the scene in this context + * \brief get the current framenumber of the scene in this context */ const int getFramenumber() const; /** - * @brief has this system active openclDevices? + * \brief has this system active openclDevices? */ const bool getHasActiveOpenCLDevices() const { return this->m_hasActiveOpenCLDevices; } /** - * @brief set has this system active openclDevices? + * \brief set has this system active openclDevices? */ void setHasActiveOpenCLDevices(bool hasAvtiveOpenCLDevices) { this->m_hasActiveOpenCLDevices = hasAvtiveOpenCLDevices; } /** - * @brief get the active rendering view + * \brief get the active rendering view */ const char *getViewName() const { return this->m_viewName; } /** - * @brief set the active rendering view + * \brief set the active rendering view */ void setViewName(const char *viewName) { this->m_viewName = viewName; } diff --git a/source/blender/compositor/intern/COM_Converter.h b/source/blender/compositor/intern/COM_Converter.h index d0b888e24a0..05d23eb3e7e 100644 --- a/source/blender/compositor/intern/COM_Converter.h +++ b/source/blender/compositor/intern/COM_Converter.h @@ -36,48 +36,48 @@ class NodeOperationOutput; class NodeOperationBuilder; /** - * @brief Conversion methods for the compositor + * \brief Conversion methods for the compositor */ class Converter { public: /** - * @brief Convert/wraps a bNode in its Node instance. + * \brief Convert/wraps a bNode in its Node instance. * * For all nodetypes a wrapper class is created. * - * @note When adding a new node to blender, this method needs to be changed to return the correct Node instance. + * \note When adding a new node to blender, this method needs to be changed to return the correct Node instance. * - * @see Node + * \see Node */ static Node *convert(bNode *b_node); /** - * @brief True if the node is considered 'fast'. + * \brief True if the node is considered 'fast'. * * Slow nodes will be skipped if fast execution is required. */ static bool is_fast_node(bNode *b_node); /** - * @brief This method will add a datetype conversion rule when the to-socket does not support the from-socket actual data type. + * \brief This method will add a datetype conversion rule when the to-socket does not support the from-socket actual data type. * - * @note this method is called when conversion is needed. + * \note this method is called when conversion is needed. * - * @param link the NodeLink what needs conversion - * @param system the ExecutionSystem to add the conversion to. - * @see NodeLink - a link between two sockets + * \param link the NodeLink what needs conversion + * \param system the ExecutionSystem to add the conversion to. + * \see NodeLink - a link between two sockets */ static NodeOperation *convertDataType(NodeOperationOutput *from, NodeOperationInput *to); /** - * @brief This method will add a resolution rule based on the settings of the NodeInput. + * \brief This method will add a resolution rule based on the settings of the NodeInput. * - * @note Conversion logic is implemented in this method - * @see InputSocketResizeMode for the possible conversions. + * \note Conversion logic is implemented in this method + * \see InputSocketResizeMode for the possible conversions. * - * @param link the NodeLink what needs conversion - * @param system the ExecutionSystem to add the conversion to. - * @see NodeLink - a link between two sockets + * \param link the NodeLink what needs conversion + * \param system the ExecutionSystem to add the conversion to. + * \see NodeLink - a link between two sockets */ static void convertResolution(NodeOperationBuilder &builder, NodeOperationOutput *fromSocket, NodeOperationInput *toSocket); diff --git a/source/blender/compositor/intern/COM_Device.h b/source/blender/compositor/intern/COM_Device.h index 202ca1d0b4f..8cb1cbebf7f 100644 --- a/source/blender/compositor/intern/COM_Device.h +++ b/source/blender/compositor/intern/COM_Device.h @@ -26,7 +26,7 @@ #include "COM_WorkPackage.h" /** - * @brief Abstract class for device implementations to be used by the Compositor. + * \brief Abstract class for device implementations to be used by the Compositor. * devices are queried, initialized and used by the WorkScheduler. * work are packaged as a WorkPackage instance. */ @@ -34,24 +34,24 @@ class Device { public: /** - * @brief Declaration of the virtual destructor - * @note resolve warning gcc 4.7 + * \brief Declaration of the virtual destructor + * \note resolve warning gcc 4.7 */ virtual ~Device() {} /** - * @brief initialize the device + * \brief initialize the device */ virtual bool initialize() { return true; } /** - * @brief deinitialize the device + * \brief deinitialize the device */ virtual void deinitialize() {} /** - * @brief execute a WorkPackage - * @param work the WorkPackage to execute + * \brief execute a WorkPackage + * \param work the WorkPackage to execute */ virtual void execute(WorkPackage *work) = 0; diff --git a/source/blender/compositor/intern/COM_ExecutionGroup.cpp b/source/blender/compositor/intern/COM_ExecutionGroup.cpp index 5a651f07868..c4ef21d1f13 100644 --- a/source/blender/compositor/intern/COM_ExecutionGroup.cpp +++ b/source/blender/compositor/intern/COM_ExecutionGroup.cpp @@ -185,9 +185,9 @@ void ExecutionGroup::execute(ExecutionSystem *graph) { const CompositorContext &context = graph->getContext(); const bNodeTree *bTree = context.getbNodeTree(); - if (this->m_width == 0 || this->m_height == 0) {return; } /// @note: break out... no pixels to calculate. - if (bTree->test_break && bTree->test_break(bTree->tbh)) {return; } /// @note: early break out for blur and preview nodes - if (this->m_numberOfChunks == 0) {return; } /// @note: early break out + if (this->m_width == 0 || this->m_height == 0) {return; } /// \note: break out... no pixels to calculate. + if (bTree->test_break && bTree->test_break(bTree->tbh)) {return; } /// \note: early break out for blur and preview nodes + if (this->m_numberOfChunks == 0) {return; } /// \note: early break out unsigned int chunkNumber; this->m_executionStartTime = PIL_check_seconds_timer(); diff --git a/source/blender/compositor/intern/COM_ExecutionGroup.h b/source/blender/compositor/intern/COM_ExecutionGroup.h index 88c702b8477..da57c89a894 100644 --- a/source/blender/compositor/intern/COM_ExecutionGroup.h +++ b/source/blender/compositor/intern/COM_ExecutionGroup.h @@ -39,28 +39,28 @@ class ReadBufferOperation; class Device; /** - * @brief the execution state of a chunk in an ExecutionGroup - * @ingroup Execution + * \brief the execution state of a chunk in an ExecutionGroup + * \ingroup Execution */ typedef enum ChunkExecutionState { /** - * @brief chunk is not yet scheduled + * \brief chunk is not yet scheduled */ COM_ES_NOT_SCHEDULED = 0, /** - * @brief chunk is scheduled, but not yet executed + * \brief chunk is scheduled, but not yet executed */ COM_ES_SCHEDULED = 1, /** - * @brief chunk is executed. + * \brief chunk is executed. */ COM_ES_EXECUTED = 2 } ChunkExecutionState; /** - * @brief Class ExecutionGroup is a group of Operations that are executed as one. + * \brief Class ExecutionGroup is a group of Operations that are executed as one. * This grouping is used to combine Operations that can be executed as one whole when multi-processing. - * @ingroup Execution + * \ingroup Execution */ class ExecutionGroup { public: @@ -70,86 +70,86 @@ private: // fields /** - * @brief list of operations in this ExecutionGroup + * \brief list of operations in this ExecutionGroup */ Operations m_operations; /** - * @brief is this ExecutionGroup an input ExecutionGroup + * \brief is this ExecutionGroup an input ExecutionGroup * an input execution group is a group that is at the end of the calculation (the output is important for the user) */ int m_isOutput; /** - * @brief Width of the output + * \brief Width of the output */ unsigned int m_width; /** - * @brief Height of the output + * \brief Height of the output */ unsigned int m_height; /** - * @brief size of a single chunk, being Width or of height + * \brief size of a single chunk, being Width or of height * a chunk is always a square, except at the edges of the MemoryBuffer */ unsigned int m_chunkSize; /** - * @brief number of chunks in the x-axis + * \brief number of chunks in the x-axis */ unsigned int m_numberOfXChunks; /** - * @brief number of chunks in the y-axis + * \brief number of chunks in the y-axis */ unsigned int m_numberOfYChunks; /** - * @brief total number of chunks + * \brief total number of chunks */ unsigned int m_numberOfChunks; /** - * @brief contains this ExecutionGroup a complex NodeOperation. + * \brief contains this ExecutionGroup a complex NodeOperation. */ bool m_complex; /** - * @brief can this ExecutionGroup be scheduled on an OpenCLDevice + * \brief can this ExecutionGroup be scheduled on an OpenCLDevice */ bool m_openCL; /** - * @brief Is this Execution group SingleThreaded + * \brief Is this Execution group SingleThreaded */ bool m_singleThreaded; /** - * @brief what is the maximum number field of all ReadBufferOperation in this ExecutionGroup. - * @note this is used to construct the MemoryBuffers that will be passed during execution. + * \brief what is the maximum number field of all ReadBufferOperation in this ExecutionGroup. + * \note this is used to construct the MemoryBuffers that will be passed during execution. */ unsigned int m_cachedMaxReadBufferOffset; /** - * @brief a cached vector of all read operations in the execution group. + * \brief a cached vector of all read operations in the execution group. */ Operations m_cachedReadOperations; /** - * @brief reference to the original bNodeTree, this field is only set for the 'top' execution group. - * @note can only be used to call the callbacks for progress, status and break + * \brief reference to the original bNodeTree, this field is only set for the 'top' execution group. + * \note can only be used to call the callbacks for progress, status and break */ const bNodeTree *m_bTree; /** - * @brief total number of chunks that have been calculated for this ExecutionGroup + * \brief total number of chunks that have been calculated for this ExecutionGroup */ unsigned int m_chunksFinished; /** - * @brief the chunkExecutionStates holds per chunk the execution state. this state can be + * \brief the chunkExecutionStates holds per chunk the execution state. this state can be * - COM_ES_NOT_SCHEDULED: not scheduled * - COM_ES_SCHEDULED: scheduled * - COM_ES_EXECUTED: executed @@ -157,92 +157,92 @@ private: ChunkExecutionState *m_chunkExecutionStates; /** - * @brief indicator when this ExecutionGroup has valid Operations in its vector for Execution - * @note When building the ExecutionGroup Operations are added via recursion. First a WriteBufferOperations is added, then the - * @note Operation containing the settings that is important for the ExecutiongGroup is added, - * @note When this occurs, these settings are copied over from the node to the ExecutionGroup - * @note and the Initialized flag is set to true. - * @see complex - * @see openCL + * \brief indicator when this ExecutionGroup has valid Operations in its vector for Execution + * \note When building the ExecutionGroup Operations are added via recursion. First a WriteBufferOperations is added, then the + * \note Operation containing the settings that is important for the ExecutiongGroup is added, + * \note When this occurs, these settings are copied over from the node to the ExecutionGroup + * \note and the Initialized flag is set to true. + * \see complex + * \see openCL */ bool m_initialized; /** - * @brief denotes boundary for border compositing - * @note measured in pixel space + * \brief denotes boundary for border compositing + * \note measured in pixel space */ rcti m_viewerBorder; /** - * @brief start time of execution + * \brief start time of execution */ double m_executionStartTime; // methods /** - * @brief check whether parameter operation can be added to the execution group - * @param operation the operation to be added + * \brief check whether parameter operation can be added to the execution group + * \param operation the operation to be added */ bool canContainOperation(NodeOperation *operation); /** - * @brief calculate the actual chunk size of this execution group. - * @note A chunk size is an unsigned int that is both the height and width of a chunk. - * @note The chunk size will not be stored in the chunkSize field. This needs to be done - * @note by the calling method. + * \brief calculate the actual chunk size of this execution group. + * \note A chunk size is an unsigned int that is both the height and width of a chunk. + * \note The chunk size will not be stored in the chunkSize field. This needs to be done + * \note by the calling method. */ unsigned int determineChunkSize(); /** - * @brief Determine the rect (minx, maxx, miny, maxy) of a chunk at a position. - * @note Only gives useful results ater the determination of the chunksize - * @see determineChunkSize() + * \brief Determine the rect (minx, maxx, miny, maxy) of a chunk at a position. + * \note Only gives useful results ater the determination of the chunksize + * \see determineChunkSize() */ void determineChunkRect(rcti *rect, const unsigned int xChunk, const unsigned int yChunk) const; /** - * @brief determine the number of chunks, based on the chunkSize, width and height. - * @note The result are stored in the fields numberOfChunks, numberOfXChunks, numberOfYChunks + * \brief determine the number of chunks, based on the chunkSize, width and height. + * \note The result are stored in the fields numberOfChunks, numberOfXChunks, numberOfYChunks */ void determineNumberOfChunks(); /** - * @brief try to schedule a specific chunk. - * @note scheduling succeeds when all input requirements are met and the chunks hasn't been scheduled yet. - * @param graph - * @param xChunk - * @param yChunk - * @return [true:false] + * \brief try to schedule a specific chunk. + * \note scheduling succeeds when all input requirements are met and the chunks hasn't been scheduled yet. + * \param graph + * \param xChunk + * \param yChunk + * \return [true:false] * true: package(s) are scheduled * false: scheduling is deferred (depending workpackages are scheduled) */ bool scheduleChunkWhenPossible(ExecutionSystem *graph, int xChunk, int yChunk); /** - * @brief try to schedule a specific area. - * @note Check if a certain area is available, when not available this are will be checked. - * @note This method is called from other ExecutionGroup's. - * @param graph - * @param rect - * @return [true:false] + * \brief try to schedule a specific area. + * \note Check if a certain area is available, when not available this are will be checked. + * \note This method is called from other ExecutionGroup's. + * \param graph + * \param rect + * \return [true:false] * true: package(s) are scheduled * false: scheduling is deferred (depending workpackages are scheduled) */ bool scheduleAreaWhenPossible(ExecutionSystem *graph, rcti *rect); /** - * @brief add a chunk to the WorkScheduler. - * @param chunknumber + * \brief add a chunk to the WorkScheduler. + * \param chunknumber */ bool scheduleChunk(unsigned int chunkNumber); /** - * @brief determine the area of interest of a certain input area - * @note This method only evaluates a single ReadBufferOperation - * @param input the input area - * @param readOperation The ReadBufferOperation where the area needs to be evaluated - * @param output the area needed of the ReadBufferOperation. Result + * \brief determine the area of interest of a certain input area + * \note This method only evaluates a single ReadBufferOperation + * \param input the input area + * \param readOperation The ReadBufferOperation where the area needs to be evaluated + * \param output the area needed of the ReadBufferOperation. Result */ void determineDependingAreaOfInterest(rcti *input, ReadBufferOperation *readOperation, rcti *output); @@ -253,116 +253,116 @@ public: // methods /** - * @brief add an operation to this ExecutionGroup - * @note this method will add input of the operations recursively - * @note this method can create multiple ExecutionGroup's - * @param system - * @param operation - * @return True if the operation was successfully added + * \brief add an operation to this ExecutionGroup + * \note this method will add input of the operations recursively + * \note this method can create multiple ExecutionGroup's + * \param system + * \param operation + * \return True if the operation was successfully added */ bool addOperation(NodeOperation *operation); /** - * @brief is this ExecutionGroup an output ExecutionGroup - * @note An OutputExecution group are groups containing a - * @note ViewerOperation, CompositeOperation, PreviewOperation. - * @see NodeOperation.isOutputOperation + * \brief is this ExecutionGroup an output ExecutionGroup + * \note An OutputExecution group are groups containing a + * \note ViewerOperation, CompositeOperation, PreviewOperation. + * \see NodeOperation.isOutputOperation */ const int isOutputExecutionGroup() const { return this->m_isOutput; } /** - * @brief set whether this ExecutionGroup is an output - * @param isOutput + * \brief set whether this ExecutionGroup is an output + * \param isOutput */ void setOutputExecutionGroup(int isOutput) { this->m_isOutput = isOutput; } /** - * @brief determine the resolution of this ExecutionGroup - * @param resolution + * \brief determine the resolution of this ExecutionGroup + * \param resolution */ void determineResolution(unsigned int resolution[2]); /** - * @brief set the resolution of this executiongroup - * @param resolution + * \brief set the resolution of this executiongroup + * \param resolution */ void setResolution(unsigned int resolution[2]) { this->m_width = resolution[0]; this->m_height = resolution[1]; } /** - * @brief get the width of this execution group + * \brief get the width of this execution group */ unsigned int getWidth() const { return m_width; } /** - * @brief get the height of this execution group + * \brief get the height of this execution group */ unsigned int getHeight() const { return m_height; } /** - * @brief does this ExecutionGroup contains a complex NodeOperation + * \brief does this ExecutionGroup contains a complex NodeOperation */ bool isComplex() const { return m_complex; } /** - * @brief get the output operation of this ExecutionGroup - * @return NodeOperation *output operation + * \brief get the output operation of this ExecutionGroup + * \return NodeOperation *output operation */ NodeOperation *getOutputOperation() const; /** - * @brief compose multiple chunks into a single chunk - * @return Memorybuffer *consolidated chunk + * \brief compose multiple chunks into a single chunk + * \return Memorybuffer *consolidated chunk */ MemoryBuffer *constructConsolidatedMemoryBuffer(MemoryProxy *memoryProxy, rcti *output); /** - * @brief initExecution is called just before the execution of the whole graph will be done. - * @note The implementation will calculate the chunkSize of this execution group. + * \brief initExecution is called just before the execution of the whole graph will be done. + * \note The implementation will calculate the chunkSize of this execution group. */ void initExecution(); /** - * @brief get all inputbuffers needed to calculate an chunk - * @note all inputbuffers must be executed - * @param chunkNumber the chunk to be calculated - * @return (MemoryBuffer **) the inputbuffers + * \brief get all inputbuffers needed to calculate an chunk + * \note all inputbuffers must be executed + * \param chunkNumber the chunk to be calculated + * \return (MemoryBuffer **) the inputbuffers */ MemoryBuffer **getInputBuffersCPU(); /** - * @brief get all inputbuffers needed to calculate an chunk - * @note all inputbuffers must be executed - * @param chunkNumber the chunk to be calculated - * @return (MemoryBuffer **) the inputbuffers + * \brief get all inputbuffers needed to calculate an chunk + * \note all inputbuffers must be executed + * \param chunkNumber the chunk to be calculated + * \return (MemoryBuffer **) the inputbuffers */ MemoryBuffer **getInputBuffersOpenCL(int chunkNumber); /** - * @brief allocate the outputbuffer of a chunk - * @param chunkNumber the number of the chunk in the ExecutionGroup - * @param rect the rect of that chunk - * @see determineChunkRect + * \brief allocate the outputbuffer of a chunk + * \param chunkNumber the number of the chunk in the ExecutionGroup + * \param rect the rect of that chunk + * \see determineChunkRect */ MemoryBuffer *allocateOutputBuffer(int chunkNumber, rcti *rect); /** - * @brief after a chunk is executed the needed resources can be freed or unlocked. - * @param chunknumber - * @param memorybuffers + * \brief after a chunk is executed the needed resources can be freed or unlocked. + * \param chunknumber + * \param memorybuffers */ void finalizeChunkExecution(int chunkNumber, MemoryBuffer **memoryBuffers); /** - * @brief deinitExecution is called just after execution the whole graph. - * @note It will release all needed resources + * \brief deinitExecution is called just after execution the whole graph. + * \note It will release all needed resources */ void deinitExecution(); /** - * @brief schedule an ExecutionGroup - * @note this method will return when all chunks have been calculated, or the execution has breaked (by user) + * \brief schedule an ExecutionGroup + * \note this method will return when all chunks have been calculated, or the execution has breaked (by user) * * first the order of the chunks will be determined. This is determined by finding the ViewerOperation and get the relevant information from it. * - ChunkOrdering @@ -371,43 +371,43 @@ public: * * After determining the order of the chunks the chunks will be scheduled * - * @see ViewerOperation - * @param system + * \see ViewerOperation + * \param system */ void execute(ExecutionSystem *system); /** - * @brief this method determines the MemoryProxy's where this execution group depends on. - * @note After this method determineDependingAreaOfInterest can be called to determine - * @note the area of the MemoryProxy.creator that has to be executed. - * @param memoryProxies result + * \brief this method determines the MemoryProxy's where this execution group depends on. + * \note After this method determineDependingAreaOfInterest can be called to determine + * \note the area of the MemoryProxy.creator that has to be executed. + * \param memoryProxies result */ void determineDependingMemoryProxies(vector<MemoryProxy *> *memoryProxies); /** - * @brief Determine the rect (minx, maxx, miny, maxy) of a chunk. - * @note Only gives useful results ater the determination of the chunksize - * @see determineChunkSize() + * \brief Determine the rect (minx, maxx, miny, maxy) of a chunk. + * \note Only gives useful results ater the determination of the chunksize + * \see determineChunkSize() */ void determineChunkRect(rcti *rect, const unsigned int chunkNumber) const; /** - * @brief can this ExecutionGroup be scheduled on an OpenCLDevice - * @see WorkScheduler.schedule + * \brief can this ExecutionGroup be scheduled on an OpenCLDevice + * \see WorkScheduler.schedule */ bool isOpenCL(); void setChunksize(int chunksize) { this->m_chunkSize = chunksize; } /** - * @brief get the Render priority of this ExecutionGroup - * @see ExecutionSystem.execute + * \brief get the Render priority of this ExecutionGroup + * \see ExecutionSystem.execute */ CompositorPriority getRenderPriotrity(); /** - * @brief set border for viewer operation - * @note all the coordinates are assumed to be in normalized space + * \brief set border for viewer operation + * \note all the coordinates are assumed to be in normalized space */ void setViewerBorder(float xmin, float xmax, float ymin, float ymax); diff --git a/source/blender/compositor/intern/COM_ExecutionSystem.h b/source/blender/compositor/intern/COM_ExecutionSystem.h index 0990df31c55..5b0d36ebacd 100644 --- a/source/blender/compositor/intern/COM_ExecutionSystem.h +++ b/source/blender/compositor/intern/COM_ExecutionSystem.h @@ -33,23 +33,23 @@ class ExecutionGroup; #include "COM_NodeOperation.h" /** - * @page execution Execution model + * \page execution Execution model * In order to get to an efficient model for execution, several steps are being done. these steps are explained below. * - * @section EM_Step1 Step 1: translating blender node system to the new compsitor system + * \section EM_Step1 Step 1: translating blender node system to the new compsitor system * Blenders node structure is based on C structs (DNA). These structs are not efficient in the new architecture. * We want to use classes in order to simplify the system. * during this step the blender node_tree is evaluated and converted to a CPP node system. * - * @see ExecutionSystem - * @see Converter.convert - * @see Node + * \see ExecutionSystem + * \see Converter.convert + * \see Node * - * @section EM_Step2 Step2: translating nodes to operations + * \section EM_Step2 Step2: translating nodes to operations * Ungrouping the GroupNodes. Group nodes are node_tree's in node_tree's. * The new system only supports a single level of node_tree. We will 'flatten' the system in a single level. - * @see GroupNode - * @see ExecutionSystemHelper.ungroup + * \see GroupNode + * \see ExecutionSystemHelper.ungroup * * Every node has the ability to convert itself to operations. The node itself is responsible to create a correct * NodeOperation setup based on its internal settings. @@ -59,11 +59,11 @@ class ExecutionGroup; * based on the selected Mixtype a different operation will be used. * for more information see the page about creating new Nodes. [@subpage newnode] * - * @see ExecutionSystem.convertToOperations - * @see Node.convertToOperations - * @see NodeOperation base class for all operations in the system + * \see ExecutionSystem.convertToOperations + * \see Node.convertToOperations + * \see NodeOperation base class for all operations in the system * - * @section EM_Step3 Step3: add additional conversions to the operation system + * \section EM_Step3 Step3: add additional conversions to the operation system * - Data type conversions: the system has 3 data types COM_DT_VALUE, COM_DT_VECTOR, COM_DT_COLOR. * The user can connect a Value socket to a color socket. * As values are ordered differently than colors a conversion happens. @@ -77,10 +77,10 @@ class ExecutionGroup; * - [@ref InputSocketResizeMode.COM_SC_STRETCH]: The width and the height of both images are aligned * - [@ref InputSocketResizeMode.COM_SC_NO_RESIZE]: bottom left of the images are aligned. * - * @see Converter.convertDataType Datatype conversions - * @see Converter.convertResolution Image size conversions + * \see Converter.convertDataType Datatype conversions + * \see Converter.convertResolution Image size conversions * - * @section EM_Step4 Step4: group operations in executions groups + * \section EM_Step4 Step4: group operations in executions groups * ExecutionGroup are groups of operations that are calculated as being one bigger operation. * All operations will be part of an ExecutionGroup. * Complex nodes will be added to separate groups. Between ExecutionGroup's the data will be stored in MemoryBuffers. @@ -101,14 +101,14 @@ class ExecutionGroup; * |cFAA | |cFAA | |cFAA | |cFAA | * +------+ +------+ +-------+ +-------+ * </pre> - * @see ExecutionSystem.groupOperations method doing this step - * @see ExecutionSystem.addReadWriteBufferOperations - * @see NodeOperation.isComplex - * @see ExecutionGroup class representing the ExecutionGroup + * \see ExecutionSystem.groupOperations method doing this step + * \see ExecutionSystem.addReadWriteBufferOperations + * \see NodeOperation.isComplex + * \see ExecutionGroup class representing the ExecutionGroup */ /** - * @brief the ExecutionSystem contains the whole compositor tree. + * \brief the ExecutionSystem contains the whole compositor tree. */ class ExecutionSystem { public: @@ -117,17 +117,17 @@ public: private: /** - * @brief the context used during execution + * \brief the context used during execution */ CompositorContext m_context; /** - * @brief vector of operations + * \brief vector of operations */ Operations m_operations; /** - * @brief vector of groups + * \brief vector of groups */ Groups m_groups; @@ -144,11 +144,11 @@ private: //methods public: /** - * @brief Create a new ExecutionSystem and initialize it with the + * \brief Create a new ExecutionSystem and initialize it with the * editingtree. * - * @param editingtree [bNodeTree *] - * @param rendering [true false] + * \param editingtree [bNodeTree *] + * \param rendering [true false] */ ExecutionSystem(RenderData *rd, Scene *scene, bNodeTree *editingtree, bool rendering, bool fastcalculation, const ColorManagedViewSettings *viewSettings, const ColorManagedDisplaySettings *displaySettings, @@ -162,7 +162,7 @@ public: void set_operations(const Operations &operations, const Groups &groups); /** - * @brief execute this system + * \brief execute this system * - initialize the NodeOperation's and ExecutionGroup's * - schedule the output ExecutionGroup's based on their priority * - deinitialize the ExecutionGroup's and NodeOperation's @@ -170,7 +170,7 @@ public: void execute(); /** - * @brief get the reference to the compositor context + * \brief get the reference to the compositor context */ const CompositorContext &getContext() const { return this->m_context; } diff --git a/source/blender/compositor/intern/COM_MemoryBuffer.h b/source/blender/compositor/intern/COM_MemoryBuffer.h index 5f6485475d0..e8c71d0fd55 100644 --- a/source/blender/compositor/intern/COM_MemoryBuffer.h +++ b/source/blender/compositor/intern/COM_MemoryBuffer.h @@ -35,15 +35,15 @@ extern "C" { } /** - * @brief state of a memory buffer - * @ingroup Memory + * \brief state of a memory buffer + * \ingroup Memory */ typedef enum MemoryBufferState { - /** @brief memory has been allocated on creator device and CPU machine, but kernel has not been executed */ + /** \brief memory has been allocated on creator device and CPU machine, but kernel has not been executed */ COM_MB_ALLOCATED = 1, - /** @brief memory is available for use, content has been created */ + /** \brief memory is available for use, content has been created */ COM_MB_AVAILABLE = 2, - /** @brief chunk is consolidated from other chunks. special state.*/ + /** \brief chunk is consolidated from other chunks. special state.*/ COM_MB_TEMPORARILY = 6 } MemoryBufferState; @@ -56,44 +56,44 @@ typedef enum MemoryBufferExtend { class MemoryProxy; /** - * @brief a MemoryBuffer contains access to the data of a chunk + * \brief a MemoryBuffer contains access to the data of a chunk */ class MemoryBuffer { private: /** - * @brief proxy of the memory (same for all chunks in the same buffer) + * \brief proxy of the memory (same for all chunks in the same buffer) */ MemoryProxy *m_memoryProxy; /** - * @brief the type of buffer COM_DT_VALUE, COM_DT_VECTOR, COM_DT_COLOR + * \brief the type of buffer COM_DT_VALUE, COM_DT_VECTOR, COM_DT_COLOR */ DataType m_datatype; /** - * @brief region of this buffer inside relative to the MemoryProxy + * \brief region of this buffer inside relative to the MemoryProxy */ rcti m_rect; /** * brief refers to the chunknumber within the executiongroup where related to the MemoryProxy - * @see memoryProxy + * \see memoryProxy */ unsigned int m_chunkNumber; /** - * @brief state of the buffer + * \brief state of the buffer */ MemoryBufferState m_state; /** - * @brief the actual float buffer/data + * \brief the actual float buffer/data */ float *m_buffer; /** - * @brief the number of channels of a single value in the buffer. + * \brief the number of channels of a single value in the buffer. * For value buffers this is 1, vector 3 and color 4 */ unsigned int m_num_channels; @@ -103,40 +103,40 @@ private: public: /** - * @brief construct new MemoryBuffer for a chunk + * \brief construct new MemoryBuffer for a chunk */ MemoryBuffer(MemoryProxy *memoryProxy, unsigned int chunkNumber, rcti *rect); /** - * @brief construct new temporarily MemoryBuffer for an area + * \brief construct new temporarily MemoryBuffer for an area */ MemoryBuffer(MemoryProxy *memoryProxy, rcti *rect); /** - * @brief construct new temporarily MemoryBuffer for an area + * \brief construct new temporarily MemoryBuffer for an area */ MemoryBuffer(DataType datatype, rcti *rect); /** - * @brief destructor + * \brief destructor */ ~MemoryBuffer(); /** - * @brief read the ChunkNumber of this MemoryBuffer + * \brief read the ChunkNumber of this MemoryBuffer */ unsigned int getChunkNumber() { return this->m_chunkNumber; } unsigned int get_num_channels() { return this->m_num_channels; } /** - * @brief get the data of this MemoryBuffer - * @note buffer should already be available in memory + * \brief get the data of this MemoryBuffer + * \note buffer should already be available in memory */ float *getBuffer() { return this->m_buffer; } /** - * @brief after execution the state will be set to available by calling this method + * \brief after execution the state will be set to available by calling this method */ void setCreatedState() { @@ -273,36 +273,36 @@ public: void readEWA(float *result, const float uv[2], const float derivatives[2][2]); /** - * @brief is this MemoryBuffer a temporarily buffer (based on an area, not on a chunk) + * \brief is this MemoryBuffer a temporarily buffer (based on an area, not on a chunk) */ inline const bool isTemporarily() const { return this->m_state == COM_MB_TEMPORARILY; } /** - * @brief add the content from otherBuffer to this MemoryBuffer - * @param otherBuffer source buffer + * \brief add the content from otherBuffer to this MemoryBuffer + * \param otherBuffer source buffer * - * @note take care when running this on a new buffer since it wont fill in + * \note take care when running this on a new buffer since it wont fill in * uninitialized values in areas where the buffers don't overlap. */ void copyContentFrom(MemoryBuffer *otherBuffer); /** - * @brief get the rect of this MemoryBuffer + * \brief get the rect of this MemoryBuffer */ rcti *getRect() { return &this->m_rect; } /** - * @brief get the width of this MemoryBuffer + * \brief get the width of this MemoryBuffer */ int getWidth() const; /** - * @brief get the height of this MemoryBuffer + * \brief get the height of this MemoryBuffer */ int getHeight() const; /** - * @brief clear the buffer. Make all pixels black transparent. + * \brief clear the buffer. Make all pixels black transparent. */ void clear(); diff --git a/source/blender/compositor/intern/COM_MemoryProxy.h b/source/blender/compositor/intern/COM_MemoryProxy.h index a628c09fa1f..884b32fd6ff 100644 --- a/source/blender/compositor/intern/COM_MemoryProxy.h +++ b/source/blender/compositor/intern/COM_MemoryProxy.h @@ -31,40 +31,40 @@ class ExecutionGroup; class WriteBufferOperation; /** - * @brief A MemoryProxy is a unique identifier for a memory buffer. + * \brief A MemoryProxy is a unique identifier for a memory buffer. * A single MemoryProxy is used among all chunks of the same buffer, * the MemoryBuffer only stores the data of a single chunk. - * @ingroup Memory + * \ingroup Memory */ class MemoryProxy { private: /** - * @brief reference to the ouput operation of the executiongroup + * \brief reference to the ouput operation of the executiongroup */ WriteBufferOperation *m_writeBufferOperation; /** - * @brief reference to the executor. the Execution group that can fill a chunk + * \brief reference to the executor. the Execution group that can fill a chunk */ ExecutionGroup *m_executor; /** - * @brief datatype of this MemoryProxy + * \brief datatype of this MemoryProxy */ /* DataType m_datatype; */ /* UNUSED */ /** - * @brief channel information of this buffer + * \brief channel information of this buffer */ /* ChannelInfo m_channelInfo[COM_NUMBER_OF_CHANNELS]; */ /* UNUSED */ /** - * @brief the allocated memory + * \brief the allocated memory */ MemoryBuffer *m_buffer; /** - * @brief datatype of this MemoryProxy + * \brief datatype of this MemoryProxy */ DataType m_datatype; @@ -72,40 +72,40 @@ public: MemoryProxy(DataType type); /** - * @brief set the ExecutionGroup that can be scheduled to calculate a certain chunk. - * @param group the ExecutionGroup to set + * \brief set the ExecutionGroup that can be scheduled to calculate a certain chunk. + * \param group the ExecutionGroup to set */ void setExecutor(ExecutionGroup *executor) { this->m_executor = executor; } /** - * @brief get the ExecutionGroup that can be scheduled to calculate a certain chunk. + * \brief get the ExecutionGroup that can be scheduled to calculate a certain chunk. */ ExecutionGroup *getExecutor() { return this->m_executor; } /** - * @brief set the WriteBufferOperation that is responsible for writing to this MemoryProxy - * @param operation + * \brief set the WriteBufferOperation that is responsible for writing to this MemoryProxy + * \param operation */ void setWriteBufferOperation(WriteBufferOperation *operation) { this->m_writeBufferOperation = operation; } /** - * @brief get the WriteBufferOperation that is responsible for writing to this MemoryProxy - * @return WriteBufferOperation + * \brief get the WriteBufferOperation that is responsible for writing to this MemoryProxy + * \return WriteBufferOperation */ WriteBufferOperation *getWriteBufferOperation() { return this->m_writeBufferOperation; } /** - * @brief allocate memory of size width x height + * \brief allocate memory of size width x height */ void allocate(unsigned int width, unsigned int height); /** - * @brief free the allocated memory + * \brief free the allocated memory */ void free(); /** - * @brief get the allocated memory + * \brief get the allocated memory */ inline MemoryBuffer *getBuffer() { return this->m_buffer; } diff --git a/source/blender/compositor/intern/COM_Node.h b/source/blender/compositor/intern/COM_Node.h index 1b78e7fec6d..f57568350c0 100644 --- a/source/blender/compositor/intern/COM_Node.h +++ b/source/blender/compositor/intern/COM_Node.h @@ -48,43 +48,43 @@ public: private: /** - * @brief stores the reference to the SDNA bNode struct + * \brief stores the reference to the SDNA bNode struct */ bNodeTree *m_editorNodeTree; /** - * @brief stores the reference to the SDNA bNode struct + * \brief stores the reference to the SDNA bNode struct */ bNode *m_editorNode; /** - * @brief the list of actual inputsockets @see NodeInput + * \brief the list of actual inputsockets \see NodeInput */ Inputs m_inputsockets; /** - * @brief the list of actual outputsockets @see NodeOutput + * \brief the list of actual outputsockets \see NodeOutput */ Outputs m_outputsockets; /** - * @brief Is this node part of the active group + * \brief Is this node part of the active group */ bool m_inActiveGroup; /** - * @brief Instance key to identify the node in an instance hash table + * \brief Instance key to identify the node in an instance hash table */ bNodeInstanceKey m_instanceKey; protected: /** - * @brief get access to the vector of input sockets + * \brief get access to the vector of input sockets */ const Inputs &getInputSockets() const { return this->m_inputsockets; } /** - * @brief get access to the vector of input sockets + * \brief get access to the vector of input sockets */ const Outputs &getOutputSockets() const { return this->m_outputsockets; } @@ -93,55 +93,55 @@ public: virtual ~Node(); /** - * @brief get the reference to the SDNA bNode struct + * \brief get the reference to the SDNA bNode struct */ bNode *getbNode() const {return m_editorNode;} /** - * @brief get the reference to the SDNA bNodeTree struct + * \brief get the reference to the SDNA bNodeTree struct */ bNodeTree *getbNodeTree() const {return m_editorNodeTree;} /** - * @brief set the reference to the bNode - * @note used in Node instances to receive the storage/settings and complex node for highlight during execution - * @param bNode + * \brief set the reference to the bNode + * \note used in Node instances to receive the storage/settings and complex node for highlight during execution + * \param bNode */ void setbNode(bNode *node) {this->m_editorNode = node;} /** - * @brief set the reference to the bNodeTree - * @param bNodeTree + * \brief set the reference to the bNodeTree + * \param bNodeTree */ void setbNodeTree(bNodeTree *nodetree) {this->m_editorNodeTree = nodetree;} /** - * @brief Return the number of input sockets of this node. + * \brief Return the number of input sockets of this node. */ const unsigned int getNumberOfInputSockets() const { return this->m_inputsockets.size(); } /** - * @brief Return the number of output sockets of this node. + * \brief Return the number of output sockets of this node. */ const unsigned int getNumberOfOutputSockets() const { return this->m_outputsockets.size(); } /** * get the reference to a certain outputsocket - * @param index + * \param index * the index of the needed outputsocket */ NodeOutput *getOutputSocket(const unsigned int index) const; /** * get the reference to the first outputsocket - * @param index + * \param index * the index of the needed outputsocket */ inline NodeOutput *getOutputSocket() const { return getOutputSocket(0); } /** * get the reference to a certain inputsocket - * @param index + * \param index * the index of the needed inputsocket */ NodeInput *getInputSocket(const unsigned int index) const; @@ -152,26 +152,26 @@ public: bool isInputNode() const { return m_inputsockets.empty(); } /** - * @brief Is this node in the active group (the group that is being edited) - * @param isInActiveGroup + * \brief Is this node in the active group (the group that is being edited) + * \param isInActiveGroup */ void setIsInActiveGroup(bool value) { this->m_inActiveGroup = value; } /** - * @brief Is this node part of the active group + * \brief Is this node part of the active group * the active group is the group that is currently being edited. When no group is edited, * the active group will be the main tree (all nodes that are not part of a group will be active) - * @return bool [false:true] + * \return bool [false:true] */ inline bool isInActiveGroup() const { return this->m_inActiveGroup; } /** - * @brief convert node to operation + * \brief convert node to operation * - * @todo this must be described further + * \todo this must be described further * - * @param system the ExecutionSystem where the operations need to be added - * @param context reference to the CompositorContext + * \param system the ExecutionSystem where the operations need to be added + * \param context reference to the CompositorContext */ virtual void convertToOperations(NodeConverter &converter, const CompositorContext &context) const = 0; @@ -191,17 +191,17 @@ public: protected: /** - * @brief add an NodeInput to the collection of inputsockets - * @note may only be called in an constructor - * @param socket the NodeInput to add + * \brief add an NodeInput to the collection of inputsockets + * \note may only be called in an constructor + * \param socket the NodeInput to add */ void addInputSocket(DataType datatype); void addInputSocket(DataType datatype, bNodeSocket *socket); /** - * @brief add an NodeOutput to the collection of outputsockets - * @note may only be called in an constructor - * @param socket the NodeOutput to add + * \brief add an NodeOutput to the collection of outputsockets + * \note may only be called in an constructor + * \param socket the NodeOutput to add */ void addOutputSocket(DataType datatype); void addOutputSocket(DataType datatype, bNodeSocket *socket); @@ -212,8 +212,8 @@ protected: /** - * @brief NodeInput are sockets that can receive data/input - * @ingroup Model + * \brief NodeInput are sockets that can receive data/input + * \ingroup Model */ class NodeInput { private: @@ -223,7 +223,7 @@ private: DataType m_datatype; /** - * @brief link connected to this NodeInput. + * \brief link connected to this NodeInput. * An input socket can only have a single link */ NodeOutput *m_link; @@ -246,8 +246,8 @@ public: /** - * @brief NodeOutput are sockets that can send data/input - * @ingroup Model + * \brief NodeOutput are sockets that can send data/input + * \ingroup Model */ class NodeOutput { private: diff --git a/source/blender/compositor/intern/COM_NodeGraph.cpp b/source/blender/compositor/intern/COM_NodeGraph.cpp index d78450074ed..94af8543eb0 100644 --- a/source/blender/compositor/intern/COM_NodeGraph.cpp +++ b/source/blender/compositor/intern/COM_NodeGraph.cpp @@ -176,7 +176,7 @@ NodeOutput *NodeGraph::find_output(const NodeRange &node_range, bNodeSocket *b_s void NodeGraph::add_bNodeLink(const NodeRange &node_range, bNodeLink *b_nodelink) { - /// @note: ignore invalid links + /// \note: ignore invalid links if (!(b_nodelink->flag & NODE_LINK_VALID)) return; if ((b_nodelink->fromsock->flag & SOCK_UNAVAIL) || (b_nodelink->tosock->flag & SOCK_UNAVAIL)) diff --git a/source/blender/compositor/intern/COM_NodeOperation.h b/source/blender/compositor/intern/COM_NodeOperation.h index 9ab9156e7e4..e5c27be5c5b 100644 --- a/source/blender/compositor/intern/COM_NodeOperation.h +++ b/source/blender/compositor/intern/COM_NodeOperation.h @@ -52,30 +52,30 @@ class NodeOperationInput; class NodeOperationOutput; /** - * @brief Resize modes of inputsockets + * \brief Resize modes of inputsockets * How are the input and working resolutions matched - * @ingroup Model + * \ingroup Model */ typedef enum InputResizeMode { - /** @brief Center the input image to the center of the working area of the node, no resizing occurs */ + /** \brief Center the input image to the center of the working area of the node, no resizing occurs */ COM_SC_CENTER = NS_CR_CENTER, - /** @brief The bottom left of the input image is the bottom left of the working area of the node, no resizing occurs */ + /** \brief The bottom left of the input image is the bottom left of the working area of the node, no resizing occurs */ COM_SC_NO_RESIZE = NS_CR_NONE, - /** @brief Fit the width of the input image to the width of the working area of the node */ + /** \brief Fit the width of the input image to the width of the working area of the node */ COM_SC_FIT_WIDTH = NS_CR_FIT_WIDTH, - /** @brief Fit the height of the input image to the height of the working area of the node */ + /** \brief Fit the height of the input image to the height of the working area of the node */ COM_SC_FIT_HEIGHT = NS_CR_FIT_HEIGHT, - /** @brief Fit the width or the height of the input image to the width or height of the working area of the node, image will be larger than the working area */ + /** \brief Fit the width or the height of the input image to the width or height of the working area of the node, image will be larger than the working area */ COM_SC_FIT = NS_CR_FIT, - /** @brief Fit the width and the height of the input image to the width and height of the working area of the node, image will be equally larger than the working area */ + /** \brief Fit the width and the height of the input image to the width and height of the working area of the node, image will be equally larger than the working area */ COM_SC_STRETCH = NS_CR_STRETCH } InputResizeMode; /** - * @brief NodeOperation contains calculation logic + * \brief NodeOperation contains calculation logic * * Subclasses needs to implement the execution method (defined in SocketReader) to implement logic. - * @ingroup Model + * \ingroup Model */ class NodeOperation : public SocketReader { public: @@ -87,12 +87,12 @@ private: Outputs m_outputs; /** - * @brief the index of the input socket that will be used to determine the resolution + * \brief the index of the input socket that will be used to determine the resolution */ unsigned int m_resolutionInputSocketIndex; /** - * @brief is this operation a complex one. + * \brief is this operation a complex one. * * Complex operations are typically doing many reads to calculate the output of a single pixel. * Mostly Filter types (Blurs, Convolution, Defocus etc) need this to be set to true. @@ -100,29 +100,29 @@ private: bool m_complex; /** - * @brief can this operation be scheduled on an OpenCL device. - * @note Only applicable if complex is True + * \brief can this operation be scheduled on an OpenCL device. + * \note Only applicable if complex is True */ bool m_openCL; /** - * @brief mutex reference for very special node initializations - * @note only use when you really know what you are doing. + * \brief mutex reference for very special node initializations + * \note only use when you really know what you are doing. * this mutex is used to share data among chunks in the same operation - * @see TonemapOperation for an example of usage - * @see NodeOperation.initMutex initializes this mutex - * @see NodeOperation.deinitMutex deinitializes this mutex - * @see NodeOperation.getMutex retrieve a pointer to this mutex. + * \see TonemapOperation for an example of usage + * \see NodeOperation.initMutex initializes this mutex + * \see NodeOperation.deinitMutex deinitializes this mutex + * \see NodeOperation.getMutex retrieve a pointer to this mutex. */ ThreadMutex m_mutex; /** - * @brief reference to the editing bNodeTree, used for break and update callback + * \brief reference to the editing bNodeTree, used for break and update callback */ const bNodeTree *m_btree; /** - * @brief set to truth when resolution for this operation is set + * \brief set to truth when resolution for this operation is set */ bool m_isResolutionSet; @@ -141,25 +141,25 @@ public: bool isInputOperation() const { return m_inputs.empty(); } /** - * @brief determine the resolution of this node - * @note this method will not set the resolution, this is the responsibility of the caller - * @param resolution the result of this operation - * @param preferredResolution the preferable resolution as no resolution could be determined + * \brief determine the resolution of this node + * \note this method will not set the resolution, this is the responsibility of the caller + * \param resolution the result of this operation + * \param preferredResolution the preferable resolution as no resolution could be determined */ virtual void determineResolution(unsigned int resolution[2], unsigned int preferredResolution[2]); /** - * @brief isOutputOperation determines whether this operation is an output of the ExecutionSystem during rendering or editing. + * \brief isOutputOperation determines whether this operation is an output of the ExecutionSystem during rendering or editing. * * Default behaviour if not overridden, this operation will not be evaluated as being an output of the ExecutionSystem. * - * @see ExecutionSystem - * @group check - * @param rendering [true false] + * \see ExecutionSystem + * \group check + * \param rendering [true false] * true: rendering * false: editing * - * @return bool the result of this method + * \return bool the result of this method */ virtual bool isOutputOperation(bool /*rendering*/) const { return false; } @@ -169,26 +169,26 @@ public: virtual void initExecution(); /** - * @brief when a chunk is executed by a CPUDevice, this method is called - * @ingroup execution - * @param rect the rectangle of the chunk (location and size) - * @param chunkNumber the chunkNumber to be calculated - * @param memoryBuffers all input MemoryBuffer's needed + * \brief when a chunk is executed by a CPUDevice, this method is called + * \ingroup execution + * \param rect the rectangle of the chunk (location and size) + * \param chunkNumber the chunkNumber to be calculated + * \param memoryBuffers all input MemoryBuffer's needed */ virtual void executeRegion(rcti * /*rect*/, unsigned int /*chunkNumber*/) {} /** - * @brief when a chunk is executed by an OpenCLDevice, this method is called - * @ingroup execution - * @note this method is only implemented in WriteBufferOperation - * @param context the OpenCL context - * @param program the OpenCL program containing all compositor kernels - * @param queue the OpenCL command queue of the device the chunk is executed on - * @param rect the rectangle of the chunk (location and size) - * @param chunkNumber the chunkNumber to be calculated - * @param memoryBuffers all input MemoryBuffer's needed - * @param outputBuffer the outputbuffer to write to + * \brief when a chunk is executed by an OpenCLDevice, this method is called + * \ingroup execution + * \note this method is only implemented in WriteBufferOperation + * \param context the OpenCL context + * \param program the OpenCL program containing all compositor kernels + * \param queue the OpenCL command queue of the device the chunk is executed on + * \param rect the rectangle of the chunk (location and size) + * \param chunkNumber the chunkNumber to be calculated + * \param memoryBuffers all input MemoryBuffer's needed + * \param outputBuffer the outputbuffer to write to */ virtual void executeOpenCLRegion(OpenCLDevice * /*device*/, rcti * /*rect*/, @@ -197,16 +197,16 @@ public: MemoryBuffer * /*outputBuffer*/) {} /** - * @brief custom handle to add new tasks to the OpenCL command queue in order to execute a chunk on an GPUDevice - * @ingroup execution - * @param context the OpenCL context - * @param program the OpenCL program containing all compositor kernels - * @param queue the OpenCL command queue of the device the chunk is executed on - * @param outputMemoryBuffer the allocated memory buffer in main CPU memory - * @param clOutputBuffer the allocated memory buffer in OpenCLDevice memory - * @param inputMemoryBuffers all input MemoryBuffer's needed - * @param clMemToCleanUp all created cl_mem references must be added to this list. Framework will clean this after execution - * @param clKernelsToCleanUp all created cl_kernel references must be added to this list. Framework will clean this after execution + * \brief custom handle to add new tasks to the OpenCL command queue in order to execute a chunk on an GPUDevice + * \ingroup execution + * \param context the OpenCL context + * \param program the OpenCL program containing all compositor kernels + * \param queue the OpenCL command queue of the device the chunk is executed on + * \param outputMemoryBuffer the allocated memory buffer in main CPU memory + * \param clOutputBuffer the allocated memory buffer in OpenCLDevice memory + * \param inputMemoryBuffers all input MemoryBuffer's needed + * \param clMemToCleanUp all created cl_mem references must be added to this list. Framework will clean this after execution + * \param clKernelsToCleanUp all created cl_kernel references must be added to this list. Framework will clean this after execution */ virtual void executeOpenCL(OpenCLDevice * /*device*/, MemoryBuffer * /*outputMemoryBuffer*/, @@ -221,8 +221,8 @@ public: } /** - * @brief set the resolution - * @param resolution the resolution to set + * \brief set the resolution + * \param resolution the resolution to set */ void setResolution(unsigned int resolution[2]) { if (!isResolutionSet()) { @@ -236,7 +236,7 @@ public: void getConnectedInputSockets(Inputs *sockets); /** - * @brief is this operation complex + * \brief is this operation complex * * Complex operations are typically doing many reads to calculate the output of a single pixel. * Mostly Filter types (Blurs, Convolution, Defocus etc) need this to be set to true. @@ -246,46 +246,46 @@ public: virtual bool isSetOperation() const { return false; } /** - * @brief is this operation of type ReadBufferOperation - * @return [true:false] - * @see ReadBufferOperation + * \brief is this operation of type ReadBufferOperation + * \return [true:false] + * \see ReadBufferOperation */ virtual const bool isReadBufferOperation() const { return false; } /** - * @brief is this operation of type WriteBufferOperation - * @return [true:false] - * @see WriteBufferOperation + * \brief is this operation of type WriteBufferOperation + * \return [true:false] + * \see WriteBufferOperation */ virtual const bool isWriteBufferOperation() const { return false; } /** - * @brief is this operation the active viewer output + * \brief is this operation the active viewer output * user can select an ViewerNode to be active (the result of this node will be drawn on the backdrop) - * @return [true:false] - * @see BaseViewerOperation + * \return [true:false] + * \see BaseViewerOperation */ virtual const bool isActiveViewerOutput() const { return false; } virtual bool determineDependingAreaOfInterest(rcti *input, ReadBufferOperation *readOperation, rcti *output); /** - * @brief set the index of the input socket that will determine the resolution of this operation - * @param index the index to set + * \brief set the index of the input socket that will determine the resolution of this operation + * \param index the index to set */ void setResolutionInputSocketIndex(unsigned int index); /** - * @brief get the render priority of this node. - * @note only applicable for output operations like ViewerOperation - * @return CompositorPriority + * \brief get the render priority of this node. + * \note only applicable for output operations like ViewerOperation + * \return CompositorPriority */ virtual const CompositorPriority getRenderPriority() const { return COM_PRIORITY_LOW; } /** - * @brief can this NodeOperation be scheduled on an OpenCLDevice - * @see WorkScheduler.schedule - * @see ExecutionGroup.addOperation + * \brief can this NodeOperation be scheduled on an OpenCLDevice + * \see WorkScheduler.schedule + * \see ExecutionGroup.addOperation */ bool isOpenCL() const { return this->m_openCL; } @@ -321,7 +321,7 @@ protected: void unlockMutex(); /** - * @brief set whether this operation is complex + * \brief set whether this operation is complex * * Complex operations are typically doing many reads to calculate the output of a single pixel. * Mostly Filter types (Blurs, Convolution, Defocus etc) need this to be set to true. @@ -329,7 +329,7 @@ protected: void setComplex(bool complex) { this->m_complex = complex; } /** - * @brief set if this NodeOperation can be scheduled on a OpenCLDevice + * \brief set if this NodeOperation can be scheduled on a OpenCLDevice */ void setOpenCL(bool openCL) { this->m_openCL = openCL; } @@ -347,7 +347,7 @@ private: NodeOperation *m_operation; /** Datatype of this socket. Is used for automatically data transformation. - * @section data-conversion + * \section data-conversion */ DataType m_datatype; @@ -385,7 +385,7 @@ private: NodeOperation *m_operation; /** Datatype of this socket. Is used for automatically data transformation. - * @section data-conversion + * \section data-conversion */ DataType m_datatype; @@ -396,9 +396,9 @@ public: DataType getDataType() const { return m_datatype; } /** - * @brief determine the resolution of this data going through this socket - * @param resolution the result of this operation - * @param preferredResolution the preferable resolution as no resolution could be determined + * \brief determine the resolution of this data going through this socket + * \param resolution the result of this operation + * \param preferredResolution the preferable resolution as no resolution could be determined */ void determineResolution(unsigned int resolution[2], unsigned int preferredResolution[2]); diff --git a/source/blender/compositor/intern/COM_OpenCLDevice.h b/source/blender/compositor/intern/COM_OpenCLDevice.h index a3a5cd36902..f8dd3750d42 100644 --- a/source/blender/compositor/intern/COM_OpenCLDevice.h +++ b/source/blender/compositor/intern/COM_OpenCLDevice.h @@ -33,70 +33,70 @@ class OpenCLDevice; using std::list; /** - * @brief device representing an GPU OpenCL device. + * \brief device representing an GPU OpenCL device. * an instance of this class represents a single cl_device */ class OpenCLDevice : public Device { private: /** - * @brief opencl context + * \brief opencl context */ cl_context m_context; /** - * @brief opencl device + * \brief opencl device */ cl_device_id m_device; /** - * @brief opencl program + * \brief opencl program */ cl_program m_program; /** - * @brief opencl command queue + * \brief opencl command queue */ cl_command_queue m_queue; /** - * @brief opencl vendor ID + * \brief opencl vendor ID */ cl_int m_vendorID; public: /** - * @brief constructor with opencl device - * @param context - * @param device - * @param program - * @param vendorID + * \brief constructor with opencl device + * \param context + * \param device + * \param program + * \param vendorID */ OpenCLDevice(cl_context context, cl_device_id device, cl_program program, cl_int vendorId); /** - * @brief initialize the device + * \brief initialize the device * During initialization the OpenCL cl_command_queue is created * the command queue is stored in the field queue. - * @see queue + * \see queue */ bool initialize(); /** - * @brief deinitialize the device + * \brief deinitialize the device * During deintiialization the command queue is cleared */ void deinitialize(); /** - * @brief execute a WorkPackage - * @param work the WorkPackage to execute + * \brief execute a WorkPackage + * \param work the WorkPackage to execute */ void execute(WorkPackage *work); /** - * @brief determine an image format - * @param memorybuffer + * \brief determine an image format + * \param memorybuffer */ static const cl_image_format *determineImageFormat(MemoryBuffer *memoryBuffer); diff --git a/source/blender/compositor/intern/COM_SocketReader.h b/source/blender/compositor/intern/COM_SocketReader.h index af6b891e7ab..170b9e1bd35 100644 --- a/source/blender/compositor/intern/COM_SocketReader.h +++ b/source/blender/compositor/intern/COM_SocketReader.h @@ -37,31 +37,31 @@ typedef enum PixelSampler { class MemoryBuffer; /** - * @brief Helper class for reading socket data. + * \brief Helper class for reading socket data. * Only use this class for dispatching (un-ary and n-ary) executions. - * @ingroup Execution + * \ingroup Execution */ class SocketReader { private: protected: /** - * @brief Holds the width of the output of this operation. + * \brief Holds the width of the output of this operation. */ unsigned int m_width; /** - * @brief Holds the height of the output of this operation. + * \brief Holds the height of the output of this operation. */ unsigned int m_height; /** - * @brief calculate a single pixel - * @note this method is called for non-complex - * @param result is a float[4] array to store the result - * @param x the x-coordinate of the pixel to calculate in image space - * @param y the y-coordinate of the pixel to calculate in image space - * @param inputBuffers chunks that can be read by their ReadBufferOperation. + * \brief calculate a single pixel + * \note this method is called for non-complex + * \param result is a float[4] array to store the result + * \param x the x-coordinate of the pixel to calculate in image space + * \param y the y-coordinate of the pixel to calculate in image space + * \param inputBuffers chunks that can be read by their ReadBufferOperation. */ virtual void executePixelSampled(float /*output*/[4], float /*x*/, @@ -69,27 +69,27 @@ protected: PixelSampler /*sampler*/) { } /** - * @brief calculate a single pixel - * @note this method is called for complex - * @param result is a float[4] array to store the result - * @param x the x-coordinate of the pixel to calculate in image space - * @param y the y-coordinate of the pixel to calculate in image space - * @param inputBuffers chunks that can be read by their ReadBufferOperation. - * @param chunkData chunk specific data a during execution time. + * \brief calculate a single pixel + * \note this method is called for complex + * \param result is a float[4] array to store the result + * \param x the x-coordinate of the pixel to calculate in image space + * \param y the y-coordinate of the pixel to calculate in image space + * \param inputBuffers chunks that can be read by their ReadBufferOperation. + * \param chunkData chunk specific data a during execution time. */ virtual void executePixel(float output[4], int x, int y, void * /*chunkData*/) { executePixelSampled(output, x, y, COM_PS_NEAREST); } /** - * @brief calculate a single pixel using an EWA filter - * @note this method is called for complex - * @param result is a float[4] array to store the result - * @param x the x-coordinate of the pixel to calculate in image space - * @param y the y-coordinate of the pixel to calculate in image space - * @param dx - * @param dy - * @param inputBuffers chunks that can be read by their ReadBufferOperation. + * \brief calculate a single pixel using an EWA filter + * \note this method is called for complex + * \param result is a float[4] array to store the result + * \param x the x-coordinate of the pixel to calculate in image space + * \param y the y-coordinate of the pixel to calculate in image space + * \param dx + * \param dy + * \param inputBuffers chunks that can be read by their ReadBufferOperation. */ virtual void executePixelFiltered(float /*output*/[4], float /*x*/, float /*y*/, diff --git a/source/blender/compositor/intern/COM_WorkPackage.h b/source/blender/compositor/intern/COM_WorkPackage.h index b0a74a1b0ee..72677c4e112 100644 --- a/source/blender/compositor/intern/COM_WorkPackage.h +++ b/source/blender/compositor/intern/COM_WorkPackage.h @@ -28,35 +28,35 @@ class ExecutionGroup; #include "COM_ExecutionGroup.h" /** - * @brief contains data about work that can be scheduled - * @see WorkScheduler + * \brief contains data about work that can be scheduled + * \see WorkScheduler */ class WorkPackage { private: /** - * @brief executionGroup with the operations-setup to be evaluated + * \brief executionGroup with the operations-setup to be evaluated */ ExecutionGroup *m_executionGroup; /** - * @brief number of the chunk to be executed + * \brief number of the chunk to be executed */ unsigned int m_chunkNumber; public: /** * constructor - * @param group the ExecutionGroup - * @param chunkNumber the number of the chunk + * \param group the ExecutionGroup + * \param chunkNumber the number of the chunk */ WorkPackage(ExecutionGroup *group, unsigned int chunkNumber); /** - * @brief get the ExecutionGroup + * \brief get the ExecutionGroup */ ExecutionGroup *getExecutionGroup() const { return this->m_executionGroup; } /** - * @brief get the number of the chunk + * \brief get the number of the chunk */ unsigned int getChunkNumber() const { return this->m_chunkNumber; } diff --git a/source/blender/compositor/intern/COM_WorkScheduler.cpp b/source/blender/compositor/intern/COM_WorkScheduler.cpp index 4136983e13c..5be76d84e33 100644 --- a/source/blender/compositor/intern/COM_WorkScheduler.cpp +++ b/source/blender/compositor/intern/COM_WorkScheduler.cpp @@ -49,25 +49,25 @@ #endif -/// @brief list of all CPUDevices. for every hardware thread an instance of CPUDevice is created +/// \brief list of all CPUDevices. for every hardware thread an instance of CPUDevice is created static vector<CPUDevice*> g_cpudevices; static ThreadLocal(CPUDevice *) g_thread_device; #if COM_CURRENT_THREADING_MODEL == COM_TM_QUEUE -/// @brief list of all thread for every CPUDevice in cpudevices a thread exists +/// \brief list of all thread for every CPUDevice in cpudevices a thread exists static ListBase g_cputhreads; static bool g_cpuInitialized = false; -/// @brief all scheduled work for the cpu +/// \brief all scheduled work for the cpu static ThreadQueue *g_cpuqueue; static ThreadQueue *g_gpuqueue; #ifdef COM_OPENCL_ENABLED static cl_context g_context; static cl_program g_program; -/// @brief list of all OpenCLDevices. for every OpenCL GPU device an instance of OpenCLDevice is created +/// \brief list of all OpenCLDevices. for every OpenCL GPU device an instance of OpenCLDevice is created static vector<OpenCLDevice *> g_gpudevices; -/// @brief list of all thread for every GPUDevice in cpudevices a thread exists +/// \brief list of all thread for every GPUDevice in cpudevices a thread exists static ListBase g_gputhreads; -/// @brief all scheduled work for the gpu +/// \brief all scheduled work for the gpu #ifdef COM_OPENCL_ENABLED static bool g_openclActive = false; static bool g_openclInitialized = false; diff --git a/source/blender/compositor/intern/COM_WorkScheduler.h b/source/blender/compositor/intern/COM_WorkScheduler.h index a08b3856a8b..a6de517983e 100644 --- a/source/blender/compositor/intern/COM_WorkScheduler.h +++ b/source/blender/compositor/intern/COM_WorkScheduler.h @@ -31,43 +31,43 @@ extern "C" { #include "COM_defines.h" #include "COM_Device.h" -/** @brief the workscheduler - * @ingroup execution +/** \brief the workscheduler + * \ingroup execution */ class WorkScheduler { #if COM_CURRENT_THREADING_MODEL == COM_TM_QUEUE /** - * @brief are we being stopped. + * \brief are we being stopped. */ static bool isStopping(); /** - * @brief main thread loop for cpudevices + * \brief main thread loop for cpudevices * inside this loop new work is queried and being executed */ static void *thread_execute_cpu(void *data); /** - * @brief main thread loop for gpudevices + * \brief main thread loop for gpudevices * inside this loop new work is queried and being executed */ static void *thread_execute_gpu(void *data); #endif public: /** - * @brief schedule a chunk of a group to be calculated. + * \brief schedule a chunk of a group to be calculated. * An execution group schedules a chunk in the WorkScheduler * when ExecutionGroup.isOpenCL is set the work will be handled by a OpenCLDevice * otherwise the work is scheduled for an CPUDevice - * @see ExecutionGroup.execute - * @param group the execution group - * @param chunkNumber the number of the chunk in the group to be executed + * \see ExecutionGroup.execute + * \param group the execution group + * \param chunkNumber the number of the chunk in the group to be executed */ static void schedule(ExecutionGroup *group, int chunkNumber); /** - * @brief initialize the WorkScheduler + * \brief initialize the WorkScheduler * * during initialization the mutexes are initialized. * there are two mutexes (for every device type one) @@ -80,36 +80,36 @@ public: static void initialize(bool use_opencl, int num_cpu_threads); /** - * @brief deinitialize the WorkScheduler + * \brief deinitialize the WorkScheduler * free all allocated resources */ static void deinitialize(); /** - * @brief Start the execution + * \brief Start the execution * this methods will start the WorkScheduler. Inside this method all threads are initialized. * for every device a thread is created. - * @see initialize Initialization and query of the number of devices + * \see initialize Initialization and query of the number of devices */ static void start(CompositorContext &context); /** - * @brief stop the execution + * \brief stop the execution * All created thread by the start method are destroyed. - * @see start + * \see start */ static void stop(); /** - * @brief wait for all work to be completed. + * \brief wait for all work to be completed. */ static void finish(); /** - * @brief Are there OpenCL capable GPU devices initialized? + * \brief Are there OpenCL capable GPU devices initialized? * the result of this method is stored in the CompositorContext * A node can generate a different operation tree when OpenCLDevices exists. - * @see CompositorContext.getHasActiveOpenCLDevices + * \see CompositorContext.getHasActiveOpenCLDevices */ static bool hasGPUDevices(); |