假设有一个队列系列支持表面和图形的呈现。创建一个处理演示和图形的单个命令池是更好(由于技术原因),还是创建两个命令池更好:一个应用程序仅用于图形(即使它可以用于演示)和另一个应用程序将仅用于演示(即使它可以用于图形)?
本质上,是否应该最小化与特定队列系列相关的命令池的数量?或者可以根据需要创建尽可能多的命令池吗?更一般地(无论命令池与哪个队列家族相关联),应用程序是否应该最小化它创建的命令池数量?
编辑:我在这篇文章的初始版本中写了“队列”而不是“命令池”。这已被修复。
命令池的主要目的是成为(主要是)单线程分配器,用于由该线程填充的一组命令缓冲区使用的存储。您创建池来实现该目的。
因此,如果您有三个线程需要为特定队列生成命令,那么您可以创建 3 个池,每个线程一个,并使用它们生成您感兴趣的 CB。
根据您的 CB 重置策略,您可能需要多缓冲池。也就是说,当一个线程从池 A 中向 CB 生成命令时,GPU 正在从池 B 中读取 CB。这样,当 GPU 完成时,您可以只重置池而不是重置单个 CB。
总而言之,您创建命令池来为应用程序的分配和 CB 构建策略提供服务。池与队列的关联只是为了帮助实现更有效地为那些 CB 生成命令。您不应假设池正在消耗队列中的某种有限资源。
| 归档时间: |
|
| 查看次数: |
438 次 |
| 最近记录: |