Image3D object in OpenCL

Hello all,

I am using the C++ wrappers to OpenCL and writing a wrapper around the Image2D/3D classes in OpenCL. I have a couple of questions about this.

I see that there are two separate objects for 2D and 3D images. Can I represent everything as a 3D image by setting the depth parameter to 1, for instance. Would this take a hit in terms of performance?

Secondly, I have some meta data associated with my images like some transformation matrices and information like dimensions etc. that I need to access in my kernels. I am guessing binding it to constant memory would be one way to do it but then if I have many instances of this object, this would not work as the last instance would overwrite it. Does anyone have a design suggestion on how to do this in OpenCL efficiently?