mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-02-21 22:54:16 +01:00
[d3d9] Fix StretchRect fast-path resolve
This commit is contained in:
parent
4807af01ad
commit
7d05a99640
@ -1276,26 +1276,26 @@ namespace dxvk {
|
|||||||
}
|
}
|
||||||
|
|
||||||
auto EmitResolveCS = [&](const Rc<DxvkImage>& resolveDst, bool intermediate) {
|
auto EmitResolveCS = [&](const Rc<DxvkImage>& 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([
|
EmitCs([
|
||||||
cDstImage = resolveDst,
|
cDstImage = resolveDst,
|
||||||
cSrcImage = srcImage,
|
cSrcImage = srcImage,
|
||||||
cSubresource = intermediate ? blitInfo.srcSubresource : blitInfo.dstSubresource
|
cRegion = region
|
||||||
] (DxvkContext* ctx) {
|
] (DxvkContext* ctx) {
|
||||||
VkImageResolve region;
|
if (cRegion.srcSubresource.aspectMask != (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT)) {
|
||||||
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)) {
|
|
||||||
ctx->resolveImage(
|
ctx->resolveImage(
|
||||||
cDstImage, cSrcImage, region,
|
cDstImage, cSrcImage, cRegion,
|
||||||
VK_FORMAT_UNDEFINED);
|
VK_FORMAT_UNDEFINED);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
ctx->resolveDepthStencilImage(
|
ctx->resolveDepthStencilImage(
|
||||||
cDstImage, cSrcImage, region,
|
cDstImage, cSrcImage, cRegion,
|
||||||
VK_RESOLVE_MODE_AVERAGE_BIT,
|
VK_RESOLVE_MODE_AVERAGE_BIT,
|
||||||
VK_RESOLVE_MODE_SAMPLE_ZERO_BIT);
|
VK_RESOLVE_MODE_SAMPLE_ZERO_BIT);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user