diff --git a/src/dxvk/dxvk_context.cpp b/src/dxvk/dxvk_context.cpp index a9e1a2e4b..7f8df7f96 100644 --- a/src/dxvk/dxvk_context.cpp +++ b/src/dxvk/dxvk_context.cpp @@ -2822,19 +2822,25 @@ namespace dxvk { if (dstImage->isFullSubresource(dstSubresource, extent)) dstInitImageLayout = VK_IMAGE_LAYOUT_UNDEFINED; - m_execAcquires.accessImage( - dstImage, dstSubresourceRange, - dstInitImageLayout, 0, 0, - dstImageLayout, - VK_PIPELINE_STAGE_TRANSFER_BIT, - VK_ACCESS_TRANSFER_WRITE_BIT); + if (dstImageLayout != dstImage->info().layout) { + m_execAcquires.accessImage( + dstImage, dstSubresourceRange, + dstInitImageLayout, + VK_PIPELINE_STAGE_TRANSFER_BIT, 0, + dstImageLayout, + VK_PIPELINE_STAGE_TRANSFER_BIT, + VK_ACCESS_TRANSFER_WRITE_BIT); + } - m_execAcquires.accessImage( - srcImage, srcSubresourceRange, - srcImage->info().layout, 0, 0, - srcImageLayout, - VK_PIPELINE_STAGE_TRANSFER_BIT, - VK_ACCESS_TRANSFER_READ_BIT); + if (srcImageLayout != srcImage->info().layout) { + m_execAcquires.accessImage( + srcImage, srcSubresourceRange, + srcImage->info().layout, + VK_PIPELINE_STAGE_TRANSFER_BIT, 0, + srcImageLayout, + VK_PIPELINE_STAGE_TRANSFER_BIT, + VK_ACCESS_TRANSFER_READ_BIT); + } m_execAcquires.recordCommands(m_cmd);