VkSubpassdependency 是否仅对渲染通道内的子通道有用?
Does VkSubpassdependencies only usefull for subpasses inside a renderpass?
subpass 是否仅在单个渲染通道中对子通道执行同步,它是否还包括 before/after 范围内的先前渲染通道和即将到来的渲染通道。如果是这样,我应该什么时候使用管道屏障?
你需要仔细阅读这些东西的规范。 Vulkan 同步不是您随手就能搞定的。
正式指定范围:
If srcSubpass
is equal to VK_SUBPASS_EXTERNAL
, the first synchronization scope includes commands that occur earlier in submission order than the vkCmdBeginRenderPass
used to begin the render pass instance. Otherwise, the first set of commands includes all commands submitted as part of the subpass instance identified by srcSubpass
and any load, store or multisample resolve operations on attachments used in srcSubpass
. In either case, the first synchronization scope is limited to operations on the pipeline stages determined by the source stage mask specified by srcStageMask
.
第二个同步范围也有类似的措辞。
要理解这一点,您必须已经知道并完全掌握这里涉及的所有术语,这也是指定的。
简而言之,VK_SUBPASS_EXTERNAL
涵盖了渲染过程之外的内容。这一半的依赖性实际上与 vkCmdPipelineBarrier
相同。并且具有特定的*Supbass
,那么一半的依赖仅限于那个特定的子通道。
If so, when should I use a pipeline barrier?
每当无法或不方便使用子通道依赖项时。 IE。对于两个计算之间的依赖关系、队列所有权转移、一次性布局转换等...
subpass 是否仅在单个渲染通道中对子通道执行同步,它是否还包括 before/after 范围内的先前渲染通道和即将到来的渲染通道。如果是这样,我应该什么时候使用管道屏障?
你需要仔细阅读这些东西的规范。 Vulkan 同步不是您随手就能搞定的。
正式指定范围:
If
srcSubpass
is equal toVK_SUBPASS_EXTERNAL
, the first synchronization scope includes commands that occur earlier in submission order than thevkCmdBeginRenderPass
used to begin the render pass instance. Otherwise, the first set of commands includes all commands submitted as part of the subpass instance identified bysrcSubpass
and any load, store or multisample resolve operations on attachments used insrcSubpass
. In either case, the first synchronization scope is limited to operations on the pipeline stages determined by the source stage mask specified bysrcStageMask
.
第二个同步范围也有类似的措辞。
要理解这一点,您必须已经知道并完全掌握这里涉及的所有术语,这也是指定的。
简而言之,VK_SUBPASS_EXTERNAL
涵盖了渲染过程之外的内容。这一半的依赖性实际上与 vkCmdPipelineBarrier
相同。并且具有特定的*Supbass
,那么一半的依赖仅限于那个特定的子通道。
If so, when should I use a pipeline barrier?
每当无法或不方便使用子通道依赖项时。 IE。对于两个计算之间的依赖关系、队列所有权转移、一次性布局转换等...