gpt4 book ai didi

vulkan - 同步两个渲染 channel : color attachment to sampled?

转载 作者:行者123 更新时间:2023-12-05 02:45:15 24 4
gpt4 key购买 nike

在 Vulkan 中,假设我有两个渲染 channel :

  1. 第一个输出到图像作为其颜色附件。
  2. 来自片段着色器的同一图像的第二个样本(即通过组合图像采样器)。

渲染 channel 按该顺序提交。

同步这两个渲染 channel 的正确方法是什么,这样第二个渲染 channel 就不会在第一个渲染 channel 写入之前读取?

在它们之间的图像上创建图像管道屏障是必要的和/或充分的吗?

最佳答案

在它们之间有一个图像内存屏障是必要且充分的:

  1. 执行障碍:您需要确保第二个渲染 channel 片段着色器 (VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT) 在所有第一个渲染 channel 颜色附件写入 (VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT) 之前不会开始执行>) 完成。

  2. 内存屏障:您需要确保第一个渲染 channel 颜色附件写入(VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT)对第二个可用并且可见 renderpass 图像采样指令(VK_ACCESS_SHADER_READ_BIT)。

  3. 布局转换:您需要将图像的布局从 VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL 更改为 VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL

所有这些都可以在 vkCmdPipelineBarrier 中使用单个 VkImageMemoryBarrier 完成。或者您可以在两个渲染 channel 之一上使用 VkSubpassDependency(dstSubpasssrcSubpass 设置为 VK_SUBPASS_EXTERNAL)和附件的 oldLayoutnewLayout 字段。

关于vulkan - 同步两个渲染 channel : color attachment to sampled?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66039294/

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