[Bf-blender-cvs] [c6d9b11] master: Fix T40195: cycles smoke + persistent images animation render not working correct.

Brecht Van Lommel noreply at git.blender.org
Mon May 19 14:46:23 CEST 2014


Commit: c6d9b11b70d33ff31f505abc2277880710ce85dc
Author: Brecht Van Lommel
Date:   Mon May 19 14:45:52 2014 +0200
https://developer.blender.org/rBc6d9b11b70d33ff31f505abc2277880710ce85dc

Fix T40195: cycles smoke + persistent images animation render not working correct.

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

M	intern/cycles/render/image.cpp
M	intern/cycles/render/image.h
M	intern/cycles/render/scene.cpp

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

diff --git a/intern/cycles/render/image.cpp b/intern/cycles/render/image.cpp
index 86755ba..4e61464 100644
--- a/intern/cycles/render/image.cpp
+++ b/intern/cycles/render/image.cpp
@@ -744,6 +744,17 @@ void ImageManager::device_pack_images(Device *device, DeviceScene *dscene, Progr
 	}
 }
 
+void ImageManager::device_free_builtin(Device *device, DeviceScene *dscene)
+{
+	for(size_t slot = 0; slot < images.size(); slot++)
+		if(images[slot] && images[slot]->builtin_data)
+			device_free_image(device, dscene, slot + tex_image_byte_start);
+
+	for(size_t slot = 0; slot < float_images.size(); slot++)
+		if(float_images[slot] && float_images[slot]->builtin_data)
+			device_free_image(device, dscene, slot);
+}
+
 void ImageManager::device_free(Device *device, DeviceScene *dscene)
 {
 	for(size_t slot = 0; slot < images.size(); slot++)
diff --git a/intern/cycles/render/image.h b/intern/cycles/render/image.h
index 561550f..8abf2a3 100644
--- a/intern/cycles/render/image.h
+++ b/intern/cycles/render/image.h
@@ -62,6 +62,7 @@ public:
 
 	void device_update(Device *device, DeviceScene *dscene, Progress& progress);
 	void device_free(Device *device, DeviceScene *dscene);
+	void device_free_builtin(Device *device, DeviceScene *dscene);
 
 	void set_osl_texture_system(void *texture_system);
 	void set_pack_images(bool pack_images_);
diff --git a/intern/cycles/render/scene.cpp b/intern/cycles/render/scene.cpp
index 11928246..5a5e01f 100644
--- a/intern/cycles/render/scene.cpp
+++ b/intern/cycles/render/scene.cpp
@@ -109,6 +109,8 @@ void Scene::free_memory(bool final)
 
 		if(!params.persistent_data || final)
 			image_manager->device_free(device, &dscene);
+		else
+			image_manager->device_free_builtin(device, &dscene);
 
 		lookup_tables->device_free(device, &dscene);
 	}




More information about the Bf-blender-cvs mailing list