【发布时间】:2017-11-30 00:20:29
【问题描述】:
许多图形编程资源似乎都建议使用三重缓冲数据以避免 GPU 上的同步。以下是几个例子:
OpenGL Insights - Asynchronous Buffer Transfers
Apple's Best Practices (Triple Buffering)
GPU 和 CPU 异步运行...但还有另一个因素:驱动程序。它可能会发生(并且在桌面驱动程序实现中经常发生)驱动程序也异步运行。为了解决这个甚至更复杂的同步场景,您可以考虑使用三重缓冲:
- 一个 CPU 缓冲区
- 给司机一个
- 一个用于 gpu
这种方式应该不会在管道中出现停顿,但您需要为数据牺牲更多内存。
--
第三个缓冲区实际上是为驱动程序准备的吗?第三个缓冲区试图解决驱动程序上的什么同步问题?感觉我们可以只用两个缓冲区来避免所有同步。
【问题讨论】: