gpt4 book ai didi

vulkan - 对于 vkQueueSubmit,在什么情况下 VkFence 比 vkQueueWaitIdle 更好?

转载 作者:行者123 更新时间:2023-12-04 15:32:51 30 4
gpt4 key购买 nike

如所述 here vkQueueWaitIdle 相当于 vkFence。
那么在哪种情况下使用它们中的任何一个。

最佳答案

如你所说,vkQueueWaitIdle()只是 Fence 使用的一个特例。

因此,当您必须编写 10 行等效的 Fence 代码时,您会使用它——特别是如果您不关心记住所有以前的队列提交。它在某种程度上是一种调试功能(大多数情况下,您会临时使用它来测试您的同步)。它可能在清理过程中很有用(例如应用程序终止或重建交换链)。

在所有其他情况下,您应该更喜欢 VkFence s,这是更一般的:

  • 您可以利用高级 vkWaitForFences()用法。 IE。等待与等待以及 timeout .
  • 你将它提供给一些应该发出信号的命令(不能用 vkQueueWaitIdle() 做到这一点)。您可以执行以下操作:vkQueueSubmit( q, 1, si1, fence1 );vkQueueSubmit( q, 1, si2, fence2 );vkWaitFences( fence1 ); // won't block on the 2nd submit unlike vkQueueWaitIdle(q)这甚至可能比:vkQueueSubmit( q, 1, si1, 0 );vkQueueWaitIdle(q);vkQueueSubmit( q, 1, si2, 0 );
  • 您可以直接查询 Fence 的状态而无需等待 vkGetFenceStatus() .例如。有一些后台工作,只是在你做其他工作时定期询问它是否已经完成。
  • VkFence即使在相同的情况下也可能更快。 vkQueueWaitIdle()可能被实现为
    vkQueueSubmit( q, 0, nullptr, fence );
    vkWaitFences( fence, infiniteWait );
    您可能会为 vkQueueSubmit 支付额外费用.
  • 关于vulkan - 对于 vkQueueSubmit,在什么情况下 VkFence 比 vkQueueWaitIdle 更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39537176/

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