[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