gpt4 book ai didi

Vulkan:一次创建一个管道、命令缓冲区等有什么缺点吗?

转载 作者:行者123 更新时间:2023-12-01 00:36:11 27 4
gpt4 key购买 nike

一些 Vulkan 对象(例如 vkPipelines、vkCommandBuffers)能够在数组中创建/分配(使用大小 + 指针参数)。乍一看,这样做似乎是为了更容易使用常见的使用模式进行编码。但在某些情况下(例如:创建 C++ RAII 包装器时),一次创建一个会更好。当然,实现这一点很简单。

但是,我想知道这样做是否有任何重大缺点?

(我想这可能会因创建的实际对象类型而异 - 但我认为为每个对象提出相同的问题不是一个好主意)

假设在这两种情况下,对象很可能以先创建后销毁的方式创建,并且 - 虽然对象是单独创建和销毁的 - 这可能会在循环中发生。

另请注意:

  • vkCommandBuffers 也在数组中释放。
  • vkPipelines 被单独销毁。

  • 是否有任何原因我应该修改我的 RAII 包装器以允许基于数组的创建/销毁?例如,它会(显着地)节省内存吗?单一创建会降低性能吗?

    最佳答案

    请记住 vkPipeline创建不需要外部同步。这意味着该进程将处理它自己的互斥锁等等。因此,尽可能避免锁定这些内部互斥体是有意义的。

    另外,这个过程很慢。所以能够将它批处理并在另一个线程中执行它是非常有用的。

    命令缓冲区的创建没有这些问题。因此,您应该可以随意分配您需要的任何 CB。然而,多重创建永远不会损害性能,它可能会有所帮助。所以没有理由避免它。

    关于Vulkan:一次创建一个管道、命令缓冲区等有什么缺点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41084976/

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