Hi,
I'm having trouble creating an OpenCL context from an OpenGL ES context on an Odroid XU3 running Android 4.4.4. The following code works fine on other non-ARM graphics hardware, but on the Mali chip the call to clCreateContextFromType fails with the error: "CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR (-1000)"
cl_context_properties contextProps[] = {
CL_CONTEXT_PLATFORM, cl_context_properties(m_platform),
CL_GL_CONTEXT_KHR, (cl_context_properties)eglGetCurrentContext(),
CL_EGL_DISPLAY_KHR, (cl_context_properties)eglGetCurrentDisplay(),
0
};
clCreateContextFromType(contextProps, CL_DEVICE_TYPE_GPU, 0, &err);
We have checked the m_platform variable and the value is the correct platform id. Are there any special/additional steps in order to create the context, or is OpenCL/OpenGL interop not fully supported at this time on Android?
Thanks,
-Alex
Hi Anthony,
I have checked the values for m_platform/eglGetCurrentContext()/eglGetCurrentDisplay() and they are all valid values. In addition, they are consistent with the values returned from EGL14.eglGetCurrentContext().getNativeHandle() and EGL14.eglGetCurrentDisplay().getNativeHandle() for the surface. Rendering in GLES works correctly.
Using the following code I get the same error message returned from the call to clCreateContext:
clGetDeviceIDs(m_platform, CL_DEVICE_TYPE_GPU, 1, &m_device, NULL);
clCreateContext(contextProps, 1, &m_device, NULL, NULL, &err);
Many thanks,
Alex
Hi akrolik
Just to keep you updated, we have not had much time to look at this recently, hence the lack of a reply. We hope to get to this soon, however cannot give you an ETA at this time.
In case this applies to you, if you are a partner/customer of ARM, you are most likely entitled to dedicated support through our support channel.
If you need a quicker response and are a partner of ours, please use the support channel rather than this public forum.
Kind Regards,
Michael McGeagh