From f2802dd2ff5d423b1233541e9042959d70f65b65 Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Mon, 17 Feb 2025 01:25:16 +0100 Subject: [PATCH] [dxvk] Fix some potential image layout bugs --- src/dxvk/dxvk_context.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/dxvk/dxvk_context.cpp b/src/dxvk/dxvk_context.cpp index 2528bdb83..ec9fa0761 100644 --- a/src/dxvk/dxvk_context.cpp +++ b/src/dxvk/dxvk_context.cpp @@ -1846,8 +1846,9 @@ namespace dxvk { VkImageLayout srcLayout, VkImageLayout dstLayout) { this->spillRenderPass(false); - + if (srcLayout != dstLayout) { + prepareImage(dstImage, dstSubresources); flushPendingAccesses(*dstImage, dstSubresources, DxvkAccess::Write); accessImage(DxvkCmdBuffer::ExecBuffer, @@ -3763,7 +3764,8 @@ namespace dxvk { if (attachmentIndex < 0) { this->spillRenderPass(false); - flushPendingAccesses(*imageView->image(), imageView->imageSubresources(), DxvkAccess::Write); + this->prepareImage(imageView->image(), imageView->subresources()); + this->flushPendingAccesses(*imageView->image(), imageView->imageSubresources(), DxvkAccess::Write); if (unlikely(m_features.test(DxvkContextFeature::DebugUtils))) { const char* dstName = imageView->image()->info().debugName; @@ -3867,6 +3869,7 @@ namespace dxvk { spillRenderPass(false); invalidateState(); + prepareImage(imageView->image(), imageView->subresources()); flushPendingAccesses(*imageView->image(), imageView->imageSubresources(), DxvkAccess::Write); cmdBuffer = DxvkCmdBuffer::ExecBuffer;