Я использую OpenGL для некоторой обработки GPGPU.Таким образом, у меня есть разные потоки, дающие работу потоку обработки OpenGL.
После каждого «рабочего элемента» мне нужно вызывать glReadPixels и glMapBuffer для передачи данных обратно на хост из PBO.Однако проблема заключается в том, что glMapBuffer блокирует поток, и никакая полезная работа не может быть выполнена до завершения передачи DMA, даже если графический процессор не используется.Обычный способ решить эту проблему - создать конвейер с глубиной времени самой длинной передачи DMA.Тем не менее, так как я работаю над системой с низкой задержкой, это неоптимально.
Есть ли способ ждать glMapBuffer в отдельном потоке или, возможно, получить уведомление каккогда передача DMA закончилась , чтобы максимально уменьшить задержку?