Recently, I tried to use clEnqueueCopyImage for OpenGL/ES interop with OpenCL. However, it just return -59(CL_INVALID_OPERATION) after calling clEnqueueCopyImage
How could i fix it ?
I'm afraid older drivers do not support imported images as the source of image copy commands. This restriction is being relaxed for several types of memory and we will make sure that your usage scenario is tested going forward.
Taking a step back: do you really need to make a copy? Imported EGL images can be accessed directly from kernels and getting rid of the copy would give you better performance. If you do need the copy on current drivers in that exact scenario, a reasonable workaround could be to write a simple kernel that performs the copy. It could be as simple as: read one pixel from the source image in each work-item and write that pixel to the destination image.
Hope this helps and don't hesitate if you need more help!
I have tried to write a simple kernel to access the Imported EGL images, however, it also return CL_INVALID_OPERATION after calling clEnqueueNDRange. So, I suspect that the Imported EGL images is not truly accessible although calling of clCreateFromEGLImageKHR return true
Thanks for this interesting information! Very useful for me.