From 154eee96a0a30f9eba74c505dbe5de8c78e86a5e Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Fri, 11 Oct 2024 21:31:25 +0200 Subject: [PATCH] [dxvk] Use new layout transition helper in resolveImageHw --- src/dxvk/dxvk_context.cpp | 31 ++++++------------------------- 1 file changed, 6 insertions(+), 25 deletions(-) diff --git a/src/dxvk/dxvk_context.cpp b/src/dxvk/dxvk_context.cpp index 4b8c41461..665358efb 100644 --- a/src/dxvk/dxvk_context.cpp +++ b/src/dxvk/dxvk_context.cpp @@ -4171,31 +4171,12 @@ namespace dxvk { VkImageLayout dstLayout = dstImage->pickLayout(VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL); VkImageLayout srcLayout = srcImage->pickLayout(VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL); - VkImageLayout initialLayout = dstImage->info().layout; - - if (dstImage->isFullSubresource(region.dstSubresource, region.extent)) - initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; - - if (dstLayout != initialLayout) { - m_execAcquires.accessImage( - dstImage, dstSubresourceRange, initialLayout, - VK_PIPELINE_STAGE_TRANSFER_BIT, 0, - dstLayout, - VK_PIPELINE_STAGE_TRANSFER_BIT, - VK_ACCESS_TRANSFER_WRITE_BIT); - } - - if (srcLayout != srcImage->info().layout) { - m_execAcquires.accessImage( - srcImage, srcSubresourceRange, - srcImage->info().layout, - VK_PIPELINE_STAGE_TRANSFER_BIT, 0, - srcLayout, - VK_PIPELINE_STAGE_TRANSFER_BIT, - VK_ACCESS_TRANSFER_READ_BIT); - } - - m_execAcquires.recordCommands(m_cmd); + addImageLayoutTransition(*dstImage, dstSubresourceRange, dstLayout, + VK_PIPELINE_STAGE_2_TRANSFER_BIT, VK_ACCESS_2_TRANSFER_WRITE_BIT, + dstImage->isFullSubresource(region.dstSubresource, region.extent)); + addImageLayoutTransition(*srcImage, srcSubresourceRange, srcLayout, + VK_PIPELINE_STAGE_2_TRANSFER_BIT, VK_ACCESS_2_TRANSFER_READ_BIT, false); + flushImageLayoutTransitions(DxvkCmdBuffer::ExecBuffer); VkImageResolve2 resolveRegion = { VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2 }; resolveRegion.srcSubresource = region.srcSubresource;