Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2014-05-19 16:45:52 +0400
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2014-05-19 16:45:52 +0400
commitc6d9b11b70d33ff31f505abc2277880710ce85dc (patch)
tree3aa05665e31b8f4b316d664d3959a2fcd3bc4c3e /intern/cycles
parentf44e743c72151946b79306f401a113c468ec1efc (diff)
Fix T40195: cycles smoke + persistent images animation render not working correct.
Diffstat (limited to 'intern/cycles')
-rw-r--r--intern/cycles/render/image.cpp11
-rw-r--r--intern/cycles/render/image.h1
-rw-r--r--intern/cycles/render/scene.cpp2
3 files changed, 14 insertions, 0 deletions
diff --git a/intern/cycles/render/image.cpp b/intern/cycles/render/image.cpp
index 86755badc42..4e61464920d 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 561550fe0d2..8abf2a33d74 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 1192824626a..5a5e01f811d 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);
}