From f39d49772dec90e98728b793cbb83d9b53d812d9 Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Tue, 19 Jul 2022 14:10:47 +0200 Subject: [PATCH] [dxvk] Use copy_commands2 functions for image resolves Same idea as with blits, don't expose VkImageResolve2. --- src/dxvk/dxvk_cmdlist.h | 12 ++---------- src/dxvk/dxvk_context.cpp | 22 +++++++++++++++++----- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/src/dxvk/dxvk_cmdlist.h b/src/dxvk/dxvk_cmdlist.h index b41aef179..954071e79 100644 --- a/src/dxvk/dxvk_cmdlist.h +++ b/src/dxvk/dxvk_cmdlist.h @@ -616,16 +616,8 @@ namespace dxvk { void cmdResolveImage( - VkImage srcImage, - VkImageLayout srcImageLayout, - VkImage dstImage, - VkImageLayout dstImageLayout, - uint32_t regionCount, - const VkImageResolve* pRegions) { - m_vkd->vkCmdResolveImage(m_execBuffer, - srcImage, srcImageLayout, - dstImage, dstImageLayout, - regionCount, pRegions); + const VkResolveImageInfo2* resolveInfo) { + m_vkd->vkCmdResolveImage2(m_execBuffer, resolveInfo); } diff --git a/src/dxvk/dxvk_context.cpp b/src/dxvk/dxvk_context.cpp index 68c29298e..cef4bdd93 100644 --- a/src/dxvk/dxvk_context.cpp +++ b/src/dxvk/dxvk_context.cpp @@ -3705,11 +3705,23 @@ namespace dxvk { } m_execAcquires.recordCommands(m_cmd); - - m_cmd->cmdResolveImage( - srcImage->handle(), srcLayout, - dstImage->handle(), dstLayout, - 1, ®ion); + + VkImageResolve2 resolveRegion = { VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2 }; + resolveRegion.srcSubresource = region.srcSubresource; + resolveRegion.srcOffset = region.srcOffset; + resolveRegion.dstSubresource = region.dstSubresource; + resolveRegion.dstOffset = region.dstOffset; + resolveRegion.extent = region.extent; + + VkResolveImageInfo2 resolveInfo = { VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2 }; + resolveInfo.srcImage = srcImage->handle(); + resolveInfo.srcImageLayout = srcLayout; + resolveInfo.dstImage = dstImage->handle(); + resolveInfo.dstImageLayout = dstLayout; + resolveInfo.regionCount = 1; + resolveInfo.pRegions = &resolveRegion; + + m_cmd->cmdResolveImage(&resolveInfo); m_execBarriers.accessImage( dstImage, dstSubresourceRange, dstLayout,