diff options
author | Thomas Dinges <blender@dingto.org> | 2017-04-27 12:11:08 +0300 |
---|---|---|
committer | Thomas Dinges <blender@dingto.org> | 2017-04-27 12:11:08 +0300 |
commit | a00f54332da1fc47a4d31e57f0291193ec48abd0 (patch) | |
tree | 12ed908f268264a6f555834bef70258766247360 /intern/cycles | |
parent | ec25060a05e394560ec92388b347c45bd9eba0ed (diff) |
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".
Diffstat (limited to 'intern/cycles')
-rw-r--r-- | intern/cycles/kernel/kernel_globals.h | 2 | ||||
-rw-r--r-- | intern/cycles/render/image.cpp | 69 | ||||
-rw-r--r-- | intern/cycles/render/scene.h | 8 | ||||
-rw-r--r-- | intern/cycles/util/util_texture.h | 18 |
4 files changed, 51 insertions, 46 deletions
diff --git a/intern/cycles/kernel/kernel_globals.h b/intern/cycles/kernel/kernel_globals.h index dd0971e4a06..b1f3283d5fc 100644 --- a/intern/cycles/kernel/kernel_globals.h +++ b/intern/cycles/kernel/kernel_globals.h @@ -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; diff --git a/intern/cycles/render/image.cpp b/intern/cycles/render/image.cpp index ca737cb4837..697b9f75658 100644 --- a/intern/cycles/render/image.cpp +++ b/intern/cycles/render/image.cpp @@ -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(); } diff --git a/intern/cycles/render/scene.h b/intern/cycles/render/scene.h index 02015f3403c..b02f9f35393 100644 --- a/intern/cycles/render/scene.h +++ b/intern/cycles/render/scene.h @@ -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; diff --git a/intern/cycles/util/util_texture.h b/intern/cycles/util/util_texture.h index 478f1f06818..df255f43059 100644 --- a/intern/cycles/util/util_texture.h +++ b/intern/cycles/util/util_texture.h @@ -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) |