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".
This commit is contained in:
parent
ec25060a05
commit
a00f54332d
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue