如何在MacOS上创建共享的OpenCL上下文?

时间:2019-07-03 20:26:46

标签: macos opencl

我正在尝试将使用OpenCL的Windows应用程序移植到MacOS 10.11,但我很难确定如何创建共享现有GL上下文的CL上下文。

这是我们在Windows上执行的操作。该代码使用Khronos的cl.hpp标头以C ++编写:

cl_context_properties properties[7];

properties[0] = CL_GL_CONTEXT_KHR;
properties[1] = (cl_context_properties) wglGetCurrentContext();
properties[2] = CL_WGL_HDC_KHR;
properties[3] = (cl_context_properties) wglGetCurrentDC();
properties[4] = CL_CONTEXT_PLATFORM;
properties[5] = platform;
properties[6] = 0;

cl_device_id current_gl_device = 0;

if (clPlatformSupportsExtension(platform, "cl_khr_gl_sharing"))
{
    size_t size_ret = 0;
    cl_int status = clGetGLContextInfoKHR( 
                        properties,
                        CL_CURRENT_DEVICE_FOR_GL_CONTEXT_KHR, 
                        sizeof(cl_device_id),
                        &current_gl_device,
                        &size_ret
                    );
}

std::vector<cl::Device> devices(1, current_gl_device);
cl::Context( devices, &properties[0]);

问题在于,苹果似乎不支持上面带有“ khr”或“ KHR”的任何内容。

看起来与“ cl_khr_gl_sharing”等效的苹果是“ cl_APPLE_gl_sharing”,所以我想我对此有所了解。

有一个CL_CONTEXT_PROPERTY_USE_CGL_SHAREGROUP_APPLE属性,可用于创建共享上下文。文档没有说应该给它什么值,但是我一直在使用当前上下文的共享组。是吗?

创建CL上下文时,是否仍需要像在Windows中那样为OpenGL上下文和设备提供属性?如果是这样,怎么办?我没有看到等效于CL_GL_CONTEXT_KHR和CL_WGL_HDC_KHR的任何Apple属性参数。

谢谢。

0 个答案:

没有答案