[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