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)

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to