首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >做工作而不是等待glMapBuffer

做工作而不是等待glMapBuffer
EN

Stack Overflow用户
提问于 2011-05-21 23:24:48
回答 1查看 710关注 0票数 1

我正在使用OpenGL处理GPGPU。因此,我有不同的线程将工作交给一个OpenGL处理线程。

在每个“工作项”之后,我需要调用glReadPixels和glMapBuffer,以便将数据从PBO传输回主机。然而,这方面的问题是,glMapBuffer阻塞线程,在DMA传输完成之前无法完成任何有用的工作,即使GPU是空闲的。解决这一问题的通常方法是创建一个具有最长DMA传输时间深度的管道。但是,由于我正在开发一个低延迟系统,这是次优的。

是否有一种方法可以让在单独的线程上等待glMapBuffer,或者可能得到一些通知,说明DMA传输何时完成了,以便尽可能减少延迟?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-22 13:41:05

在一个glMapBuffer块之外的其他线程中做一些额外的工作吗?您可以有多个OpenGL上下文,每个上下文在自己的线程中都是活动的;如果它们被配置为共享对象,它们可以同时进行操作。

但是DMA实际上意味着GPU的工作,至少它的带宽是完全消耗的,所以您可能会得到更差的性能。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6085061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档