[Bf-blender-cvs] [1e6e3dc] master: Fix T45529: Texture Compositor node composition artifact (random pixels)

Sergey Sharybin noreply at git.blender.org
Tue Jul 28 17:58:59 CEST 2015


Commit: 1e6e3dcbd7cd4bc0148062e15229cd284cb30f7d
Author: Sergey Sharybin
Date:   Tue Jul 28 17:54:21 2015 +0200
Branches: master
https://developer.blender.org/rB1e6e3dcbd7cd4bc0148062e15229cd284cb30f7d

Fix T45529: Texture Compositor node composition artifact (random pixels)

The issue was caused by the non-threaded texture API used by the node.
While the node itself is single threaded there might be texture nodes
in different execution groups running in parallel.

===================================================================

M	source/blender/compositor/operations/COM_TextureOperation.cpp

===================================================================

diff --git a/source/blender/compositor/operations/COM_TextureOperation.cpp b/source/blender/compositor/operations/COM_TextureOperation.cpp
index 2ff6cc0..c75c404 100644
--- a/source/blender/compositor/operations/COM_TextureOperation.cpp
+++ b/source/blender/compositor/operations/COM_TextureOperation.cpp
@@ -23,8 +23,11 @@
 #include "COM_TextureOperation.h"
 
 #include "BLI_listbase.h"
+#include "BLI_threads.h"
 #include "BKE_image.h"
 
+static ThreadMutex mutex_lock = BLI_MUTEX_INITIALIZER;
+
 TextureBaseOperation::TextureBaseOperation() : SingleThreadedOperation()
 {
 	this->addInputSocket(COM_DT_VECTOR); //offset
@@ -100,7 +103,12 @@ void TextureBaseOperation::executePixelSampled(float output[4], float x, float y
 	vec[1] = textureSize[1] * (v + textureOffset[1]);
 	vec[2] = textureSize[2] * textureOffset[2];
 
+	/* TODO(sergey): Need to pass thread ID to the multitex code,
+	 * then we can avoid having mutex here.
+	 */
+	BLI_mutex_lock(&mutex_lock);
 	retval = multitex_ext(this->m_texture, vec, NULL, NULL, 0, &texres, m_pool, m_sceneColorManage, false);
+	BLI_mutex_unlock(&mutex_lock);
 
 	if (texres.talpha)
 		output[3] = texres.ta;




More information about the Bf-blender-cvs mailing list