gpt4 book ai didi

Vulkan:在规范中找不到有关保留附件的特定用例的信息

转载 作者:行者123 更新时间:2023-12-04 08:30:09 28 4
gpt4 key购买 nike

想象一个用例,其中附件作为保留附件包含在 RenderPass 的第一个子 channel 中。我将“第一个子 channel ”定义为子 channel A,其中有一个带有 N 个子 channel 的 RenderPass,并且它的子 channel 之间存在依赖关系,其中 A 必须首先执行。
现在,那个用例对我来说没有意义。但是,我在 Spec 中寻求对此的澄清,到目前为止,我还没有遇到任何禁止它的内容。在我的代码中,我现在通过在检测到断言失败时发出断言失败来处理这个问题。但是,我真的很想从规范的嘴里听到,事实上,这不是一件合法/合理的事情。我试图避免做出假设。
如果有人知道我在哪里可以找到有关此用例的可靠信息,请指点我。

最佳答案

存在保留附件以处理以下情况:
您有一个操作附件的子 channel A。您有一个子 channel C,它使用 A 生成到该附件中的数据。因此,A 和 C 之间存在某种依赖性。但是,您还有一个子 channel B,它依赖于 A 生成的其他一些数据,而哪个 C 依赖于同样(因此,基于 A->B 和 B->C 依赖关系,A 和 C 的依赖关系可以是隐式的)。
也就是说,subpass B 必须在 A 和 C 之间执行。 但是我们也可以说 subpass B 本身不使用 A 为 C 生成的特定附件。
由于执行图要求 B 在 A 和 C 之间执行,因此任何实现此执行图的硬件可能需要在子 channel B 中分配一些存储空间,以确保保留此附件的内容。特别是在基于 tile 的渲染器上,这种存储通常是非常宝贵的。因此,Vulkan API 要求您在子 channel B 的定义中明确声明在 B 执行时需要保留来自 A 的附件,即使 B 不将其用于任何事情。
这是唯一需要保留附件的地方。即便如此,Vulkan 规范中没有任何内容禁止在此场景之外使用保留附件。你会发现规范中没有任何声明说这是禁止的,只有关于在何处需要保留附件的声明。
现在,这并不意味着您应该将保留附件推到任何地方。您应该在需要时使用它们,但仅此而已。

关于Vulkan:在规范中找不到有关保留附件的特定用例的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65065580/

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