Fetch depth resolve image attachments when dynamic rendering

This commit is contained in:
baldurk committed 2026-07-20 17:36:09 +01:00
1 parent 98d216e629
commit 7e9b562fe6
1 file changed
+33
+33
View File
@@ -1856,15 +1856,25 @@ void VulkanReplay::SavePipelineState(uint32_t eventId)
fbState.attachments.push_back({});
ResourceId viewid = GetResID(dyn.depth.imageView);
ResourceId resolveImageView;
if(state.dynamicRendering.beginCustomResolve &&
(dyn.depth.resolveMode & VK_RESOLVE_MODE_CUSTOM_BIT_EXT))
viewid = GetResID(dyn.depth.resolveImageView);
else if((dyn.depth.resolveMode != VK_RESOLVE_MODE_NONE) &&
!(dyn.depth.resolveMode & VK_RESOLVE_MODE_CUSTOM_BIT_EXT) &&
(dyn.depth.resolveImageView != VK_NULL_HANDLE))
resolveImageView = GetResID(dyn.depth.resolveImageView);
if(dyn.depth.imageView == VK_NULL_HANDLE)
{
viewid = GetResID(dyn.stencil.imageView);
if(state.dynamicRendering.beginCustomResolve &&
(dyn.stencil.resolveMode & VK_RESOLVE_MODE_CUSTOM_BIT_EXT))
viewid = GetResID(dyn.stencil.resolveImageView);
else if((dyn.stencil.resolveMode != VK_RESOLVE_MODE_NONE) &&
!(dyn.stencil.resolveMode & VK_RESOLVE_MODE_CUSTOM_BIT_EXT) &&
(dyn.stencil.resolveImageView != VK_NULL_HANDLE))
resolveImageView = GetResID(dyn.stencil.resolveImageView);
}
fbState.attachments.back().view = viewid;
@@ -1879,6 +1889,29 @@ void VulkanReplay::SavePipelineState(uint32_t eventId)
Convert(fbState.attachments.back().swizzle, c.m_ImageView[viewid].componentMapping);
rpState.depthstencilAttachment = int32_t(attIdx++);
if(resolveImageView != ResourceId())
{
fbState.attachments.push_back({});
fbState.attachments.back().view = resolveImageView;
ret.currentPass.framebuffer.attachments[attIdx].resource =
c.m_ImageView[resolveImageView].image;
fbState.attachments.back().format =
MakeResourceFormat(c.m_ImageView[resolveImageView].format);
fbState.attachments.back().firstMip =
c.m_ImageView[resolveImageView].range.baseMipLevel & 0xff;
fbState.attachments.back().firstSlice =
c.m_ImageView[resolveImageView].range.baseArrayLayer & 0xffff;
fbState.attachments.back().numMips = c.m_ImageView[resolveImageView].range.levelCount & 0xff;
fbState.attachments.back().numSlices =
c.m_ImageView[resolveImageView].range.layerCount & 0xffff;
Convert(fbState.attachments.back().swizzle, c.m_ImageView[resolveImageView].componentMapping);
ret.currentPass.renderpass.depthstencilResolveAttachment = int32_t(attIdx++);
}
}
else
{