gpt4 book ai didi

multithreading - 使用多线程渲染时必须使用辅助命令缓冲区吗?单队列与多队列怎么样?

转载 作者:行者123 更新时间:2023-12-03 12:45:36 24 4
gpt4 key购买 nike

我对使用主命令缓冲区和辅助命令缓冲区感到困惑。

enter image description here

从这个 NVIDIA 示例中,我了解到“重新使用 cmd”是主要命令缓冲区,而“重新使用 obj-level cmd”是辅助命令缓冲区(相对于对象)。是这样吗?

enter image description here

此性能表明“重新使用 cmd”比“重新使用 obj 级 cmd”更好(更快)。所以我得出结论,只使用 Primary 比使用 Secondary buffer 更好,但是,所有样本似乎都在多线程渲染中使用 secondary buffer。

在使用多线程渲染时我必须使用辅助命令缓冲区吗?

如果我应该支持多队列,我是否必须使用所有多队列?(多线程->生成命令缓冲区->提交多个队列)或者使用单个队列可以吗?

最佳答案

Must I use secondary command buffers when using multi-thread rendering?

没有。严格来说,我不明白你为什么必须这样做。当然,在更复杂的程序中,二级可能会让你的生活更轻松。在某些高级渲染引擎中,您可能会遇到仅使用 big primary 的一些架构问题。

第一种方法更快,因为它是最简单/琐碎的方法。您为每个场景构建一次大型主节点(驱动程序必须喜欢它,将所有信息放在一个地方,远远早于需要),然后仅提交(例如每帧 0 CPU 负载)。但只需尝试例如用这种方法绘制一个(一般的)动态场景——你会很难过。

If I should support multiple queues, do I have to use all the multiple queues? (multi-thread -> generate command buffer -> submit multiple queues) or using single queue is fine?

Q: Should I try to use as many queues as possible?

TL;DR——如果你不得不问,一个队列可能没问题。如果您有一些高度独立的工作(即不需要过度同步),请使用多个队列。 (它写入不同的图像是独立的好标志)

当然,古老的智慧是适用的:不要对性能做出假设。你必须测量。

关于multithreading - 使用多线程渲染时必须使用辅助命令缓冲区吗?单队列与多队列怎么样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38653826/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com