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:
Thomas Dinges
2016-05-27 23:35:29 +02:00
parent 2f457b7649
commit dc07a5561f
3 changed files with 25 additions and 34 deletions

View File

@@ -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,35 +206,21 @@ 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;
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];
}
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;
/* Should not happen. */
return flat_slot;
}
}
string ImageManager::name_from_type(int type)
{

View File

@@ -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;

View File

@@ -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)