I am new to OpenCL (have a bit more experience with CUDA) and have a question about image memory objects.

Do I understand correctly, that there is no way to have an image with only one channel? Consider I have a 3D black-and-white image of large size (e.g. 512^3) with float precision. If I store this as "Image3D" object, does this mean the memory consumption on the graphics hardware is then 4x512^3 floats (2GB), although I would actually only need one channel? This would mean that 3/4 of the consumption would be completely wasted, and the code would not run on a lot of cards, while it actually could, given a reasonable memory layout (512MB).

In total these image objects seem less flexible to me compared to what i can do with the "texture memory" in CUDA. Maybe I am mistaken (?).

Thanks for your answers,