1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2025-04-08 08:53:59 +02:00

[d3d9] Correct resolve offset regions for intermediate StretchRect resolves

We don't want to use the dst info for these, given the blit will do that.

Partially fixes 
This commit is contained in:
Joshua Ashton 2020-05-22 04:04:52 +01:00 committed by Philip Rebohle
parent e2ad3b1b20
commit 8e7df31878

@ -943,12 +943,12 @@ namespace dxvk {
return D3DERR_INVALIDCALL;
}
auto EmitResolveCS = [&](const Rc<DxvkImage>& resolveDst) {
auto EmitResolveCS = [&](const Rc<DxvkImage>& resolveDst, bool intermediate) {
VkImageResolve region;
region.srcSubresource = blitInfo.srcSubresource;
region.srcOffset = blitInfo.srcOffsets[0];
region.dstSubresource = blitInfo.dstSubresource;
region.dstOffset = blitInfo.dstOffsets[0];
region.dstSubresource = intermediate ? blitInfo.srcSubresource : blitInfo.dstSubresource;
region.dstOffset = intermediate ? blitInfo.srcOffsets[0] : blitInfo.dstOffsets[0];
region.extent = srcCopyExtent;
EmitCs([
@ -972,7 +972,7 @@ namespace dxvk {
if (fastPath) {
if (needsResolve) {
EmitResolveCS(dstImage);
EmitResolveCS(dstImage, false);
} else {
EmitCs([
cDstImage = dstImage,
@ -994,7 +994,7 @@ namespace dxvk {
if (needsResolve) {
auto resolveSrc = srcTextureInfo->GetResolveImage();
EmitResolveCS(resolveSrc);
EmitResolveCS(resolveSrc, true);
srcImage = resolveSrc;
}