[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