Fix T52107: Color management difference when using multiple and different GPUs together

This commit unifies the flattened texture slot names for bindless and regular CUDA textures. Texture indices are now identical across all CUDA architectures, where before Fermi used different indices, which lead to problems when rendering on multi-GPU setups mixing Fermi with newer hardware.
This commit is contained in:
Stefan Werner 2017-07-20 10:03:27 +02:00
parent 6e90294e08
commit 4bc6faf9c8
Notes: blender-bot 2023-02-14 09:03:55 +01:00
Referenced by issue #52107, Color management difference when using multiple and different GPUs together
3 changed files with 161 additions and 193 deletions

View File

@ -82,10 +82,10 @@ KERNEL_TEX(uint, texture_uint, __sobol_directions)
# if __CUDA_ARCH__ < 300
/* full-float image */
KERNEL_IMAGE_TEX(float4, texture_image_float4, __tex_image_float4_000)
KERNEL_IMAGE_TEX(float4, texture_image_float4, __tex_image_float4_001)
KERNEL_IMAGE_TEX(float4, texture_image_float4, __tex_image_float4_002)
KERNEL_IMAGE_TEX(float4, texture_image_float4, __tex_image_float4_003)
KERNEL_IMAGE_TEX(float4, texture_image_float4, __tex_image_float4_004)
KERNEL_IMAGE_TEX(float4, texture_image_float4, __tex_image_float4_008)
KERNEL_IMAGE_TEX(float4, texture_image_float4, __tex_image_float4_016)
KERNEL_IMAGE_TEX(float4, texture_image_float4, __tex_image_float4_024)
KERNEL_IMAGE_TEX(float4, texture_image_float4, __tex_image_float4_032)
KERNEL_IMAGE_TEX(float4, texture_image3d_float4, __tex_image_float4_3d_000)
KERNEL_IMAGE_TEX(float4, texture_image3d_float4, __tex_image_float4_3d_001)
@ -93,91 +93,94 @@ KERNEL_IMAGE_TEX(float4, texture_image3d_float4, __tex_image_float4_3d_002)
KERNEL_IMAGE_TEX(float4, texture_image3d_float4, __tex_image_float4_3d_003)
KERNEL_IMAGE_TEX(float4, texture_image3d_float4, __tex_image_float4_3d_004)
/* image */
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_005)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_006)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_007)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_008)
/* image
* These texture names are encoded to their flattened slots as
* ImageManager::type_index_to_flattened_slot() returns them. */
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_001)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_009)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_010)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_011)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_012)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_013)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_014)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_015)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_016)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_017)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_018)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_019)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_020)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_021)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_022)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_023)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_024)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_025)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_026)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_027)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_028)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_029)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_030)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_031)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_032)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_033)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_034)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_035)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_036)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_037)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_038)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_039)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_040)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_041)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_042)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_043)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_044)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_045)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_046)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_047)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_048)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_049)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_050)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_051)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_052)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_053)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_054)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_055)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_056)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_057)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_058)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_059)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_060)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_061)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_062)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_063)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_064)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_065)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_066)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_067)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_068)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_069)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_070)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_071)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_072)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_073)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_074)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_075)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_076)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_077)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_078)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_079)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_080)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_081)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_082)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_083)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_084)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_085)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_086)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_087)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_088)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_089)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_097)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_105)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_113)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_121)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_129)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_137)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_145)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_153)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_161)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_169)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_177)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_185)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_193)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_201)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_209)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_217)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_225)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_233)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_241)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_249)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_257)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_265)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_273)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_281)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_289)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_297)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_305)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_313)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_321)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_329)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_337)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_345)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_353)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_361)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_369)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_377)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_385)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_393)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_401)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_409)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_417)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_425)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_433)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_441)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_449)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_457)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_465)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_473)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_481)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_489)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_497)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_505)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_513)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_521)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_529)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_537)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_545)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_553)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_561)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_569)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_577)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_585)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_593)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_601)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_609)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_617)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_625)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_633)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_641)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_649)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_657)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_665)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_byte4_673)
# else
/* bindless textures */

View File

@ -16,19 +16,6 @@
CCL_NAMESPACE_BEGIN
/* Float4 textures on various devices. */
#if defined(__KERNEL_CPU__)
# define TEX_NUM_FLOAT4_IMAGES TEX_NUM_FLOAT4_CPU
#elif defined(__KERNEL_CUDA__)
# if __CUDA_ARCH__ < 300
# define TEX_NUM_FLOAT4_IMAGES TEX_NUM_FLOAT4_CUDA
# else
# define TEX_NUM_FLOAT4_IMAGES TEX_NUM_FLOAT4_CUDA_KEPLER
# endif
#else
# define TEX_NUM_FLOAT4_IMAGES TEX_NUM_FLOAT4_OPENCL
#endif
ccl_device float4 svm_image_texture(KernelGlobals *kg, int id, float x, float y, uint srgb, uint use_alpha)
{
#ifdef __KERNEL_CPU__
@ -50,94 +37,95 @@ ccl_device float4 svm_image_texture(KernelGlobals *kg, int id, float x, float y,
switch(id) {
case 0: r = kernel_tex_image_interp(__tex_image_float4_000, x, y); break;
case 1: r = kernel_tex_image_interp(__tex_image_float4_001, x, y); break;
case 2: r = kernel_tex_image_interp(__tex_image_float4_002, x, y); break;
case 3: r = kernel_tex_image_interp(__tex_image_float4_003, x, y); break;
case 4: r = kernel_tex_image_interp(__tex_image_float4_004, x, y); break;
case 5: r = kernel_tex_image_interp(__tex_image_byte4_005, x, y); break;
case 6: r = kernel_tex_image_interp(__tex_image_byte4_006, x, y); break;
case 7: r = kernel_tex_image_interp(__tex_image_byte4_007, x, y); break;
case 8: r = kernel_tex_image_interp(__tex_image_byte4_008, x, y); break;
case 8: r = kernel_tex_image_interp(__tex_image_float4_008, x, y); break;
case 16: r = kernel_tex_image_interp(__tex_image_float4_016, x, y); break;
case 24: r = kernel_tex_image_interp(__tex_image_float4_024, x, y); break;
case 32: r = kernel_tex_image_interp(__tex_image_float4_032, x, y); break;
case 1: r = kernel_tex_image_interp(__tex_image_byte4_001, x, y); break;
case 9: r = kernel_tex_image_interp(__tex_image_byte4_009, x, y); break;
case 10: r = kernel_tex_image_interp(__tex_image_byte4_010, x, y); break;
case 11: r = kernel_tex_image_interp(__tex_image_byte4_011, x, y); break;
case 12: r = kernel_tex_image_interp(__tex_image_byte4_012, x, y); break;
case 13: r = kernel_tex_image_interp(__tex_image_byte4_013, x, y); break;
case 14: r = kernel_tex_image_interp(__tex_image_byte4_014, x, y); break;
case 15: r = kernel_tex_image_interp(__tex_image_byte4_015, x, y); break;
case 16: r = kernel_tex_image_interp(__tex_image_byte4_016, x, y); break;
case 17: r = kernel_tex_image_interp(__tex_image_byte4_017, x, y); break;
case 18: r = kernel_tex_image_interp(__tex_image_byte4_018, x, y); break;
case 19: r = kernel_tex_image_interp(__tex_image_byte4_019, x, y); break;
case 20: r = kernel_tex_image_interp(__tex_image_byte4_020, x, y); break;
case 21: r = kernel_tex_image_interp(__tex_image_byte4_021, x, y); break;
case 22: r = kernel_tex_image_interp(__tex_image_byte4_022, x, y); break;
case 23: r = kernel_tex_image_interp(__tex_image_byte4_023, x, y); break;
case 24: r = kernel_tex_image_interp(__tex_image_byte4_024, x, y); break;
case 25: r = kernel_tex_image_interp(__tex_image_byte4_025, x, y); break;
case 26: r = kernel_tex_image_interp(__tex_image_byte4_026, x, y); break;
case 27: r = kernel_tex_image_interp(__tex_image_byte4_027, x, y); break;
case 28: r = kernel_tex_image_interp(__tex_image_byte4_028, x, y); break;
case 29: r = kernel_tex_image_interp(__tex_image_byte4_029, x, y); break;
case 30: r = kernel_tex_image_interp(__tex_image_byte4_030, x, y); break;
case 31: r = kernel_tex_image_interp(__tex_image_byte4_031, x, y); break;
case 32: r = kernel_tex_image_interp(__tex_image_byte4_032, x, y); break;
case 33: r = kernel_tex_image_interp(__tex_image_byte4_033, x, y); break;
case 34: r = kernel_tex_image_interp(__tex_image_byte4_034, x, y); break;
case 35: r = kernel_tex_image_interp(__tex_image_byte4_035, x, y); break;
case 36: r = kernel_tex_image_interp(__tex_image_byte4_036, x, y); break;
case 37: r = kernel_tex_image_interp(__tex_image_byte4_037, x, y); break;
case 38: r = kernel_tex_image_interp(__tex_image_byte4_038, x, y); break;
case 39: r = kernel_tex_image_interp(__tex_image_byte4_039, x, y); break;
case 40: r = kernel_tex_image_interp(__tex_image_byte4_040, x, y); break;
case 41: r = kernel_tex_image_interp(__tex_image_byte4_041, x, y); break;
case 42: r = kernel_tex_image_interp(__tex_image_byte4_042, x, y); break;
case 43: r = kernel_tex_image_interp(__tex_image_byte4_043, x, y); break;
case 44: r = kernel_tex_image_interp(__tex_image_byte4_044, x, y); break;
case 45: r = kernel_tex_image_interp(__tex_image_byte4_045, x, y); break;
case 46: r = kernel_tex_image_interp(__tex_image_byte4_046, x, y); break;
case 47: r = kernel_tex_image_interp(__tex_image_byte4_047, x, y); break;
case 48: r = kernel_tex_image_interp(__tex_image_byte4_048, x, y); break;
case 49: r = kernel_tex_image_interp(__tex_image_byte4_049, x, y); break;
case 50: r = kernel_tex_image_interp(__tex_image_byte4_050, x, y); break;
case 51: r = kernel_tex_image_interp(__tex_image_byte4_051, x, y); break;
case 52: r = kernel_tex_image_interp(__tex_image_byte4_052, x, y); break;
case 53: r = kernel_tex_image_interp(__tex_image_byte4_053, x, y); break;
case 54: r = kernel_tex_image_interp(__tex_image_byte4_054, x, y); break;
case 55: r = kernel_tex_image_interp(__tex_image_byte4_055, x, y); break;
case 56: r = kernel_tex_image_interp(__tex_image_byte4_056, x, y); break;
case 57: r = kernel_tex_image_interp(__tex_image_byte4_057, x, y); break;
case 58: r = kernel_tex_image_interp(__tex_image_byte4_058, x, y); break;
case 59: r = kernel_tex_image_interp(__tex_image_byte4_059, x, y); break;
case 60: r = kernel_tex_image_interp(__tex_image_byte4_060, x, y); break;
case 61: r = kernel_tex_image_interp(__tex_image_byte4_061, x, y); break;
case 62: r = kernel_tex_image_interp(__tex_image_byte4_062, x, y); break;
case 63: r = kernel_tex_image_interp(__tex_image_byte4_063, x, y); break;
case 64: r = kernel_tex_image_interp(__tex_image_byte4_064, x, y); break;
case 65: r = kernel_tex_image_interp(__tex_image_byte4_065, x, y); break;
case 66: r = kernel_tex_image_interp(__tex_image_byte4_066, x, y); break;
case 67: r = kernel_tex_image_interp(__tex_image_byte4_067, x, y); break;
case 68: r = kernel_tex_image_interp(__tex_image_byte4_068, x, y); break;
case 69: r = kernel_tex_image_interp(__tex_image_byte4_069, x, y); break;
case 70: r = kernel_tex_image_interp(__tex_image_byte4_070, x, y); break;
case 71: r = kernel_tex_image_interp(__tex_image_byte4_071, x, y); break;
case 72: r = kernel_tex_image_interp(__tex_image_byte4_072, x, y); break;
case 73: r = kernel_tex_image_interp(__tex_image_byte4_073, x, y); break;
case 74: r = kernel_tex_image_interp(__tex_image_byte4_074, x, y); break;
case 75: r = kernel_tex_image_interp(__tex_image_byte4_075, x, y); break;
case 76: r = kernel_tex_image_interp(__tex_image_byte4_076, x, y); break;
case 77: r = kernel_tex_image_interp(__tex_image_byte4_077, x, y); break;
case 78: r = kernel_tex_image_interp(__tex_image_byte4_078, x, y); break;
case 79: r = kernel_tex_image_interp(__tex_image_byte4_079, x, y); break;
case 80: r = kernel_tex_image_interp(__tex_image_byte4_080, x, y); break;
case 81: r = kernel_tex_image_interp(__tex_image_byte4_081, x, y); break;
case 82: r = kernel_tex_image_interp(__tex_image_byte4_082, x, y); break;
case 83: r = kernel_tex_image_interp(__tex_image_byte4_083, x, y); break;
case 84: r = kernel_tex_image_interp(__tex_image_byte4_084, x, y); break;
case 85: r = kernel_tex_image_interp(__tex_image_byte4_085, x, y); break;
case 86: r = kernel_tex_image_interp(__tex_image_byte4_086, x, y); break;
case 87: r = kernel_tex_image_interp(__tex_image_byte4_087, x, y); break;
case 88: r = kernel_tex_image_interp(__tex_image_byte4_088, x, y); break;
case 89: r = kernel_tex_image_interp(__tex_image_byte4_089, x, y); break;
case 97: r = kernel_tex_image_interp(__tex_image_byte4_097, x, y); break;
case 105: r = kernel_tex_image_interp(__tex_image_byte4_105, x, y); break;
case 113: r = kernel_tex_image_interp(__tex_image_byte4_113, x, y); break;
case 121: r = kernel_tex_image_interp(__tex_image_byte4_121, x, y); break;
case 129: r = kernel_tex_image_interp(__tex_image_byte4_129, x, y); break;
case 137: r = kernel_tex_image_interp(__tex_image_byte4_137, x, y); break;
case 145: r = kernel_tex_image_interp(__tex_image_byte4_145, x, y); break;
case 153: r = kernel_tex_image_interp(__tex_image_byte4_153, x, y); break;
case 161: r = kernel_tex_image_interp(__tex_image_byte4_161, x, y); break;
case 169: r = kernel_tex_image_interp(__tex_image_byte4_169, x, y); break;
case 177: r = kernel_tex_image_interp(__tex_image_byte4_177, x, y); break;
case 185: r = kernel_tex_image_interp(__tex_image_byte4_185, x, y); break;
case 193: r = kernel_tex_image_interp(__tex_image_byte4_193, x, y); break;
case 201: r = kernel_tex_image_interp(__tex_image_byte4_201, x, y); break;
case 209: r = kernel_tex_image_interp(__tex_image_byte4_209, x, y); break;
case 217: r = kernel_tex_image_interp(__tex_image_byte4_217, x, y); break;
case 225: r = kernel_tex_image_interp(__tex_image_byte4_225, x, y); break;
case 233: r = kernel_tex_image_interp(__tex_image_byte4_233, x, y); break;
case 241: r = kernel_tex_image_interp(__tex_image_byte4_241, x, y); break;
case 249: r = kernel_tex_image_interp(__tex_image_byte4_249, x, y); break;
case 257: r = kernel_tex_image_interp(__tex_image_byte4_257, x, y); break;
case 265: r = kernel_tex_image_interp(__tex_image_byte4_265, x, y); break;
case 273: r = kernel_tex_image_interp(__tex_image_byte4_273, x, y); break;
case 281: r = kernel_tex_image_interp(__tex_image_byte4_281, x, y); break;
case 289: r = kernel_tex_image_interp(__tex_image_byte4_289, x, y); break;
case 297: r = kernel_tex_image_interp(__tex_image_byte4_297, x, y); break;
case 305: r = kernel_tex_image_interp(__tex_image_byte4_305, x, y); break;
case 313: r = kernel_tex_image_interp(__tex_image_byte4_313, x, y); break;
case 321: r = kernel_tex_image_interp(__tex_image_byte4_321, x, y); break;
case 329: r = kernel_tex_image_interp(__tex_image_byte4_329, x, y); break;
case 337: r = kernel_tex_image_interp(__tex_image_byte4_337, x, y); break;
case 345: r = kernel_tex_image_interp(__tex_image_byte4_345, x, y); break;
case 353: r = kernel_tex_image_interp(__tex_image_byte4_353, x, y); break;
case 361: r = kernel_tex_image_interp(__tex_image_byte4_361, x, y); break;
case 369: r = kernel_tex_image_interp(__tex_image_byte4_369, x, y); break;
case 377: r = kernel_tex_image_interp(__tex_image_byte4_377, x, y); break;
case 385: r = kernel_tex_image_interp(__tex_image_byte4_385, x, y); break;
case 393: r = kernel_tex_image_interp(__tex_image_byte4_393, x, y); break;
case 401: r = kernel_tex_image_interp(__tex_image_byte4_401, x, y); break;
case 409: r = kernel_tex_image_interp(__tex_image_byte4_409, x, y); break;
case 417: r = kernel_tex_image_interp(__tex_image_byte4_417, x, y); break;
case 425: r = kernel_tex_image_interp(__tex_image_byte4_425, x, y); break;
case 433: r = kernel_tex_image_interp(__tex_image_byte4_433, x, y); break;
case 441: r = kernel_tex_image_interp(__tex_image_byte4_441, x, y); break;
case 449: r = kernel_tex_image_interp(__tex_image_byte4_449, x, y); break;
case 457: r = kernel_tex_image_interp(__tex_image_byte4_457, x, y); break;
case 465: r = kernel_tex_image_interp(__tex_image_byte4_465, x, y); break;
case 473: r = kernel_tex_image_interp(__tex_image_byte4_473, x, y); break;
case 481: r = kernel_tex_image_interp(__tex_image_byte4_481, x, y); break;
case 489: r = kernel_tex_image_interp(__tex_image_byte4_489, x, y); break;
case 497: r = kernel_tex_image_interp(__tex_image_byte4_497, x, y); break;
case 505: r = kernel_tex_image_interp(__tex_image_byte4_505, x, y); break;
case 513: r = kernel_tex_image_interp(__tex_image_byte4_513, x, y); break;
case 521: r = kernel_tex_image_interp(__tex_image_byte4_521, x, y); break;
case 529: r = kernel_tex_image_interp(__tex_image_byte4_529, x, y); break;
case 537: r = kernel_tex_image_interp(__tex_image_byte4_537, x, y); break;
case 545: r = kernel_tex_image_interp(__tex_image_byte4_545, x, y); break;
case 553: r = kernel_tex_image_interp(__tex_image_byte4_553, x, y); break;
case 561: r = kernel_tex_image_interp(__tex_image_byte4_561, x, y); break;
case 569: r = kernel_tex_image_interp(__tex_image_byte4_569, x, y); break;
case 577: r = kernel_tex_image_interp(__tex_image_byte4_577, x, y); break;
case 585: r = kernel_tex_image_interp(__tex_image_byte4_585, x, y); break;
case 593: r = kernel_tex_image_interp(__tex_image_byte4_593, x, y); break;
case 601: r = kernel_tex_image_interp(__tex_image_byte4_601, x, y); break;
case 609: r = kernel_tex_image_interp(__tex_image_byte4_609, x, y); break;
case 617: r = kernel_tex_image_interp(__tex_image_byte4_617, x, y); break;
case 625: r = kernel_tex_image_interp(__tex_image_byte4_625, x, y); break;
case 633: r = kernel_tex_image_interp(__tex_image_byte4_633, x, y); break;
case 641: r = kernel_tex_image_interp(__tex_image_byte4_641, x, y); break;
case 649: r = kernel_tex_image_interp(__tex_image_byte4_649, x, y); break;
case 657: r = kernel_tex_image_interp(__tex_image_byte4_657, x, y); break;
case 665: r = kernel_tex_image_interp(__tex_image_byte4_665, x, y); break;
case 673: r = kernel_tex_image_interp(__tex_image_byte4_673, x, y); break;
default:
kernel_assert(0);
return make_float4(0.0f, 0.0f, 0.0f, 0.0f);

View File

@ -218,37 +218,14 @@ int ImageManager::max_flattened_slot(ImageDataType type)
/* The lower three bits of a device texture slot number indicate its type.
* These functions convert the slot ids from ImageManager "images" ones
* to device ones and vice verse.
*
* There are special cases for CUDA Fermi, since there we have only 90 image texture
* slots available and should keep the flattended numbers in the 0-89 range.
*/
int ImageManager::type_index_to_flattened_slot(int slot, ImageDataType type)
{
if(cuda_fermi_limits) {
if(type == IMAGE_DATA_TYPE_BYTE4) {
return slot + TEX_START_BYTE4_CUDA;
}
else {
return slot;
}
}
return (slot << IMAGE_DATA_TYPE_SHIFT) | (type);
}
int ImageManager::flattened_slot_to_type_index(int flat_slot, ImageDataType *type)
{
if(cuda_fermi_limits) {
if(flat_slot >= 4) {
*type = IMAGE_DATA_TYPE_BYTE4;
return flat_slot - TEX_START_BYTE4_CUDA;
}
else {
*type = IMAGE_DATA_TYPE_FLOAT4;
return flat_slot;
}
}
*type = (ImageDataType)(flat_slot & IMAGE_DATA_TYPE_MASK);
return flat_slot >> IMAGE_DATA_TYPE_SHIFT;
}