[Bf-blender-cvs] [948703b] tiles-scheduler: Tiles: synced with master
Jeroen Bakker
noreply at git.blender.org
Wed May 21 16:01:24 CEST 2014
Commit: 948703b36ddff55ae0ba08615ceb75572cf91fb8
Author: Jeroen Bakker
Date: Mon May 12 20:22:40 2014 +0200
https://developer.blender.org/rB948703b36ddff55ae0ba08615ceb75572cf91fb8
Tiles: synced with master
===================================================================
M source/blender/compositor/CMakeLists.txt
M source/blender/compositor/COM_defines.h
D source/blender/compositor/intern/COM_ChannelInfo.cpp
M source/blender/compositor/intern/COM_ExecutionGroup.cpp
M source/blender/compositor/intern/COM_ExecutionSystem.cpp
M source/blender/compositor/intern/COM_MemoryBuffer.cpp
M source/blender/compositor/intern/COM_MemoryBuffer.h
A source/blender/compositor/intern/COM_MemoryBufferColor.cpp
A source/blender/compositor/intern/COM_MemoryBufferColor.h
A source/blender/compositor/intern/COM_MemoryBufferValue.cpp
A source/blender/compositor/intern/COM_MemoryBufferValue.h
A source/blender/compositor/intern/COM_MemoryBufferVector.cpp
A source/blender/compositor/intern/COM_MemoryBufferVector.h
M source/blender/compositor/intern/COM_MemoryProxy.cpp
M source/blender/compositor/intern/COM_MemoryProxy.h
M source/blender/compositor/intern/COM_NodeOperationBuilder.cpp
M source/blender/compositor/intern/COM_OpenCLDevice.cpp
M source/blender/compositor/intern/COM_OpenCLDevice.h
A source/blender/compositor/intern/COM_OutputSocket.h
A source/blender/compositor/intern/COM_SocketConnection.h
M source/blender/compositor/nodes/COM_SocketProxyNode.cpp
M source/blender/compositor/nodes/COM_TranslateNode.cpp
M source/blender/compositor/operations/COM_AntiAliasOperation.cpp
M source/blender/compositor/operations/COM_CompositorOperation.cpp
M source/blender/compositor/operations/COM_ConvertOperation.cpp
M source/blender/compositor/operations/COM_DilateErodeOperation.cpp
M source/blender/compositor/operations/COM_FastGaussianBlurOperation.cpp
M source/blender/compositor/operations/COM_GaussianAlphaXBlurOperation.cpp
M source/blender/compositor/operations/COM_GaussianAlphaYBlurOperation.cpp
M source/blender/compositor/operations/COM_GaussianBokehBlurOperation.cpp
M source/blender/compositor/operations/COM_GlareBaseOperation.cpp
M source/blender/compositor/operations/COM_GlareFogGlowOperation.cpp
M source/blender/compositor/operations/COM_GlareGhostOperation.cpp
M source/blender/compositor/operations/COM_GlareStreaksOperation.cpp
M source/blender/compositor/operations/COM_InpaintOperation.cpp
M source/blender/compositor/operations/COM_KeyingBlurOperation.cpp
M source/blender/compositor/operations/COM_KeyingClipOperation.cpp
M source/blender/compositor/operations/COM_MapUVOperation.cpp
M source/blender/compositor/operations/COM_NormalizeOperation.cpp
M source/blender/compositor/operations/COM_QualityStepHelper.cpp
M source/blender/compositor/operations/COM_ReadBufferOperation.cpp
M source/blender/compositor/operations/COM_ReadBufferOperation.h
M source/blender/compositor/operations/COM_RenderLayersProg.cpp
M source/blender/compositor/operations/COM_SetVectorOperation.cpp
M source/blender/compositor/operations/COM_TextureOperation.cpp
M source/blender/compositor/operations/COM_VariableSizeBokehBlurOperation.cpp
M source/blender/compositor/operations/COM_VectorBlurOperation.cpp
M source/blender/compositor/operations/COM_VectorCurveOperation.cpp
M source/blender/compositor/operations/COM_WrapOperation.cpp
M source/blender/compositor/operations/COM_WrapOperation.h
M source/blender/compositor/operations/COM_WriteBufferOperation.cpp
M source/blender/compositor/operations/COM_WriteBufferOperation.h
===================================================================
diff --git a/source/blender/compositor/CMakeLists.txt b/source/blender/compositor/CMakeLists.txt
index a194334..abd2bf7 100644
--- a/source/blender/compositor/CMakeLists.txt
+++ b/source/blender/compositor/CMakeLists.txt
@@ -74,6 +74,12 @@ set(SRC
intern/COM_MemoryProxy.h
intern/COM_MemoryBuffer.cpp
intern/COM_MemoryBuffer.h
+ intern/COM_MemoryBufferColor.cpp
+ intern/COM_MemoryBufferColor.h
+ intern/COM_MemoryBufferVector.cpp
+ intern/COM_MemoryBufferVector.h
+ intern/COM_MemoryBufferValue.cpp
+ intern/COM_MemoryBufferValue.h
intern/COM_WorkScheduler.cpp
intern/COM_WorkScheduler.h
intern/COM_WorkPackage.cpp
@@ -90,8 +96,6 @@ set(SRC
intern/COM_OpenCLDevice.h
intern/COM_CompositorContext.cpp
intern/COM_CompositorContext.h
- intern/COM_ChannelInfo.cpp
- intern/COM_ChannelInfo.h
intern/COM_SingleThreadedOperation.cpp
intern/COM_SingleThreadedOperation.h
intern/COM_Debug.cpp
diff --git a/source/blender/compositor/COM_defines.h b/source/blender/compositor/COM_defines.h
index d086f81..f8211cd 100644
--- a/source/blender/compositor/COM_defines.h
+++ b/source/blender/compositor/COM_defines.h
@@ -105,7 +105,9 @@ typedef enum OrderOfChunks {
#define COM_RULE_OF_THIRDS_DIVIDER 100.0f
-#define COM_NUMBER_OF_CHANNELS 4
+#define COM_NO_CHANNELS_VALUE 1
+#define COM_NO_CHANNELS_VECTOR 3
+#define COM_NO_CHANNELS_COLOR 4
#define COM_BLUR_BOKEH_PIXELS 512
diff --git a/source/blender/compositor/intern/COM_ChannelInfo.cpp b/source/blender/compositor/intern/COM_ChannelInfo.cpp
deleted file mode 100644
index 557075c..0000000
--- a/source/blender/compositor/intern/COM_ChannelInfo.cpp
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright 2011, Blender Foundation.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * Contributor:
- * Jeroen Bakker
- * Monique Dewanchand
- */
-
-#include "COM_ChannelInfo.h"
-#include "COM_defines.h"
-#include <stdio.h>
-
-/**
- * @brief create new ChannelInfo instance and sets the defaults.
- */
-ChannelInfo::ChannelInfo()
-{
- this->m_number = 0;
- this->m_premultiplied = true;
- this->m_type = COM_CT_UNUSED;
-}
diff --git a/source/blender/compositor/intern/COM_ExecutionGroup.cpp b/source/blender/compositor/intern/COM_ExecutionGroup.cpp
index 366c97b..4ed8cc3 100644
--- a/source/blender/compositor/intern/COM_ExecutionGroup.cpp
+++ b/source/blender/compositor/intern/COM_ExecutionGroup.cpp
@@ -372,7 +372,7 @@ MemoryBuffer **ExecutionGroup::getInputBuffersOpenCL(int chunkNumber)
MemoryBuffer *ExecutionGroup::constructConsolidatedMemoryBuffer(MemoryProxy *memoryProxy, rcti *rect)
{
MemoryBuffer *imageBuffer = memoryProxy->getBuffer();
- MemoryBuffer *result = new MemoryBuffer(memoryProxy, rect);
+ MemoryBuffer *result = MemoryBuffer::create(memoryProxy, rect);
result->copyContentFrom(imageBuffer);
return result;
}
@@ -465,7 +465,7 @@ MemoryBuffer *ExecutionGroup::allocateOutputBuffer(int chunkNumber, rcti *rect)
NodeOperation *operation = this->getOutputOperation();
if (operation->isWriteBufferOperation()) {
WriteBufferOperation *writeOperation = (WriteBufferOperation *)operation;
- MemoryBuffer *buffer = new MemoryBuffer(writeOperation->getMemoryProxy(), rect);
+ MemoryBuffer *buffer = MemoryBuffer::create(writeOperation->getMemoryProxy(), rect);
return buffer;
}
return NULL;
diff --git a/source/blender/compositor/intern/COM_ExecutionSystem.cpp b/source/blender/compositor/intern/COM_ExecutionSystem.cpp
index 7c08188..46aa06f 100644
--- a/source/blender/compositor/intern/COM_ExecutionSystem.cpp
+++ b/source/blender/compositor/intern/COM_ExecutionSystem.cpp
@@ -98,7 +98,7 @@ ExecutionSystem::ExecutionSystem(RenderData *rd, Scene *scene, bNodeTree *editin
}
}
-// DebugInfo::graphviz(this);
+ DebugInfo::graphviz(this);
}
ExecutionSystem::~ExecutionSystem()
diff --git a/source/blender/compositor/intern/COM_MemoryBuffer.cpp b/source/blender/compositor/intern/COM_MemoryBuffer.cpp
index 04828bf..ff20d4c 100644
--- a/source/blender/compositor/intern/COM_MemoryBuffer.cpp
+++ b/source/blender/compositor/intern/COM_MemoryBuffer.cpp
@@ -27,7 +27,11 @@
using std::min;
using std::max;
-unsigned int MemoryBuffer::determineBufferSize()
+#include "COM_MemoryBufferColor.h"
+#include "COM_MemoryBufferVector.h"
+#include "COM_MemoryBufferValue.h"
+
+unsigned int MemoryBuffer::determineBufferSize() const
{
return getWidth() * getHeight();
}
@@ -41,38 +45,109 @@ int MemoryBuffer::getHeight() const
return this->m_rect.ymax - this->m_rect.ymin;
}
-MemoryBuffer::MemoryBuffer(MemoryProxy *memoryProxy, unsigned int chunkNumber, rcti *rect)
+MemoryBuffer* MemoryBuffer::create(MemoryProxy *memoryProxy, unsigned int chunkNumber, rcti *rect) {
+ DataType type;
+ type = memoryProxy->getDataType();
+
+ if (type == COM_DT_VALUE) {
+ return new MemoryBufferValue(memoryProxy, chunkNumber, rect);
+ }
+ else if (type == COM_DT_VECTOR) {
+ return new MemoryBufferVector(memoryProxy, chunkNumber, rect);
+ }
+ else {
+ return new MemoryBufferColor(memoryProxy, chunkNumber, rect);
+ }
+}
+
+MemoryBuffer* MemoryBuffer::create(MemoryProxy *memoryProxy, rcti *rect) {
+ DataType type;
+ type = memoryProxy->getDataType();
+
+ if (type==COM_DT_VALUE){
+ return new MemoryBufferValue(memoryProxy, rect);
+ }
+ else if (type == COM_DT_VECTOR) {
+ return new MemoryBufferVector(memoryProxy, rect);
+ }
+ else {
+ return new MemoryBufferColor(memoryProxy, rect);
+ }
+}
+
+MemoryBuffer* MemoryBuffer::create(DataType datatype, rcti *rect) {
+ if (datatype==COM_DT_VALUE){
+ return new MemoryBufferValue(datatype, rect);
+ }
+ else if (datatype == COM_DT_VECTOR) {
+ return new MemoryBufferVector(datatype, rect);
+ }
+ else {
+ return new MemoryBufferColor(datatype, rect);
+ }
+}
+
+MemoryBuffer::MemoryBuffer(MemoryProxy *memoryProxy, unsigned int chunkNumber, rcti *rect, unsigned int no_channels)
{
BLI_rcti_init(&this->m_rect, rect->xmin, rect->xmax, rect->ymin, rect->ymax);
this->m_memoryProxy = memoryProxy;
this->m_chunkNumber = chunkNumber;
- this->m_buffer = (float *)MEM_mallocN(sizeof(float) * determineBufferSize() * COM_NUMBER_OF_CHANNELS, "COM_MemoryBuffer");
+ this->m_buffer = (float *)MEM_mallocN(sizeof(float) * determineBufferSize() * no_channels, "COM_MemoryBuffer");
this->m_state = COM_MB_ALLOCATED;
- this->m_datatype = COM_DT_COLOR;
this->m_chunkWidth = this->m_rect.xmax - this->m_rect.xmin;
+ this->m_no_channels = no_channels;
}
-MemoryBuffer::MemoryBuffer(MemoryProxy *memoryProxy, rcti *rect)
+MemoryBuffer::MemoryBuffer(MemoryProxy *memoryProxy, rcti *rect, unsigned int no_channels)
{
BLI_rcti_init(&this->m_rect, rect->xmin, rect->xmax, rect->ymin, rect->ymax);
this->m_memoryProxy = memoryProxy;
this->m_chunkNumber = -1;
- this->m_buffer = (float *)MEM_mallocN(sizeof(float) * determineBufferSize() * COM_NUMBER_OF_CHANNELS, "COM_MemoryBuffer");
+ this->m_buffer = (float *)MEM_mallocN(sizeof(float) * determineBufferSize() * no_channels, "COM_MemoryBuffer");
this->m_state = COM_MB_TEMPORARILY;
- this->m_datatype = COM_DT_COLOR;
this->m_chunkWidth = this->m_rect.xmax - this->m_rect.xmin;
+ this->m_no_channels = no_channels;
}
-MemoryBuffer *MemoryBuffer::duplicate()
-{
- MemoryBuffer *result = new MemoryBuffer(this->m_memoryProxy, &this->m_rect);
- memcpy(result->m_buffer, this->m_buffer, this->determineBufferSize() * COM_NUMBER_OF_CHANNELS * sizeof(float));
- return result;
+
+MemoryBuffer::MemoryBuffer(DataType datatype, rcti *rect, unsigned int no_channels) {
+ BLI_rcti_init(&this->m_rect, rect->xmin, rect->xmax, rect->ymin, rect->ymax);
+ this->m_memoryProxy = NULL;
+ this->m_chunkNumber = -1;
+ this->m_buffer = (float *)MEM_mallocN(sizeof(float) * determineBufferSize() * no_channels, "COM_MemoryBuffer");
+ this->m_state = COM_MB_TEMPORARILY;
+ this->m_chunkWidth = this->m_rect.xmax - this->m_rect.xmin;
+ this->m_no_channels = no_channels;
}
+
void MemoryBuffer::clear()
{
- memset(this->m_buffer, 0, this->determineBufferSize() * COM_NUMBER_OF_CHANNELS * sizeof(float));
+ memset(this->m_buffer, 0, this->determineBufferSize() * this->m_no_channels * sizeof(float));
+}
+
+void MemoryBuffer::copyContentFrom(MemoryBuffer *otherBuffer)
+{
+ if (!otherBuffer) {
+ BLI_assert(0);
+ return;
+ }
+ unsigned int otherY;
+ unsigned int minX = max(this->m_rect.xmin, otherBuffer->m_rect.xmin);
+ unsigned int maxX = min(this->m_rect.xmax, otherBuffer->m_rect.xmax);
+ unsigned int minY = max(this->m_rect.ymin, otherBuffer->m_rect.ymin);
+ unsigned int maxY = min(this->m_rect.ymax, otherBuffer->m_rect.ymax);
+ int offset;
+ int otherOffset;
+
+
+ for (otherY = minY; otherY < maxY; otherY++) {
+ otherOffset = ((otherY - otherBuffer->m_rect.ymin) * otherBuffer->m_chunkWidth + minX - otherBuffer->m_rect.xmin) * this->m_no_channels;
+ offset = ((otherY - this->m_rect.ymin) * this->m_chunkWidth + minX - this->m_rect.xmin) * this->m_no_channels;
+ memcpy(&this->m_buffer[offset], &otherBuffer->m_buffer[otherOffset], (maxX - minX) * this->m_no_channels * sizeof(float));
+ }
}
+
+// TODO: this method needs to be checked! At Mind 2014
float *MemoryBuffer::convertToValueBuffer()
{
const unsigned int size = this->determineBufferSize();
@@ -83,29 +158,16 @@ float *MemoryBuffer::convertToValueBuffer()
const float *fp_src = this->m_buffer;
float *fp_dst = result;
- for (i = 0; i < size; i++, fp_dst++, fp_src += COM_NUMBER_OF_CHANNELS) {
+ for (i = 0; i < size; i++, fp_dst++, fp_src += COM_NO_CHANNELS_COLOR) {
*fp_dst = *fp_src;
}
return result;
}
-float MemoryBuffer::getMaximumValue(
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list