gpt4 book ai didi

layout - Vulkan:附件同步与隐式布局转换

转载 作者:行者123 更新时间:2023-12-05 02:14:06 31 4
gpt4 key购买 nike

我几乎阅读了谷歌给我的关于这个主题的所有内容,但未能得出令人满意的结论。它本质上是这个问题的后续问题:

Moving image layouts with barrier or renderpasses

假设我有一个颜色附件,它在一个渲染 channel 中写入并在第二个渲染 channel 中采样。让两个渲染 channel 中只有一个子 channel 。处理布局转换和依赖关系的一种方法是在两个渲染过程之间添加一个屏障,这会将布局从 VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL 更改为 VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL。

但 Vulkan 还提供隐式布局转换(vkAttachmentDescription、initialLayout 和 finalLayout)。我猜想使用它们有性能优势,所以让我们简单地尝试摆脱我们的障碍。我们在 vkAttachmentDescription 结构中设置了 initialLayout 和 finalLayout 字段并移除了屏障。问题是,我们失去了屏障提供的同步,所以我们需要通过其他方式取回同步。这就是困惑开始的地方,导致我的问题:

1) 在两个渲染 channel 之间同步附件的推荐方法是什么?显然我可以简单地重新添加障碍而不更改布局,但这不会破坏整个练习的目的,即通过使用隐式布局转换和摆脱障碍来获得更好的性能吗?或者我应该将渲染 channel 1 的单个子 channel 的子 channel 依赖项添加到 VK_SUBPASS_EXTERNAL?在性能方面使用 VK_SUBPASS_EXTERNAL 有什么注意事项吗?

2) 如何向后同步附件?将附件转换为正确的初始布局是应用程序的责任,这显然可以通过屏障来完成。能否更换此障碍以获得性能优势?我能想到的唯一方法是使用从 VK_SUBPASS_EXTERNAL 到渲染 channel 1 的单个子 channel 的子 channel 依赖来完成依赖部分,并使用“快速”屏障(不同步的屏障),它只执行布局变化。这有意义吗?那个障碍会是什么样子?或者在这种情况下“完全”障碍是不可避免的吗?

我的问题的简短版本很简单:其他人如何结合隐式布局转换进行附件同步?

最佳答案

一般来说,当 Vulkan 或类似的低级 API 为您提供多种可以实现您想要的功能的工具时,您应该优先选择可以解决您的问题的最具体工具(而不必从根本上重新构建您的代码或从根本上影响您的设计)。

在您的情况下,您有 2 个选项:障碍或渲染 channel 机制(子 channel 依赖性和布局转换)。障碍对任何事物都有效;他们不关心图像的来源、用途或去向。渲染 channel 机制仅适用于渲染 channel 中发生的事情,主要处理附加到渲染 channel 的图像(隐式布局转换适用于附件)。

渲染 channel 机制更具体,因此如果它们满足您的需求,您应该更愿意使用这些工具。

这也是为什么,如果您有两个“单独的”渲染操作,可以在同一个渲染 channel 中(如果您以一种可以在限制范围内的方式从附件中读取输入附件),您应该更愿意将它们放在同一个渲染过程中。

关于layout - Vulkan:附件同步与隐式布局转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54186203/

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