我想知道在完成之前的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上执行此操作?
答案 0 :(得分:1)
看起来clEnqueueAcquireGLObjects和clEnqueueReleaseGLObjects执行所有必要的同步。在这种情况下,似乎不需要clCreateEventFromGLsyncKHR。