一部のGPGPU処理にOpenGLを使用しています。そのため、OpenGL処理スレッドに作業を提供するさまざまなスレッドがあります。
各「作業項目」の後で、PBOからホストにデータを転送するために、glReadPixelsとglMapBufferを呼び出す必要があります。ただし、これに伴う問題は、glMapBufferがスレッドをブロックし、GPUがアイドル状態であっても、DMA転送が終了するまで有用な作業を実行できないことです。これを解決する通常の方法は、最長のDMA転送の時間深度を持つパイプラインを作成することです。ただし、私は低遅延システムで作業しているため、これは最適ではありません。
レイテンシーを可能な限り減らすために、別のスレッドでglMapBufferを待つ方法や、DMA転送がいつ終了したかについての通知を受け取る方法はありますか?