How can I rescale a texture?


I need versions of my texture resized by 1/4, 1/16, 1/64…
Does cuda support this right out of the box?
I haven’t found anything in the programming guide on this.

Or do I have to code my own resize kernel?
I found out that it is not possible to write to texture memory from the kernel. Instead it seems like I would have to write to global memory, copy it back from device to host and then copy it into the texture from host do device. Won’t this be bad on the performance??

Any ideas or suggestions?

No, Cuda doesn’t provide any texture rescaling functions. (It doesn’t support mipmaps currently either.)

You will have to write your own kernel to resize a texture.

You can copy from global memory to an array (texture) without going through the host using a device-to-device memcpy. The performance is around 70Gb/sec with the 0.9 release.