1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2025-03-02 04:29:14 +01: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 #1637
This commit is contained in:
Joshua Ashton 2020-05-22 04:04:52 +01:00 committed by Philip Rebohle
parent e2ad3b1b20
commit 8e7df31878

View File

@ -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;
}