Revision: 48831
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=48831
Author:   jbakker
Date:     2012-07-11 10:45:56 +0000 (Wed, 11 Jul 2012)
Log Message:
-----------
Compositor read buffers work directly on the memory buffer. 
This way we can remove the memoryBuffers parameter in the executePixels,
and (de)initializeTileData methods

Modified Paths:
--------------
    trunk/blender/source/blender/compositor/intern/COM_CPUDevice.cpp
    trunk/blender/source/blender/compositor/intern/COM_ExecutionGroup.cpp
    trunk/blender/source/blender/compositor/intern/COM_ExecutionSystem.cpp
    trunk/blender/source/blender/compositor/intern/COM_NodeOperation.h
    trunk/blender/source/blender/compositor/intern/COM_OpenCLDevice.cpp
    trunk/blender/source/blender/compositor/intern/COM_OpenCLDevice.h
    
trunk/blender/source/blender/compositor/operations/COM_CompositorOperation.cpp
    trunk/blender/source/blender/compositor/operations/COM_CompositorOperation.h
    
trunk/blender/source/blender/compositor/operations/COM_OutputFileOperation.cpp
    trunk/blender/source/blender/compositor/operations/COM_OutputFileOperation.h
    trunk/blender/source/blender/compositor/operations/COM_PreviewOperation.cpp
    trunk/blender/source/blender/compositor/operations/COM_PreviewOperation.h
    
trunk/blender/source/blender/compositor/operations/COM_ReadBufferOperation.cpp
    trunk/blender/source/blender/compositor/operations/COM_ReadBufferOperation.h
    
trunk/blender/source/blender/compositor/operations/COM_SplitViewerOperation.cpp
    
trunk/blender/source/blender/compositor/operations/COM_SplitViewerOperation.h
    trunk/blender/source/blender/compositor/operations/COM_ViewerOperation.cpp
    trunk/blender/source/blender/compositor/operations/COM_ViewerOperation.h
    
trunk/blender/source/blender/compositor/operations/COM_WriteBufferOperation.cpp
    
trunk/blender/source/blender/compositor/operations/COM_WriteBufferOperation.h

Modified: trunk/blender/source/blender/compositor/intern/COM_CPUDevice.cpp
===================================================================
--- trunk/blender/source/blender/compositor/intern/COM_CPUDevice.cpp    
2012-07-11 10:41:26 UTC (rev 48830)
+++ trunk/blender/source/blender/compositor/intern/COM_CPUDevice.cpp    
2012-07-11 10:45:56 UTC (rev 48831)
@@ -29,10 +29,9 @@
        rcti rect;
 
        executionGroup->determineChunkRect(&rect, chunkNumber);
-       MemoryBuffer **inputBuffers = executionGroup->getInputBuffersCPU();
 
-       executionGroup->getOutputNodeOperation()->executeRegion(&rect, 
chunkNumber, inputBuffers);
+       executionGroup->getOutputNodeOperation()->executeRegion(&rect, 
chunkNumber);
 
-       executionGroup->finalizeChunkExecution(chunkNumber, inputBuffers);
+       executionGroup->finalizeChunkExecution(chunkNumber, NULL);
 }
 

Modified: trunk/blender/source/blender/compositor/intern/COM_ExecutionGroup.cpp
===================================================================
--- trunk/blender/source/blender/compositor/intern/COM_ExecutionGroup.cpp       
2012-07-11 10:41:26 UTC (rev 48830)
+++ trunk/blender/source/blender/compositor/intern/COM_ExecutionGroup.cpp       
2012-07-11 10:45:56 UTC (rev 48831)
@@ -372,23 +372,6 @@
        delete[] chunkOrder;
 }
 
-MemoryBuffer **ExecutionGroup::getInputBuffersCPU()
-{
-       vector<MemoryProxy *> memoryproxies;
-       unsigned int index;
-
-       this->determineDependingMemoryProxies(&memoryproxies);
-       MemoryBuffer **memoryBuffers = new MemoryBuffer 
*[this->m_cachedMaxReadBufferOffset];
-       for (index = 0; index < this->m_cachedMaxReadBufferOffset; index++) {
-               memoryBuffers[index] = NULL;
-       }
-       for (index = 0; index < this->m_cachedReadOperations.size(); index++) {
-               ReadBufferOperation *readOperation = (ReadBufferOperation 
*)this->m_cachedReadOperations[index];
-               memoryBuffers[readOperation->getOffset()] = 
readOperation->getMemoryProxy()->getBuffer();
-       }
-       return memoryBuffers;
-}
-
 MemoryBuffer **ExecutionGroup::getInputBuffersOpenCL(int chunkNumber)
 {
        rcti rect;

Modified: trunk/blender/source/blender/compositor/intern/COM_ExecutionSystem.cpp
===================================================================
--- trunk/blender/source/blender/compositor/intern/COM_ExecutionSystem.cpp      
2012-07-11 10:41:26 UTC (rev 48830)
+++ trunk/blender/source/blender/compositor/intern/COM_ExecutionSystem.cpp      
2012-07-11 10:45:56 UTC (rev 48831)
@@ -129,6 +129,13 @@
                operation->setbNodeTree(this->m_context.getbNodeTree());
                operation->initExecution();
        }
+       for (index = 0; index < this->m_operations.size(); index++) {
+               NodeOperation *operation = this->m_operations[index];
+               if (operation->isReadBufferOperation()) {
+                       ReadBufferOperation *readOperation = 
(ReadBufferOperation *)operation;
+                       readOperation->updateMemoryBuffer();
+               }
+       }
        for (index = 0; index < this->m_groups.size(); index++) {
                ExecutionGroup *executionGroup = this->m_groups[index];
                executionGroup->setChunksize(this->m_context.getChunksize());

Modified: trunk/blender/source/blender/compositor/intern/COM_NodeOperation.h
===================================================================
--- trunk/blender/source/blender/compositor/intern/COM_NodeOperation.h  
2012-07-11 10:41:26 UTC (rev 48830)
+++ trunk/blender/source/blender/compositor/intern/COM_NodeOperation.h  
2012-07-11 10:45:56 UTC (rev 48831)
@@ -134,7 +134,7 @@
         * @param chunkNumber the chunkNumber to be calculated
         * @param memoryBuffers all input MemoryBuffer's needed
         */
-       virtual void executeRegion(rcti *rect, unsigned int chunkNumber, 
MemoryBuffer **memoryBuffers) {}
+       virtual void executeRegion(rcti *rect, unsigned int chunkNumber) {}
 
        /**
         * @brief when a chunk is executed by an OpenCLDevice, this method is 
called

Modified: trunk/blender/source/blender/compositor/intern/COM_OpenCLDevice.cpp
===================================================================
--- trunk/blender/source/blender/compositor/intern/COM_OpenCLDevice.cpp 
2012-07-11 10:41:26 UTC (rev 48830)
+++ trunk/blender/source/blender/compositor/intern/COM_OpenCLDevice.cpp 
2012-07-11 10:45:56 UTC (rev 48831)
@@ -65,11 +65,16 @@
        
        executionGroup->finalizeChunkExecution(chunkNumber, inputBuffers);
 }
-
 cl_mem OpenCLDevice::COM_clAttachMemoryBufferToKernelParameter(cl_kernel 
kernel, int parameterIndex, int offsetIndex, list<cl_mem> *cleanup, 
MemoryBuffer **inputMemoryBuffers, SocketReader *reader)
 {
+       return COM_clAttachMemoryBufferToKernelParameter(kernel, 
parameterIndex, offsetIndex, cleanup, inputMemoryBuffers, 
(ReadBufferOperation*)reader);
+}
+
+cl_mem OpenCLDevice::COM_clAttachMemoryBufferToKernelParameter(cl_kernel 
kernel, int parameterIndex, int offsetIndex, list<cl_mem> *cleanup, 
MemoryBuffer **inputMemoryBuffers, ReadBufferOperation *reader)
+{
        cl_int error;
-       MemoryBuffer *result = (MemoryBuffer *)reader->initializeTileData(NULL, 
inputMemoryBuffers);
+       
+       MemoryBuffer *result = (MemoryBuffer 
*)reader->getInputMemoryBuffer(inputMemoryBuffers);
 
        const cl_image_format imageFormat = {
                CL_RGBA,

Modified: trunk/blender/source/blender/compositor/intern/COM_OpenCLDevice.h
===================================================================
--- trunk/blender/source/blender/compositor/intern/COM_OpenCLDevice.h   
2012-07-11 10:41:26 UTC (rev 48830)
+++ trunk/blender/source/blender/compositor/intern/COM_OpenCLDevice.h   
2012-07-11 10:45:56 UTC (rev 48831)
@@ -28,6 +28,7 @@
 #include "COM_Device.h"
 #include "OCL_opencl.h"
 #include "COM_WorkScheduler.h"
+#include "COM_ReadBufferOperation.h"
 
 /**
  * @brief device representing an GPU OpenCL device.
@@ -96,6 +97,7 @@
        cl_command_queue getQueue(){ return this->m_queue; }
 
        cl_mem COM_clAttachMemoryBufferToKernelParameter(cl_kernel kernel, int 
parameterIndex, int offsetIndex, list<cl_mem> *cleanup, MemoryBuffer 
**inputMemoryBuffers, SocketReader *reader);
+       cl_mem COM_clAttachMemoryBufferToKernelParameter(cl_kernel kernel, int 
parameterIndex, int offsetIndex, list<cl_mem> *cleanup, MemoryBuffer 
**inputMemoryBuffers, ReadBufferOperation *reader);
        void COM_clAttachMemoryBufferOffsetToKernelParameter(cl_kernel kernel, 
int offsetIndex, MemoryBuffer *memoryBuffers);
        void COM_clAttachOutputMemoryBufferToKernelParameter(cl_kernel kernel, 
int parameterIndex, cl_mem clOutputMemoryBuffer);
        void COM_clAttachSizeToKernelParameter(cl_kernel kernel, int 
offsetIndex, NodeOperation* operation);

Modified: 
trunk/blender/source/blender/compositor/operations/COM_CompositorOperation.cpp
===================================================================
--- 
trunk/blender/source/blender/compositor/operations/COM_CompositorOperation.cpp  
    2012-07-11 10:41:26 UTC (rev 48830)
+++ 
trunk/blender/source/blender/compositor/operations/COM_CompositorOperation.cpp  
    2012-07-11 10:45:56 UTC (rev 48831)
@@ -94,7 +94,7 @@
 }
 
 
-void CompositorOperation::executeRegion(rcti *rect, unsigned int tileNumber, 
MemoryBuffer **memoryBuffers)
+void CompositorOperation::executeRegion(rcti *rect, unsigned int tileNumber)
 {
        float color[8]; // 7 is enough
        float *buffer = this->m_outputBuffer;
@@ -111,9 +111,9 @@
 
        for (y = y1; y < y2 && (!breaked); y++) {
                for (x = x1; x < x2 && (!breaked); x++) {
-                       this->m_imageInput->read(color, x, y, COM_PS_NEAREST, 
memoryBuffers);
+                       this->m_imageInput->read(color, x, y, COM_PS_NEAREST, 
NULL);
                        if (this->m_alphaInput != NULL) {
-                               this->m_alphaInput->read(&(color[3]), x, y, 
COM_PS_NEAREST, memoryBuffers);
+                               this->m_alphaInput->read(&(color[3]), x, y, 
COM_PS_NEAREST, NULL);
                        }
                        copy_v4_v4(buffer + offset, color);
                        offset += COM_NUMBER_OF_CHANNELS;

Modified: 
trunk/blender/source/blender/compositor/operations/COM_CompositorOperation.h
===================================================================
--- 
trunk/blender/source/blender/compositor/operations/COM_CompositorOperation.h    
    2012-07-11 10:41:26 UTC (rev 48830)
+++ 
trunk/blender/source/blender/compositor/operations/COM_CompositorOperation.h    
    2012-07-11 10:45:56 UTC (rev 48831)
@@ -52,7 +52,7 @@
        SocketReader *m_alphaInput;
 public:
        CompositorOperation();
-       void executeRegion(rcti *rect, unsigned int tileNumber, MemoryBuffer 
**memoryBuffers);
+       void executeRegion(rcti *rect, unsigned int tileNumber);
        void setRenderData(const RenderData *rd) { this->m_rd = rd; }
        bool isOutputOperation(bool rendering) const { return true; }
        void initExecution();

Modified: 
trunk/blender/source/blender/compositor/operations/COM_OutputFileOperation.cpp
===================================================================
--- 
trunk/blender/source/blender/compositor/operations/COM_OutputFileOperation.cpp  
    2012-07-11 10:41:26 UTC (rev 48830)
+++ 
trunk/blender/source/blender/compositor/operations/COM_OutputFileOperation.cpp  
    2012-07-11 10:45:56 UTC (rev 48831)
@@ -59,7 +59,7 @@
                return NULL;
 }
 
-static void write_buffer_rect(rcti *rect, MemoryBuffer **memoryBuffers, const 
bNodeTree *tree,
+static void write_buffer_rect(rcti *rect, const bNodeTree *tree,
                               SocketReader *reader, float *buffer, unsigned 
int width, DataType datatype)
 {
        float color[4];
@@ -77,7 +77,7 @@
 
        for (y = y1; y < y2 && (!breaked); y++) {
                for (x = x1; x < x2 && (!breaked); x++) {
-                       reader->read(color, x, y, COM_PS_NEAREST, 
memoryBuffers);
+                       reader->read(color, x, y, COM_PS_NEAREST, NULL);
                        
                        for (i = 0; i < size; ++i)
                                buffer[offset + i] = color[i];
@@ -113,9 +113,9 @@
        this->m_outputBuffer = init_buffer(this->getWidth(), this->getHeight(), 
this->m_datatype);
 }
 
-void OutputSingleLayerOperation::executeRegion(rcti *rect, unsigned int 
tileNumber, MemoryBuffer **memoryBuffers)
+void OutputSingleLayerOperation::executeRegion(rcti *rect, unsigned int 
tileNumber)
 {
-       write_buffer_rect(rect, memoryBuffers, this->m_tree, 
this->m_imageInput, this->m_outputBuffer, this->getWidth(), this->m_datatype);
+       write_buffer_rect(rect, this->m_tree, this->m_imageInput, 
this->m_outputBuffer, this->getWidth(), this->m_datatype);
 }
 
 void OutputSingleLayerOperation::deinitExecution()
@@ -183,10 +183,10 @@
        }
 }
 
-void OutputOpenExrMultiLayerOperation::executeRegion(rcti *rect, unsigned int 
tileNumber, MemoryBuffer **memoryBuffers)
+void OutputOpenExrMultiLayerOperation::executeRegion(rcti *rect, unsigned int 
tileNumber)
 {
        for (unsigned int i = 0; i < this->m_layers.size(); ++i) {

@@ Diff output truncated at 10240 characters. @@
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to