假设管道已经完全充满:GPU 等待垂直同步,GPU/驱动程序命令缓冲区全部充满,因此用户程序被阻塞。
(现代)管道中有多少帧数据?
例如:(4)
(现代)管道中有多少帧数据?
例如:(4)
- 在 GPU 前缓冲区的帧
- 在 GPU 后缓冲区的帧
- 在 GPU 命令缓冲区的帧
- 在 CPU 驱动程序命令缓冲区的帧
而且,在那些API中,没有真正的方法来为多个完整的帧构建命令数据,所以你可以在进行中的飞行过程中的帧数将受到实际使用的缓冲区数量的限制。延迟帧的数量通常是缓冲区的数量加1,代表你正在构建的帧。
对于命令缓冲器API,帧数通常基于你拥有的CPU内存数量。缓冲区的数量提供了一个最小值,但从技术上讲,你完全可以提前缓冲数十个甚至数百个帧。当然,这是在CPU内存之外。
当然,这假设所有每帧数据都存在于CBs中。如果任何其中的数据存在于GPU可访问的内存中(比如矩阵数组等),或者你需要在帧之间更改描述符集,则现在你有另一组需要缓冲的东西。这会给深入进行的事情带来额外的限制。