提问人:RefuX 提问时间:11/14/2023 更新时间:11/15/2023 访问量:29
计算着色器写入交换链图像,图像布局验证错误
Compute shader writing to swapchain image, image layout validation error
问:
我正在尝试从计算着色器写入 Swapchain 图像。
到目前为止,我有:
将交换链映像绑定到存储映像 (VK_DESCRIPTOR_TYPE_STORAGE_IMAGE)
添加了对 Swapchain 上图像使用VK_IMAGE_USAGE_STORAGE_BIT
但现在我似乎陷入了第 22 条军规。
如果我将 DescriptorImageInfo 定义为具有 VK_IMAGE_LAYOUT_PRESENT_SRC_KHR 的布局,则会出现验证错误,指出允许的布局为:VK_IMAGE_LAYOUT_GENERAL (spec)
如果我将布局定义为VK_IMAGE_LAYOUT_GENERAL,则会得到 InvalidImageLayout,指出 CommandBuffer 期望图像位于布局VK_IMAGE_LAYOUT_GENERAL中,但它是VK_IMAGE_LAYOUT_PRESENT_SRC_KHR
答:
1赞
solidpixel
11/15/2023
#1
您需要使用布局过渡。
将交换链图面转换为LAYOUT_GENERAL,以便可以使用计算着色器写入该图面,然后在计算传递后使用布局转换将其转换为VK_IMAGE_LAYOUT_PRESENT_SRC_KHR,以将图像放回交换链的可呈现布局中。
评论
0赞
RefuX
11/15/2023
所以当你说“布局过渡”时,你指的是 ImageBarrier 吗?
1赞
solidpixel
11/16/2023
是的,对于计算,您需要使用图像屏障;对于渲染通道,您可以使用通道设置。
评论