[Bf-blender-cvs] [a00f54332da] master: Cleanup: Some style and code tweaks to Image Code after changes.

Thomas Dinges noreply at git.blender.org
Thu Apr 27 11:12:39 CEST 2017


Commit: a00f54332da1fc47a4d31e57f0291193ec48abd0
Author: Thomas Dinges
Date:   Thu Apr 27 11:11:08 2017 +0200
Branches: master
https://developer.blender.org/rBa00f54332da1fc47a4d31e57f0291193ec48abd0

Cleanup: Some style and code tweaks to Image Code after changes.

Whitespace and order of switch/case etc. Let's try to stick to float4/byte4/half4/float/byte/half order as defined in "ImageDataType".

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

M	intern/cycles/kernel/kernel_globals.h
M	intern/cycles/render/image.cpp
M	intern/cycles/render/scene.h
M	intern/cycles/util/util_texture.h

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

diff --git a/intern/cycles/kernel/kernel_globals.h b/intern/cycles/kernel/kernel_globals.h
index dd0971e4a06..b1f3283d5fc 100644
--- a/intern/cycles/kernel/kernel_globals.h
+++ b/intern/cycles/kernel/kernel_globals.h
@@ -42,8 +42,8 @@ struct Intersection;
 struct VolumeStep;
 
 typedef struct KernelGlobals {
-	vector<texture_image_uchar4> texture_byte4_images;
 	vector<texture_image_float4> texture_float4_images;
+	vector<texture_image_uchar4> texture_byte4_images;
 	vector<texture_image_half4> texture_half4_images;
 	vector<texture_image_float> texture_float_images;
 	vector<texture_image_uchar> texture_byte_images;
diff --git a/intern/cycles/render/image.cpp b/intern/cycles/render/image.cpp
index ca737cb4837..697b9f75658 100644
--- a/intern/cycles/render/image.cpp
+++ b/intern/cycles/render/image.cpp
@@ -285,17 +285,22 @@ int ImageManager::add_image(const string& filename,
 	is_float = (type == IMAGE_DATA_TYPE_FLOAT || type == IMAGE_DATA_TYPE_FLOAT4);
 
 	/* No single channel and half textures on CUDA (Fermi) and no half on OpenCL, use available slots */
-	if(type == IMAGE_DATA_TYPE_HALF4 && !has_half_images) {
-		type = IMAGE_DATA_TYPE_FLOAT4;
-	} else if(type == IMAGE_DATA_TYPE_HALF && !has_half_images) {
-		type = IMAGE_DATA_TYPE_FLOAT;
+	if(!has_half_images) {
+		if(type == IMAGE_DATA_TYPE_HALF4) {
+			type = IMAGE_DATA_TYPE_FLOAT4;
+		}
+		else if(type == IMAGE_DATA_TYPE_HALF) {
+			type = IMAGE_DATA_TYPE_FLOAT;
+		}
 	}
 
-	if(type == IMAGE_DATA_TYPE_FLOAT && cuda_fermi_limits) {
-		type = IMAGE_DATA_TYPE_FLOAT4;
-	}
-	else if(type == IMAGE_DATA_TYPE_BYTE && cuda_fermi_limits) {
-		type = IMAGE_DATA_TYPE_BYTE4;
+	if(cuda_fermi_limits) {
+		if(type == IMAGE_DATA_TYPE_FLOAT) {
+			type = IMAGE_DATA_TYPE_FLOAT4;
+		}
+		else if(type == IMAGE_DATA_TYPE_BYTE) {
+			type = IMAGE_DATA_TYPE_BYTE4;
+		}
 	}
 
 	/* Fnd existing image. */
@@ -877,6 +882,14 @@ void ImageManager::device_free_image(Device *device, DeviceScene *dscene, ImageD
 					tex_img = dscene->tex_float4_image[slot];
 					dscene->tex_float4_image[slot] = NULL;
 					break;
+				case IMAGE_DATA_TYPE_BYTE4:
+					tex_img = dscene->tex_byte4_image[slot];
+					dscene->tex_byte4_image[slot]= NULL;
+					break;
+				case IMAGE_DATA_TYPE_HALF4:
+					tex_img = dscene->tex_half4_image[slot];
+					dscene->tex_half4_image[slot]= NULL;
+					break;
 				case IMAGE_DATA_TYPE_FLOAT:
 					tex_img = dscene->tex_float_image[slot];
 					dscene->tex_float_image[slot] = NULL;
@@ -885,18 +898,10 @@ void ImageManager::device_free_image(Device *device, DeviceScene *dscene, ImageD
 					tex_img = dscene->tex_byte_image[slot];
 					dscene->tex_byte_image[slot]= NULL;
 					break;
-				case IMAGE_DATA_TYPE_BYTE4:
-					tex_img = dscene->tex_byte4_image[slot];
-					dscene->tex_byte4_image[slot]= NULL;
-					break;
 				case IMAGE_DATA_TYPE_HALF:
 					tex_img = dscene->tex_half_image[slot];
 					dscene->tex_half_image[slot]= NULL;
 					break;
-				case IMAGE_DATA_TYPE_HALF4:
-					tex_img = dscene->tex_half4_image[slot];
-					dscene->tex_half4_image[slot]= NULL;
-					break;
 				default:
 					assert(0);
 					tex_img = NULL;
@@ -929,13 +934,17 @@ void ImageManager::device_update(Device *device,
 
 	for(int type = 0; type < IMAGE_DATA_NUM_TYPES; type++) {
 		switch(type) {
+			case IMAGE_DATA_TYPE_FLOAT4:
+				if(dscene->tex_float4_image.size() <= tex_num_images[IMAGE_DATA_TYPE_FLOAT4])
+					dscene->tex_float4_image.resize(tex_num_images[IMAGE_DATA_TYPE_FLOAT4]);
+				break;
 			case IMAGE_DATA_TYPE_BYTE4:
 				if(dscene->tex_byte4_image.size() <= tex_num_images[IMAGE_DATA_TYPE_BYTE4])
 					dscene->tex_byte4_image.resize(tex_num_images[IMAGE_DATA_TYPE_BYTE4]);
 				break;
-			case IMAGE_DATA_TYPE_FLOAT4:
-				if(dscene->tex_float4_image.size() <= tex_num_images[IMAGE_DATA_TYPE_FLOAT4])
-					dscene->tex_float4_image.resize(tex_num_images[IMAGE_DATA_TYPE_FLOAT4]);
+			case IMAGE_DATA_TYPE_HALF4:
+				if(dscene->tex_half4_image.size() <= tex_num_images[IMAGE_DATA_TYPE_HALF4])
+					dscene->tex_half4_image.resize(tex_num_images[IMAGE_DATA_TYPE_HALF4]);
 				break;
 			case IMAGE_DATA_TYPE_BYTE:
 				if(dscene->tex_byte_image.size() <= tex_num_images[IMAGE_DATA_TYPE_BYTE])
@@ -945,10 +954,6 @@ void ImageManager::device_update(Device *device,
 				if(dscene->tex_float_image.size() <= tex_num_images[IMAGE_DATA_TYPE_FLOAT])
 					dscene->tex_float_image.resize(tex_num_images[IMAGE_DATA_TYPE_FLOAT]);
 				break;
-			case IMAGE_DATA_TYPE_HALF4:
-				if(dscene->tex_half4_image.size() <= tex_num_images[IMAGE_DATA_TYPE_HALF4])
-					dscene->tex_half4_image.resize(tex_num_images[IMAGE_DATA_TYPE_HALF4]);
-				break;
 			case IMAGE_DATA_TYPE_HALF:
 				if(dscene->tex_half_image.size() <= tex_num_images[IMAGE_DATA_TYPE_HALF])
 					dscene->tex_half_image.resize(tex_num_images[IMAGE_DATA_TYPE_HALF]);
@@ -1220,24 +1225,24 @@ void ImageManager::device_free(Device *device, DeviceScene *dscene)
 		}
 		images[type].clear();
 	}
-	
-	dscene->tex_byte4_image.clear();
-	dscene->tex_byte_image.clear();
+
 	dscene->tex_float4_image.clear();
-	dscene->tex_float_image.clear();
+	dscene->tex_byte4_image.clear();
 	dscene->tex_half4_image.clear();
+	dscene->tex_float_image.clear();
+	dscene->tex_byte_image.clear();
 	dscene->tex_half_image.clear();
 
-	device->tex_free(dscene->tex_image_byte4_packed);
 	device->tex_free(dscene->tex_image_float4_packed);
-	device->tex_free(dscene->tex_image_byte_packed);
+	device->tex_free(dscene->tex_image_byte4_packed);
 	device->tex_free(dscene->tex_image_float_packed);
+	device->tex_free(dscene->tex_image_byte_packed);
 	device->tex_free(dscene->tex_image_packed_info);
 
-	dscene->tex_image_byte4_packed.clear();
 	dscene->tex_image_float4_packed.clear();
-	dscene->tex_image_byte_packed.clear();
+	dscene->tex_image_byte4_packed.clear();
 	dscene->tex_image_float_packed.clear();
+	dscene->tex_image_byte_packed.clear();
 	dscene->tex_image_packed_info.clear();
 }
 
diff --git a/intern/cycles/render/scene.h b/intern/cycles/render/scene.h
index 02015f3403c..b02f9f35393 100644
--- a/intern/cycles/render/scene.h
+++ b/intern/cycles/render/scene.h
@@ -114,18 +114,18 @@ public:
 	device_vector<uint> sobol_directions;
 
 	/* cpu images */
-	std::vector<device_vector<uchar4>* > tex_byte4_image;
 	std::vector<device_vector<float4>* > tex_float4_image;
+	std::vector<device_vector<uchar4>* > tex_byte4_image;
+	std::vector<device_vector<half4>* > tex_half4_image;
 	std::vector<device_vector<float>* > tex_float_image;
 	std::vector<device_vector<uchar>* > tex_byte_image;
-	std::vector<device_vector<half4>* > tex_half4_image;
 	std::vector<device_vector<half>* > tex_half_image;
 	
 	/* opencl images */
-	device_vector<uchar4> tex_image_byte4_packed;
 	device_vector<float4> tex_image_float4_packed;
-	device_vector<uchar> tex_image_byte_packed;
+	device_vector<uchar4> tex_image_byte4_packed;
 	device_vector<float> tex_image_float_packed;
+	device_vector<uchar> tex_image_byte_packed;
 	device_vector<uint4> tex_image_packed_info;
 
 	KernelData data;
diff --git a/intern/cycles/util/util_texture.h b/intern/cycles/util/util_texture.h
index 478f1f06818..df255f43059 100644
--- a/intern/cycles/util/util_texture.h
+++ b/intern/cycles/util/util_texture.h
@@ -22,18 +22,18 @@ CCL_NAMESPACE_BEGIN
 /* Texture limits on devices. */
 
 /* CUDA (Geforce 4xx and 5xx) */
-#define TEX_NUM_FLOAT4_CUDA        5
-#define TEX_NUM_BYTE4_CUDA        84
-#define TEX_NUM_HALF4_CUDA        0
-#define TEX_NUM_FLOAT_CUDA        0
+#define TEX_NUM_FLOAT4_CUDA      5
+#define TEX_NUM_BYTE4_CUDA       84
+#define TEX_NUM_HALF4_CUDA       0
+#define TEX_NUM_FLOAT_CUDA       0
 #define TEX_NUM_BYTE_CUDA        0
 #define TEX_NUM_HALF_CUDA        0
 #define TEX_START_FLOAT4_CUDA    0
-#define TEX_START_BYTE4_CUDA    TEX_NUM_FLOAT4_CUDA
-#define TEX_START_HALF4_CUDA    (TEX_NUM_FLOAT4_CUDA + TEX_NUM_BYTE4_CUDA)
-#define TEX_START_FLOAT_CUDA    (TEX_NUM_FLOAT4_CUDA + TEX_NUM_BYTE4_CUDA + TEX_NUM_HALF4_CUDA)
-#define TEX_START_BYTE_CUDA        (TEX_NUM_FLOAT4_CUDA + TEX_NUM_BYTE4_CUDA + TEX_NUM_HALF4_CUDA + TEX_NUM_FLOAT_CUDA)
-#define TEX_START_HALF_CUDA        (TEX_NUM_FLOAT4_CUDA + TEX_NUM_BYTE4_CUDA + TEX_NUM_HALF4_CUDA + TEX_NUM_FLOAT_CUDA + TEX_NUM_BYTE_CUDA)
+#define TEX_START_BYTE4_CUDA     TEX_NUM_FLOAT4_CUDA
+#define TEX_START_HALF4_CUDA     (TEX_NUM_FLOAT4_CUDA + TEX_NUM_BYTE4_CUDA)
+#define TEX_START_FLOAT_CUDA     (TEX_NUM_FLOAT4_CUDA + TEX_NUM_BYTE4_CUDA + TEX_NUM_HALF4_CUDA)
+#define TEX_START_BYTE_CUDA      (TEX_NUM_FLOAT4_CUDA + TEX_NUM_BYTE4_CUDA + TEX_NUM_HALF4_CUDA + TEX_NUM_FLOAT_CUDA)
+#define TEX_START_HALF_CUDA      (TEX_NUM_FLOAT4_CUDA + TEX_NUM_BYTE4_CUDA + TEX_NUM_HALF4_CUDA + TEX_NUM_FLOAT_CUDA + TEX_NUM_BYTE_CUDA)
 
 /* Any architecture other than old CUDA cards */
 #define TEX_NUM_MAX (INT_MAX >> 4)




More information about the Bf-blender-cvs mailing list