Cycles / GPU Image Textures:

* On nvidia Kepler GPUs (sm_30 and above), there are now 145 byte images available, instead of 95. 
We could extend this to about 200 if needed. 

Could not test this, as I don't have a Kepler GPU, so feedback on this would be appreciated.

Thanks to Brecht for review and some fixes. :)
This commit is contained in:
Thomas Dinges
2013-06-20 15:14:14 +00:00
parent 370ebad2f9
commit 230f4e7ca2
10 changed files with 134 additions and 10 deletions

View File

@@ -176,6 +176,61 @@ KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_097)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_098)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_099)
/* Kepler and above */
#if defined(__KERNEL_CUDA__) && __CUDA_ARCH__ >= 300
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_100)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_101)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_102)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_103)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_104)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_105)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_106)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_107)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_108)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_109)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_110)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_111)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_112)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_113)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_114)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_115)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_116)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_117)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_118)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_119)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_120)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_121)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_122)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_123)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_124)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_125)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_126)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_127)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_128)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_129)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_130)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_131)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_132)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_133)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_134)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_135)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_136)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_137)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_138)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_139)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_140)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_141)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_142)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_143)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_144)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_145)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_146)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_147)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_148)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_149)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_150)
#endif
/* packed image (opencl) */
KERNEL_TEX(uchar4, texture_uchar4, __tex_image_packed)
KERNEL_TEX(uint4, texture_uint4, __tex_image_packed_info)

View File

@@ -229,6 +229,60 @@ __device float4 svm_image_texture(KernelGlobals *kg, int id, float x, float y, u
case 97: r = kernel_tex_image_interp(__tex_image_097, x, y); break;
case 98: r = kernel_tex_image_interp(__tex_image_098, x, y); break;
case 99: r = kernel_tex_image_interp(__tex_image_099, x, y); break;
#if defined(__KERNEL_CUDA__) && __CUDA_ARCH__ >= 300
case 100: r = kernel_tex_image_interp(__tex_image_100, x, y); break;
case 101: r = kernel_tex_image_interp(__tex_image_101, x, y); break;
case 102: r = kernel_tex_image_interp(__tex_image_102, x, y); break;
case 103: r = kernel_tex_image_interp(__tex_image_103, x, y); break;
case 104: r = kernel_tex_image_interp(__tex_image_104, x, y); break;
case 105: r = kernel_tex_image_interp(__tex_image_105, x, y); break;
case 106: r = kernel_tex_image_interp(__tex_image_106, x, y); break;
case 107: r = kernel_tex_image_interp(__tex_image_107, x, y); break;
case 108: r = kernel_tex_image_interp(__tex_image_108, x, y); break;
case 109: r = kernel_tex_image_interp(__tex_image_109, x, y); break;
case 110: r = kernel_tex_image_interp(__tex_image_110, x, y); break;
case 111: r = kernel_tex_image_interp(__tex_image_111, x, y); break;
case 112: r = kernel_tex_image_interp(__tex_image_112, x, y); break;
case 113: r = kernel_tex_image_interp(__tex_image_113, x, y); break;
case 114: r = kernel_tex_image_interp(__tex_image_114, x, y); break;
case 115: r = kernel_tex_image_interp(__tex_image_115, x, y); break;
case 116: r = kernel_tex_image_interp(__tex_image_116, x, y); break;
case 117: r = kernel_tex_image_interp(__tex_image_117, x, y); break;
case 118: r = kernel_tex_image_interp(__tex_image_118, x, y); break;
case 119: r = kernel_tex_image_interp(__tex_image_119, x, y); break;
case 120: r = kernel_tex_image_interp(__tex_image_120, x, y); break;
case 121: r = kernel_tex_image_interp(__tex_image_121, x, y); break;
case 122: r = kernel_tex_image_interp(__tex_image_122, x, y); break;
case 123: r = kernel_tex_image_interp(__tex_image_123, x, y); break;
case 124: r = kernel_tex_image_interp(__tex_image_124, x, y); break;
case 125: r = kernel_tex_image_interp(__tex_image_125, x, y); break;
case 126: r = kernel_tex_image_interp(__tex_image_126, x, y); break;
case 127: r = kernel_tex_image_interp(__tex_image_127, x, y); break;
case 128: r = kernel_tex_image_interp(__tex_image_128, x, y); break;
case 129: r = kernel_tex_image_interp(__tex_image_129, x, y); break;
case 130: r = kernel_tex_image_interp(__tex_image_130, x, y); break;
case 131: r = kernel_tex_image_interp(__tex_image_131, x, y); break;
case 132: r = kernel_tex_image_interp(__tex_image_132, x, y); break;
case 133: r = kernel_tex_image_interp(__tex_image_133, x, y); break;
case 134: r = kernel_tex_image_interp(__tex_image_134, x, y); break;
case 135: r = kernel_tex_image_interp(__tex_image_135, x, y); break;
case 136: r = kernel_tex_image_interp(__tex_image_136, x, y); break;
case 137: r = kernel_tex_image_interp(__tex_image_137, x, y); break;
case 138: r = kernel_tex_image_interp(__tex_image_138, x, y); break;
case 139: r = kernel_tex_image_interp(__tex_image_139, x, y); break;
case 140: r = kernel_tex_image_interp(__tex_image_140, x, y); break;
case 141: r = kernel_tex_image_interp(__tex_image_141, x, y); break;
case 142: r = kernel_tex_image_interp(__tex_image_142, x, y); break;
case 143: r = kernel_tex_image_interp(__tex_image_143, x, y); break;
case 144: r = kernel_tex_image_interp(__tex_image_144, x, y); break;
case 145: r = kernel_tex_image_interp(__tex_image_145, x, y); break;
case 146: r = kernel_tex_image_interp(__tex_image_146, x, y); break;
case 147: r = kernel_tex_image_interp(__tex_image_147, x, y); break;
case 148: r = kernel_tex_image_interp(__tex_image_148, x, y); break;
case 149: r = kernel_tex_image_interp(__tex_image_149, x, y); break;
case 150: r = kernel_tex_image_interp(__tex_image_150, x, y); break;
#endif
default:
kernel_assert(0);
return make_float4(0.0f, 0.0f, 0.0f, 0.0f);