[Bf-blender-cvs] [8c03ff0] compositor-2016: Cleanup: Further tweaks for consistency and simplifications.

Thomas Dinges noreply at git.blender.org
Wed Jun 8 21:50:37 CEST 2016


Commit: 8c03ff072dcb6057f14def3ee4b1d47da79ad30f
Author: Thomas Dinges
Date:   Fri May 27 23:35:29 2016 +0200
Branches: compositor-2016
https://developer.blender.org/rB8c03ff072dcb6057f14def3ee4b1d47da79ad30f

Cleanup: Further tweaks for consistency and simplifications.

Now I can start adding half float without adding even bigger mess to all these functions. ;)

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

M	intern/cycles/render/image.cpp
M	intern/cycles/render/image.h
M	intern/cycles/util/util_texture.h

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

diff --git a/intern/cycles/render/image.cpp b/intern/cycles/render/image.cpp
index dd90e74..71dc85f 100644
--- a/intern/cycles/render/image.cpp
+++ b/intern/cycles/render/image.cpp
@@ -54,9 +54,10 @@ ImageManager::ImageManager(const DeviceInfo& info)
 		tex_num_images[IMAGE_DATA_TYPE_BYTE4] = TEX_NUM_BYTE4_ ## ARCH; \
 		tex_num_images[IMAGE_DATA_TYPE_FLOAT] = TEX_NUM_FLOAT_ ## ARCH; \
 		tex_num_images[IMAGE_DATA_TYPE_BYTE] = TEX_NUM_BYTE_ ## ARCH; \
-		tex_image_byte4_start = TEX_START_BYTE4_ ## ARCH; \
-		tex_image_float_start = TEX_START_FLOAT_ ## ARCH; \
-		tex_image_byte_start = TEX_START_BYTE_ ## ARCH; \
+		tex_start_images[IMAGE_DATA_TYPE_FLOAT4] = TEX_START_FLOAT4_ ## ARCH; \
+		tex_start_images[IMAGE_DATA_TYPE_BYTE4] = TEX_START_BYTE4_ ## ARCH; \
+		tex_start_images[IMAGE_DATA_TYPE_FLOAT] = TEX_START_FLOAT_ ## ARCH; \
+		tex_start_images[IMAGE_DATA_TYPE_BYTE] = TEX_START_BYTE_ ## ARCH; \
 	}
 
 	if(device_type == DEVICE_CPU) {
@@ -74,14 +75,15 @@ ImageManager::ImageManager(const DeviceInfo& info)
 		SET_TEX_IMAGES_LIMITS(OPENCL);
 	}
 	else {
-		/* Should never happen */
-		tex_num_images[IMAGE_DATA_TYPE_BYTE4] = 0;
+		/* Should not happen. */
 		tex_num_images[IMAGE_DATA_TYPE_FLOAT4] = 0;
+		tex_num_images[IMAGE_DATA_TYPE_BYTE4] = 0;
 		tex_num_images[IMAGE_DATA_TYPE_FLOAT] = 0;
 		tex_num_images[IMAGE_DATA_TYPE_BYTE] = 0;
-		tex_image_byte4_start = 0;
-		tex_image_float_start = 0;
-		tex_image_byte_start = 0;
+		tex_start_images[IMAGE_DATA_TYPE_FLOAT4] = 0;
+		tex_start_images[IMAGE_DATA_TYPE_BYTE4] = 0;
+		tex_start_images[IMAGE_DATA_TYPE_FLOAT] = 0;
+		tex_start_images[IMAGE_DATA_TYPE_BYTE] = 0;
 		assert(0);
 	}
 
@@ -204,34 +206,20 @@ ImageManager::ImageDataType ImageManager::get_image_metadata(const string& filen
  * to device ones and vice versa. */
 int ImageManager::type_index_to_flattened_slot(int slot, ImageDataType type)
 {
-	if(type == IMAGE_DATA_TYPE_BYTE4)
-		return slot + tex_image_byte4_start;
-	else if(type == IMAGE_DATA_TYPE_FLOAT)
-		return slot + tex_image_float_start;
-	else if(type == IMAGE_DATA_TYPE_BYTE)
-		return slot + tex_image_byte_start;
-	else
-		return slot;
+	return slot + tex_start_images[type];
 }
 
 int ImageManager::flattened_slot_to_type_index(int flat_slot, ImageDataType *type)
 {
-	if(flat_slot >= tex_image_byte_start) {
-		*type = IMAGE_DATA_TYPE_BYTE;
-		return flat_slot - tex_image_byte_start;
-	}
-	else if(flat_slot >= tex_image_float_start) {
-		*type = IMAGE_DATA_TYPE_FLOAT;
-		return flat_slot - tex_image_float_start;
-	}
-	else if(flat_slot >= tex_image_byte4_start) {
-		*type = IMAGE_DATA_TYPE_BYTE4;
-		return flat_slot - tex_image_byte4_start;
-	}
-	else {
-		*type = IMAGE_DATA_TYPE_FLOAT4;
-		return flat_slot;
+	for(int i = IMAGE_DATA_NUM_TYPES - 1; i >= 0; i--) {
+		if(flat_slot >= tex_start_images[i]) {
+			*type = (ImageDataType)i;
+			return flat_slot - tex_start_images[i];
+		}
 	}
+
+	/* Should not happen. */
+	return flat_slot;
 }
 
 string ImageManager::name_from_type(int type)
diff --git a/intern/cycles/render/image.h b/intern/cycles/render/image.h
index 2ab16dd..8735133 100644
--- a/intern/cycles/render/image.h
+++ b/intern/cycles/render/image.h
@@ -96,9 +96,8 @@ public:
 
 private:
 	int tex_num_images[IMAGE_DATA_NUM_TYPES];
-	int tex_image_byte4_start;
-	int tex_image_float_start;
-	int tex_image_byte_start;
+	int tex_start_images[IMAGE_DATA_NUM_TYPES];
+
 	thread_mutex device_mutex;
 	int animation_frame;
 
diff --git a/intern/cycles/util/util_texture.h b/intern/cycles/util/util_texture.h
index c419c3a..e00edc0 100644
--- a/intern/cycles/util/util_texture.h
+++ b/intern/cycles/util/util_texture.h
@@ -26,6 +26,7 @@ CCL_NAMESPACE_BEGIN
 #define TEX_NUM_BYTE4_CPU		1024
 #define TEX_NUM_FLOAT_CPU		1024
 #define TEX_NUM_BYTE_CPU		1024
+#define TEX_START_FLOAT4_CPU	0
 #define TEX_START_BYTE4_CPU		TEX_NUM_FLOAT4_CPU
 #define TEX_START_FLOAT_CPU		(TEX_NUM_FLOAT4_CPU + TEX_NUM_BYTE4_CPU)
 #define TEX_START_BYTE_CPU		(TEX_NUM_FLOAT4_CPU + TEX_NUM_BYTE4_CPU + TEX_NUM_BYTE_CPU)
@@ -35,6 +36,7 @@ CCL_NAMESPACE_BEGIN
 #define TEX_NUM_BYTE4_CUDA		88
 #define TEX_NUM_FLOAT_CUDA		0
 #define TEX_NUM_BYTE_CUDA		0
+#define TEX_START_FLOAT4_CUDA	0
 #define TEX_START_BYTE4_CUDA	TEX_NUM_FLOAT4_CUDA
 #define TEX_START_FLOAT_CUDA	(TEX_NUM_FLOAT4_CUDA + TEX_NUM_BYTE4_CUDA)
 #define TEX_START_BYTE_CUDA		(TEX_NUM_FLOAT4_CUDA + TEX_NUM_BYTE4_CUDA + TEX_NUM_BYTE_CUDA)
@@ -44,6 +46,7 @@ CCL_NAMESPACE_BEGIN
 #define TEX_NUM_BYTE4_CUDA_KEPLER		1024
 #define TEX_NUM_FLOAT_CUDA_KEPLER		1024
 #define TEX_NUM_BYTE_CUDA_KEPLER		1024
+#define TEX_START_FLOAT4_CUDA_KEPLER	0
 #define TEX_START_BYTE4_CUDA_KEPLER		TEX_NUM_FLOAT4_CUDA_KEPLER
 #define TEX_START_FLOAT_CUDA_KEPLER		(TEX_NUM_FLOAT4_CUDA_KEPLER + TEX_NUM_BYTE4_CUDA_KEPLER)
 #define TEX_START_BYTE_CUDA_KEPLER		(TEX_NUM_FLOAT4_CUDA_KEPLER + TEX_NUM_BYTE4_CUDA_KEPLER + TEX_NUM_BYTE_CUDA_KEPLER)
@@ -53,6 +56,7 @@ CCL_NAMESPACE_BEGIN
 #define TEX_NUM_BYTE4_OPENCL	1024
 #define TEX_NUM_FLOAT_OPENCL	0
 #define TEX_NUM_BYTE_OPENCL		0
+#define TEX_START_FLOAT4_OPENCL	0
 #define TEX_START_BYTE4_OPENCL	TEX_NUM_FLOAT4_OPENCL
 #define TEX_START_FLOAT_OPENCL	(TEX_NUM_FLOAT4_OPENCL + TEX_NUM_BYTE4_OPENCL)
 #define TEX_START_BYTE_OPENCL	(TEX_NUM_FLOAT4_OPENCL + TEX_NUM_BYTE4_OPENCL + TEX_NUM_BYTE_OPENCL)




More information about the Bf-blender-cvs mailing list