使OpenGL在OS X上等待OpenCL

时间:2014-01-04 08:02:07

标签: macos opengl synchronization opencl

我想知道在完成之前的OpenCL命令时是否可以在OS X块上创建OpenGL命令,而根本不会阻塞主机。

Apple's文档describes在另一个线程上执行OpenCL内核(同步)之后发出信号量信号。但是,我希望保持所有OpenGL和OpenCL调用的异步,而不必在信号量上停止主机执行。

走另一条路(使OpenCL等待OpenGL)是cl_khr_gl_event OpenCL扩展的用途,它似乎工作得很好(除了它与我想要的相反)。

ARB_cl_event OpenGL扩展似乎做了我想要的,但它似乎并没有出现在Mac上。 : - (

我在想,也许我可以创建一个OpenGL同步对象,将其链接到OpenCL事件,然后以某种方式使OpenCL排队一个会触发事件的任务,从而触发同步对象。我以为我可以使用glWaitSync来使GL暂停。但是,这种方法不起作用,因为没有办法在不立即将其插入命令流的情况下创建OpenGL同步事件。

在没有制作主机块的情况下,我是否有某些方法可以在OS X上执行此操作?

1 个答案:

答案 0 :(得分:1)

看起来clEnqueueAcquireGLObjects和clEnqueueReleaseGLObjects执行所有必要的同步。在这种情况下,似乎不需要clCreateEventFromGLsyncKHR。