is there an equavalent to cudaMallocPitch in OpenCL?

I’m starting to look at OpenCL vs Cuda. For 2D arrays one should use cudaMallocPitch instead of cudaMalloc to get coalesced accesses on row.

I’m trying to figure out if there is an equivalent in OpenCL.

Seems like buffers are linear memory only and there doesn’t seem to be any information on how to calculate optimal pitch (and I don’t mean from NVidia’s documentations as then the code is not portable)

images support pitch and look to be some extension to textures, although it’s not clear exactly how as the also support writing and only seem to support vector images (information on the scalar case isn’t clear). They are also not support by ATI driver on the CPU (don’t have an ATI card so I don’t know what happens on the GPU side) which means double code.

Also what is the exact equivalent for textures? (is it read only images or do all images work via textures)