Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/render/image.cpp
| Show First 20 Lines • Show All 43 Lines • ▼ Show 20 Lines | if(info.type == DEVICE_CPU) { | ||||
| tex_num_images[IMAGE_DATA_TYPE_FLOAT4] = TEX_NUM_FLOAT4_IMAGES_CPU; | tex_num_images[IMAGE_DATA_TYPE_FLOAT4] = TEX_NUM_FLOAT4_IMAGES_CPU; | ||||
| tex_num_images[IMAGE_DATA_TYPE_FLOAT] = TEX_NUM_FLOAT_IMAGES_CPU; | tex_num_images[IMAGE_DATA_TYPE_FLOAT] = TEX_NUM_FLOAT_IMAGES_CPU; | ||||
| tex_num_images[IMAGE_DATA_TYPE_BYTE] = TEX_NUM_BYTE_IMAGES_CPU; | tex_num_images[IMAGE_DATA_TYPE_BYTE] = TEX_NUM_BYTE_IMAGES_CPU; | ||||
| tex_image_byte4_start = TEX_IMAGE_BYTE4_START_CPU; | tex_image_byte4_start = TEX_IMAGE_BYTE4_START_CPU; | ||||
| tex_image_float_start = TEX_IMAGE_FLOAT_START_CPU; | tex_image_float_start = TEX_IMAGE_FLOAT_START_CPU; | ||||
| tex_image_byte_start = TEX_IMAGE_BYTE_START_CPU; | tex_image_byte_start = TEX_IMAGE_BYTE_START_CPU; | ||||
| } | } | ||||
| /* CUDA (Fermi) */ | /* CUDA (Fermi) */ | ||||
| else if((info.type == DEVICE_CUDA || info.type == DEVICE_MULTI) && !info.extended_images) { | else if((info.type == DEVICE_CUDA || info.type == DEVICE_MULTI) && !info.has_bindless_textures) { | ||||
| tex_num_images[IMAGE_DATA_TYPE_BYTE4] = TEX_NUM_BYTE4_IMAGES_CUDA; | tex_num_images[IMAGE_DATA_TYPE_BYTE4] = TEX_NUM_BYTE4_IMAGES_CUDA; | ||||
| tex_num_images[IMAGE_DATA_TYPE_FLOAT4] = TEX_NUM_FLOAT4_IMAGES_CUDA; | tex_num_images[IMAGE_DATA_TYPE_FLOAT4] = TEX_NUM_FLOAT4_IMAGES_CUDA; | ||||
| tex_num_images[IMAGE_DATA_TYPE_FLOAT] = TEX_NUM_FLOAT_IMAGES_CUDA; | tex_num_images[IMAGE_DATA_TYPE_FLOAT] = TEX_NUM_FLOAT_IMAGES_CUDA; | ||||
| tex_num_images[IMAGE_DATA_TYPE_BYTE] = TEX_NUM_BYTE_IMAGES_CUDA; | tex_num_images[IMAGE_DATA_TYPE_BYTE] = TEX_NUM_BYTE_IMAGES_CUDA; | ||||
| tex_image_byte4_start = TEX_IMAGE_BYTE4_START_CUDA; | tex_image_byte4_start = TEX_IMAGE_BYTE4_START_CUDA; | ||||
| tex_image_float_start = TEX_IMAGE_FLOAT_START_CUDA; | tex_image_float_start = TEX_IMAGE_FLOAT_START_CUDA; | ||||
| tex_image_byte_start = TEX_IMAGE_BYTE_START_CUDA; | tex_image_byte_start = TEX_IMAGE_BYTE_START_CUDA; | ||||
| } | } | ||||
| /* CUDA (Kepler and above) */ | /* CUDA (Kepler and above) */ | ||||
| else if((info.type == DEVICE_CUDA || info.type == DEVICE_MULTI) && info.extended_images) { | else if((info.type == DEVICE_CUDA || info.type == DEVICE_MULTI) && info.has_bindless_textures) { | ||||
| tex_num_images[IMAGE_DATA_TYPE_BYTE4] = TEX_NUM_BYTE4_IMAGES_CUDA_KEPLER; | tex_num_images[IMAGE_DATA_TYPE_BYTE4] = TEX_NUM_BYTE4_IMAGES_CUDA_KEPLER; | ||||
| tex_num_images[IMAGE_DATA_TYPE_FLOAT4] = TEX_NUM_FLOAT4_IMAGES_CUDA_KEPLER; | tex_num_images[IMAGE_DATA_TYPE_FLOAT4] = TEX_NUM_FLOAT4_IMAGES_CUDA_KEPLER; | ||||
| tex_num_images[IMAGE_DATA_TYPE_FLOAT] = TEX_NUM_FLOAT_IMAGES_CUDA_KEPLER; | tex_num_images[IMAGE_DATA_TYPE_FLOAT] = TEX_NUM_FLOAT_IMAGES_CUDA_KEPLER; | ||||
| tex_num_images[IMAGE_DATA_TYPE_BYTE] = TEX_NUM_BYTE_IMAGES_CUDA_KEPLER; | tex_num_images[IMAGE_DATA_TYPE_BYTE] = TEX_NUM_BYTE_IMAGES_CUDA_KEPLER; | ||||
| tex_image_byte4_start = TEX_IMAGE_BYTE4_START_CUDA_KEPLER; | tex_image_byte4_start = TEX_IMAGE_BYTE4_START_CUDA_KEPLER; | ||||
| tex_image_float_start = TEX_IMAGE_FLOAT_START_CUDA_KEPLER; | tex_image_float_start = TEX_IMAGE_FLOAT_START_CUDA_KEPLER; | ||||
| tex_image_byte_start = TEX_IMAGE_BYTE_START_CUDA_KEPLER; | tex_image_byte_start = TEX_IMAGE_BYTE_START_CUDA_KEPLER; | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 218 Lines • ▼ Show 20 Lines | int ImageManager::add_image(const string& filename, | ||||
| size_t slot; | size_t slot; | ||||
| ImageDataType type = get_image_metadata(filename, builtin_data, is_linear); | ImageDataType type = get_image_metadata(filename, builtin_data, is_linear); | ||||
| /* Do we have a float? */ | /* Do we have a float? */ | ||||
| if(type == IMAGE_DATA_TYPE_FLOAT || type == IMAGE_DATA_TYPE_FLOAT4) | if(type == IMAGE_DATA_TYPE_FLOAT || type == IMAGE_DATA_TYPE_FLOAT4) | ||||
| is_float = true; | is_float = true; | ||||
| /* No float and byte textures on GPU yet */ | /* No single channel textures on Fermi GPUs, use available slots */ | ||||
| if(type == IMAGE_DATA_TYPE_FLOAT && tex_num_images[type] == 0) | if(type == IMAGE_DATA_TYPE_FLOAT && tex_num_images[type] == 0) | ||||
| type = IMAGE_DATA_TYPE_FLOAT4; | type = IMAGE_DATA_TYPE_FLOAT4; | ||||
| if(type == IMAGE_DATA_TYPE_BYTE && tex_num_images[type] == 0) | if(type == IMAGE_DATA_TYPE_BYTE && tex_num_images[type] == 0) | ||||
| type = IMAGE_DATA_TYPE_BYTE4; | type = IMAGE_DATA_TYPE_BYTE4; | ||||
| /* Fnd existing image. */ | /* Fnd existing image. */ | ||||
| for(slot = 0; slot < images[type].size(); slot++) { | for(slot = 0; slot < images[type].size(); slot++) { | ||||
| img = images[type][slot]; | img = images[type][slot]; | ||||
| ▲ Show 20 Lines • Show All 802 Lines • Show Last 20 Lines | |||||