Как мне создать общий контекст OpenCL в MacOS? - PullRequest
0 голосов
/ 03 июля 2019

Я пытаюсь портировать на MacOS 10.11 приложение Windows, которое использует OpenCL, и мне трудно понять, как создать контекст CL, который разделяет существующий контекст GL.

Вот что мы делаем в Windows. Код написан на C ++ с использованием заголовка cl.hpp от Khronos:

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]);

Проблема в том, что Apple, похоже, не поддерживает ничего выше с «khr» или «KHR».

Похоже, что Apple эквивалентен "cl_khr_gl_sharing", это "cl_APPLE_gl_sharing", поэтому я думаю, что у меня есть справка об этом.

Существует свойство CL_CONTEXT_PROPERTY_USE_CGL_SHAREGROUP_APPLE, которое можно использовать для создания общего контекста. В документах не указано, какое значение должно быть предоставлено, но я использую группу общих ресурсов текущего контекста. Это правильно?

Когда я создаю контекст CL, мне все еще нужно предоставлять свойства для контекста OpenGL и устройства, как мы делаем в Windows? Если так, то как? Я не вижу никаких параметров свойств Apple, эквивалентных CL_GL_CONTEXT_KHR и CL_WGL_HDC_KHR.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...