CGLGetDeviceFromGLRenderer替代10.9

时间:2014-11-16 08:19:04

标签: macos opengl core-graphics opencl gpgpu

在Mac Pro上,我需要找到连接到屏幕的GPU的cl_device_id。

CGLGetDeviceFromGLRenderer(在WWDC 2014,Session 601中)被提及为将OpenGL渲染器的虚拟屏幕号转换为等效的OpenCL设备ID的API。

问题是CGLGetDeviceFromGLRenderer仅在OS X 10(Yosemite)上可用。

Mac OS 10.9是否有替代方法或解决方法?

1 个答案:

答案 0 :(得分:1)

您可以自己编写该功能:

#if !defined(MAC_OS_X_VERSION_10_10)
cl_device_id CGLGetDeviceFromGLRenderer(GLint rendererID)
{
    // For GPUs that support OpenCL in Mac OS X, the rendererID may be
    // transformed into a cl_device_id by masking away the low byte:
    // https://developer.apple.com/library/mac/technotes/tn2335/_index.html
    cl_device_id device_id = (cl_device_id)(intptr_t)(rendererID &~ 0xff);
    return device_id;
}
#endif