[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [45370] branches/tile/source/blender/ compositor: Tile branch

Jeroen Bakker j.bakker at atmind.nl
Tue Apr 3 13:56:02 CEST 2012


Revision: 45370
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=45370
Author:   jbakker
Date:     2012-04-03 11:56:01 +0000 (Tue, 03 Apr 2012)
Log Message:
-----------
Tile branch
 * added debug info (dot graph) during debugging;
 * fixed issue in the movieclip node, where wrong connections where created

Modified Paths:
--------------
    branches/tile/source/blender/compositor/intern/COM_ExecutionSystem.cpp
    branches/tile/source/blender/compositor/intern/COM_ExecutionSystemHelper.cpp
    branches/tile/source/blender/compositor/intern/COM_ExecutionSystemHelper.h
    branches/tile/source/blender/compositor/nodes/COM_MovieClipNode.cpp

Modified: branches/tile/source/blender/compositor/intern/COM_ExecutionSystem.cpp
===================================================================
--- branches/tile/source/blender/compositor/intern/COM_ExecutionSystem.cpp	2012-04-03 11:55:39 UTC (rev 45369)
+++ branches/tile/source/blender/compositor/intern/COM_ExecutionSystem.cpp	2012-04-03 11:56:01 UTC (rev 45370)
@@ -69,6 +69,9 @@
 			executionGroup->determineResolution(resolution);
 		}
 	}
+#ifdef DEBUG
+	ExecutionSystemHelper::debugDump(this);
+#endif
 }
 
 ExecutionSystem::~ExecutionSystem() {

Modified: branches/tile/source/blender/compositor/intern/COM_ExecutionSystemHelper.cpp
===================================================================
--- branches/tile/source/blender/compositor/intern/COM_ExecutionSystemHelper.cpp	2012-04-03 11:55:39 UTC (rev 45369)
+++ branches/tile/source/blender/compositor/intern/COM_ExecutionSystemHelper.cpp	2012-04-03 11:56:01 UTC (rev 45370)
@@ -172,3 +172,140 @@
 	links.push_back(newconnection);
 	return newconnection;
 }
+
+void ExecutionSystemHelper::debugDump(ExecutionSystem* system) {
+	Node* node;
+	NodeOperation* operation;
+	ExecutionGroup* group;
+	SocketConnection* connection; 
+	int tot, tot2;
+	printf("-- BEGIN COMPOSITOR DUMP --\r\n");
+	printf("digraph compositorexecution {\r\n");
+	tot = system->getNodes().size();
+	for (int i = 0 ; i < tot ; i ++) {
+		node = system->getNodes()[i];
+		printf("// NODE: %s\r\n", node->getbNode()->typeinfo->name);
+	}
+	tot = system->getOperations().size();
+	for (int i = 0 ; i < tot ; i ++) {
+		operation = system->getOperations()[i];
+		printf("// OPERATION: %p\r\n", operation);
+		printf("\t\"O_%p\"", operation);
+		printf(" [shape=record,label=\"{");
+		printf("");
+		tot2 = operation->getNumberOfInputSockets();
+		if (tot2 != 0) {
+			printf("{");
+			for (int j = 0 ; j < tot2 ; j ++) {
+				InputSocket *socket = operation->getInputSocket(j);
+				if (j != 0) {
+					printf("|");
+				}
+				printf("<IN_%p>", socket);
+				switch (socket->getActualDataType()) {
+				case COM_DT_VALUE:
+					printf("Value");
+					break;
+				case COM_DT_VECTOR:
+					printf("Vector");
+					break;
+				case COM_DT_COLOR:
+					printf("Color");
+					break;
+				case COM_DT_UNKNOWN:
+					printf("Unknown");
+					break;
+				}
+			}
+			printf("}");
+			printf("|");
+		}
+		if (operation->isViewerOperation()) {
+			printf("Viewer");
+		} else if (operation->isOutputOperation(system->getContext().isRendering())) {
+			printf("Output");
+		} else if (operation->isSetOperation()) {
+			printf("Set");
+		} else if (operation->isReadBufferOperation()) {
+			printf("ReadBuffer");
+		} else if (operation->isWriteBufferOperation()) {
+			printf("WriteBuffer");
+		} else {
+			printf("O_%p", operation);
+		}
+		tot2 = operation->getNumberOfOutputSockets();
+		if (tot2 != 0) {
+			printf("|");
+			printf("{");
+			for (int j = 0 ; j < tot2 ; j ++) {
+				OutputSocket *socket = operation->getOutputSocket(j);
+				if (j != 0) {
+					printf("|");
+				}
+				printf("<OUT_%p>", socket);
+				switch (socket->getActualDataType()) {
+				case COM_DT_VALUE:
+					printf("Value");
+					break;
+				case COM_DT_VECTOR:
+					printf("Vector");
+					break;
+				case COM_DT_COLOR:
+					printf("Color");
+					break;
+				case COM_DT_UNKNOWN:
+					printf("Unknown");
+					break;
+				}
+			}
+			printf("}");
+		}
+		printf("}\"]");
+		printf("\r\n");
+	}
+	tot = system->getExecutionGroups().size();
+	for (int i = 0 ; i < tot ; i ++) {
+		group = system->getExecutionGroups()[i];
+		printf("// GROUP: %d\r\n", i);
+		printf("subgraph {\r\n");
+		printf("//  OUTPUTOPERATION: %p\r\n", group->getOutputNodeOperation());
+		printf(" O_%p\r\n", group->getOutputNodeOperation());
+		printf("}\r\n");
+	}
+	tot = system->getOperations().size();
+	for (int i = 0 ; i < tot ; i ++) {
+		operation = system->getOperations()[i];
+		if (operation->isReadBufferOperation()) {
+			ReadBufferOperation * read = (ReadBufferOperation*)operation;
+			WriteBufferOperation * write= read->getMemoryProxy()->getWriteBufferOperation();
+			printf("\t\"O_%p\" -> \"O_%p\" [style=dotted]\r\n", write, read);
+		}
+	}
+	tot = system->getConnections().size();
+	for (int i = 0 ; i < tot ; i ++) {
+		connection = system->getConnections()[i];
+		printf("// CONNECTION: %d.%d -> %d.%d\r\n", connection->getFromNode(), connection->getFromSocket(), connection->getToNode(), connection->getToSocket());
+		printf("\t\"O_%p\":\"OUT_%p\" -> \"O_%p\":\"IN_%p\"", connection->getFromNode(), connection->getFromSocket(), connection->getToNode(), connection->getToSocket());
+		if (!connection->isValid()) {
+			printf(" [color=red]");
+		} else {
+			switch (connection->getFromSocket()->getActualDataType()) {
+			case COM_DT_VALUE:
+				printf(" [color=grey]");
+				break;
+			case COM_DT_VECTOR:
+				printf(" [color=blue]");
+				break;
+			case COM_DT_COLOR:
+				printf(" [color=orange]");
+				break;
+			case COM_DT_UNKNOWN:
+				printf(" [color=black]");
+				break;
+			}
+		}
+		printf("\r\n");
+	}
+	printf("}\r\n");
+	printf("-- END COMPOSITOR DUMP --\r\n");
+}

Modified: branches/tile/source/blender/compositor/intern/COM_ExecutionSystemHelper.h
===================================================================
--- branches/tile/source/blender/compositor/intern/COM_ExecutionSystemHelper.h	2012-04-03 11:55:39 UTC (rev 45369)
+++ branches/tile/source/blender/compositor/intern/COM_ExecutionSystemHelper.h	2012-04-03 11:56:01 UTC (rev 45370)
@@ -117,5 +117,11 @@
 	  * @return the new created SocketConnection
 	  */
 	static SocketConnection* addLink(vector<SocketConnection*>& links, OutputSocket* fromSocket, InputSocket* toSocket);
+	
+	/**
+	  * @brief dumps the content of the execution system to standard out
+	  * @param system the execution system to dump
+	  */
+	static void debugDump(ExecutionSystem* system);
 };
 #endif

Modified: branches/tile/source/blender/compositor/nodes/COM_MovieClipNode.cpp
===================================================================
--- branches/tile/source/blender/compositor/nodes/COM_MovieClipNode.cpp	2012-04-03 11:55:39 UTC (rev 45369)
+++ branches/tile/source/blender/compositor/nodes/COM_MovieClipNode.cpp	2012-04-03 11:56:01 UTC (rev 45370)
@@ -94,25 +94,25 @@
 	if (offsetXMovieClip->isConnected()) {
 		SetValueOperation * operationSetValue = new SetValueOperation();
 		operationSetValue->setValue(loc[0]);
-		offsetXMovieClip->relinkConnections(operation->getOutputSocket());
+		offsetXMovieClip->relinkConnections(operationSetValue->getOutputSocket());
 		graph->addOperation(operationSetValue);
 	}
 	if (offsetYMovieClip->isConnected()) {
 		SetValueOperation * operationSetValue = new SetValueOperation();
 		operationSetValue->setValue(loc[1]);
-		offsetYMovieClip->relinkConnections(operation->getOutputSocket());
+		offsetYMovieClip->relinkConnections(operationSetValue->getOutputSocket());
 		graph->addOperation(operationSetValue);
 	}
 	if (scaleMovieClip->isConnected()) {
 		SetValueOperation * operationSetValue = new SetValueOperation();
 		operationSetValue->setValue(scale);
-		scaleMovieClip->relinkConnections(operation->getOutputSocket());
+		scaleMovieClip->relinkConnections(operationSetValue->getOutputSocket());
 		graph->addOperation(operationSetValue);
 	}
 	if (angleMovieClip->isConnected()) {
 		SetValueOperation * operationSetValue = new SetValueOperation();
 		operationSetValue->setValue(angle);
-		angleMovieClip->relinkConnections(operation->getOutputSocket());
+		angleMovieClip->relinkConnections(operationSetValue->getOutputSocket());
 		graph->addOperation(operationSetValue);
 	}
 }




More information about the Bf-blender-cvs mailing list