From 7d05a99640e84156af921adaf2eb8ad6b880a5a9 Mon Sep 17 00:00:00 2001 From: Robin Kertels Date: Wed, 2 Oct 2024 21:07:54 +0200 Subject: [PATCH] [d3d9] Fix StretchRect fast-path resolve --- src/d3d9/d3d9_device.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/d3d9/d3d9_device.cpp b/src/d3d9/d3d9_device.cpp index d3aef532f..37a3eb1a0 100644 --- a/src/d3d9/d3d9_device.cpp +++ b/src/d3d9/d3d9_device.cpp @@ -1276,26 +1276,26 @@ namespace dxvk { } auto EmitResolveCS = [&](const Rc& resolveDst, bool intermediate) { + VkImageResolve region; + region.srcSubresource = blitInfo.srcSubresource; + region.srcOffset = intermediate ? VkOffset3D { 0, 0, 0 } : blitInfo.srcOffsets[0]; + region.dstSubresource = intermediate ? blitInfo.srcSubresource : blitInfo.dstSubresource; + region.dstOffset = intermediate ? VkOffset3D { 0, 0, 0 } : blitInfo.dstOffsets[0]; + region.extent = intermediate ? resolveDst->mipLevelExtent(blitInfo.srcSubresource.mipLevel) : srcCopyExtent; + EmitCs([ cDstImage = resolveDst, cSrcImage = srcImage, - cSubresource = intermediate ? blitInfo.srcSubresource : blitInfo.dstSubresource + cRegion = region ] (DxvkContext* ctx) { - VkImageResolve region; - region.srcSubresource = cSubresource; - region.srcOffset = VkOffset3D { 0, 0, 0 }; - region.dstSubresource = cSubresource; - region.dstOffset = VkOffset3D { 0, 0, 0 }; - region.extent = cDstImage->mipLevelExtent(cSubresource.mipLevel); - - if (cSubresource.aspectMask != (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT)) { + if (cRegion.srcSubresource.aspectMask != (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT)) { ctx->resolveImage( - cDstImage, cSrcImage, region, + cDstImage, cSrcImage, cRegion, VK_FORMAT_UNDEFINED); } else { ctx->resolveDepthStencilImage( - cDstImage, cSrcImage, region, + cDstImage, cSrcImage, cRegion, VK_RESOLVE_MODE_AVERAGE_BIT, VK_RESOLVE_MODE_SAMPLE_ZERO_BIT); }