CL/GL Interop

Is sharing OpenGL Textures with OpenCL possible in the current release?

I am able to create OpenCL image objects with the clCreateFromGLTexture2D function, but when I am trying to read data from (clEnqueueReadImage) or write (clEnqueueWriteImage or clEnqueueCopyImage) to the OpenCL image object a CL_INVALID_VALUE error occurs. Sharing of BufferObjects works fine though.

Haven’t tried it myself, but I believe it should work. What you can check is the list of supported image formats for your OpenCL implementation. Don’t know how to do this, but I vaguely remember discussions about this so a search either on this forum or khronos.org should give you some hints.

I have made several tests and my results are:

    CL image channel order is CL_BGRA and channel type is CL_UNORM_INT8 with GL format GL_RGBA (GeForce 8800 GTS)

    reading from and writing to textures with kernel works

    copying with clEnqueueCopyImage does not work even if both source and destination are created from OpenGL textures (so no image format conflicts can occur)

    reading from and writing to textures with clEnqueueReadImage and clEnqueueWriteImage or mapping with clEnqueueMapImage does not work, too.

Can anyone confirm these results?