[Bf-blender-cvs] [e0a89fe] cycles_panorama_experiments: Merge branch 'master' into cycles_panorama_experiments
Sergey Sharybin
noreply at git.blender.org
Mon May 16 10:45:41 CEST 2016
Commit: e0a89fedbbd0e45afa732d1959e0db8715773f8b
Author: Sergey Sharybin
Date: Mon May 16 10:37:22 2016 +0200
Branches: cycles_panorama_experiments
https://developer.blender.org/rBe0a89fedbbd0e45afa732d1959e0db8715773f8b
Merge branch 'master' into cycles_panorama_experiments
===================================================================
===================================================================
diff --cc intern/cycles/render/image.cpp
index 8300842,23e0708..42df7e0
--- a/intern/cycles/render/image.cpp
+++ b/intern/cycles/render/image.cpp
@@@ -970,60 -1089,21 +1089,61 @@@ void ImageManager::device_free_builtin(
void ImageManager::device_free(Device *device, DeviceScene *dscene)
{
- for(size_t slot = 0; slot < images.size(); slot++)
- device_free_image(device, dscene, slot + tex_image_byte_start);
- for(size_t slot = 0; slot < float_images.size(); slot++)
- device_free_image(device, dscene, slot);
+ for(int type = 0; type < IMAGE_DATA_NUM_TYPES; type++) {
+ for(size_t slot = 0; slot < images[type].size(); slot++) {
+ device_free_image(device, dscene, (ImageDataType)type, slot);
+ }
+ images[type].clear();
+ }
- device->tex_free(dscene->tex_image_packed);
+ device->tex_free(dscene->tex_image_byte4_packed);
+ device->tex_free(dscene->tex_image_float4_packed);
device->tex_free(dscene->tex_image_packed_info);
- dscene->tex_image_packed.clear();
+ dscene->tex_image_byte4_packed.clear();
+ dscene->tex_image_float4_packed.clear();
dscene->tex_image_packed_info.clear();
-
- images.clear();
- float_images.clear();
}
+int2 ImageManager::get_image_resolution(int slot)
+{
+ assert(slot >= 0);
+ Image *image;
+ if(slot >= tex_image_byte_start) {
+ image = images[slot - tex_image_byte_start];
+ }
+ else {
+ image = float_images[slot];
+ }
+
+ assert(image != NULL);
+
+ int width = -1, height = -1;
+ if(image->builtin_data) {
+ bool is_float;
+ int depth, channels;
+ builtin_image_info_cb(image->filename,
+ image->builtin_data,
+ is_float,
+ width, height,
+ depth,
+ channels);
+ }
+ else {
+ ImageInput *in = ImageInput::create(image->filename);
+ if(in != NULL) {
+ ImageSpec spec;
+ if(in->open(image->filename, spec)) {
+ width = spec.width;
+ height = spec.height;
+ in->close();
+ }
+ delete in;
+ }
+ }
+
+ return make_int2(width, height);
+}
+
CCL_NAMESPACE_END
diff --cc intern/cycles/render/image.h
index a86586f,53f739c..3387817
--- a/intern/cycles/render/image.h
+++ b/intern/cycles/render/image.h
@@@ -84,12 -94,10 +94,13 @@@ public
int users;
};
+ /* Get resolution of an image denoted by it's slot.. */
+ int2 get_image_resolution(int slot);
+
private:
- int tex_num_byte_images;
- int tex_num_float_images;
+ int tex_num_images[IMAGE_DATA_NUM_TYPES];
+ int tex_image_byte4_start;
+ int tex_image_float_start;
int tex_image_byte_start;
thread_mutex device_mutex;
int animation_frame;
More information about the Bf-blender-cvs
mailing list