2 * Copyright 2011, Blender Foundation.
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License
6 * as published by the Free Software Foundation; either version 2
7 * of the License, or (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software Foundation,
16 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
23 #ifndef _COM_WriteBufferOperation_h_
24 #define _COM_WriteBufferOperation_h_
26 #include "COM_NodeOperation.h"
27 #include "COM_MemoryProxy.h"
28 #include "COM_SocketReader.h"
30 * @brief Operation to write to a tile
33 class WriteBufferOperation : public NodeOperation {
34 MemoryProxy *m_memoryProxy;
35 NodeOperation *m_input;
37 WriteBufferOperation();
38 ~WriteBufferOperation();
39 int isBufferOperation() { return true; }
40 MemoryProxy *getMemoryProxy() { return this->m_memoryProxy; }
41 void executePixel(float *color, float x, float y, PixelSampler sampler, MemoryBuffer * inputBuffers[]);
42 const bool isWriteBufferOperation() const { return true; }
44 void executeRegion(rcti *rect, unsigned int tileNumber, MemoryBuffer **memoryBuffers);
46 void deinitExecution();
47 void executeOpenCLRegion(OpenCLDevice* device, rcti *rect, unsigned int chunkNumber, MemoryBuffer **memoryBuffers, MemoryBuffer *outputBuffer);
48 void readResolutionFromInputSocket();
49 inline NodeOperation *getInput() {