From 8a9cee903b3d99232b6fe3dded8b68ca6dfc32a3 Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Thu, 18 Jul 2019 16:53:43 +0200 Subject: [PATCH] [dxvk] Use render pass copy for depth-stencil images if beneficial --- src/dxvk/dxvk_context.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/dxvk/dxvk_context.cpp b/src/dxvk/dxvk_context.cpp index fb00417a..f2bb59ab 100644 --- a/src/dxvk/dxvk_context.cpp +++ b/src/dxvk/dxvk_context.cpp @@ -941,8 +941,16 @@ namespace dxvk { VkOffset3D srcOffset, VkExtent3D extent) { this->spillRenderPass(); - - if (dstSubresource.aspectMask == srcSubresource.aspectMask) { + + bool useFb = dstSubresource.aspectMask != srcSubresource.aspectMask; + + if (m_device->perfHints().preferFbDepthStencilCopy) { + useFb |= (dstSubresource.aspectMask == (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT)) + && (dstImage->info().usage & VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT) + && (srcImage->info().usage & VK_IMAGE_USAGE_SAMPLED_BIT); + } + + if (!useFb) { this->copyImageHw( dstImage, dstSubresource, dstOffset, srcImage, srcSubresource, srcOffset,