Cleanup: Further tweaks for consistency and simplifications.
Now I can start adding half float without adding even bigger mess to all these functions. ;)
This commit is contained in:
@@ -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)
|
||||
|
@@ -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;
|
||||
|
||||
|
@@ -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)
|
||||
|
Reference in New Issue
Block a user