Add Z mirroring support for image blit.
Bug: b/157926124
Change-Id: Iba985aa82cbda2d2d9778909d47abda2f0a7322b
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/45489
Presubmit-Ready: Alexis Hétu <sugoi@google.com>
Kokoro-Result: kokoro <noreply+kokoro@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
Tested-by: Ari Suonpää <ari.suonpaa@siru.fi>
diff --git a/src/Device/Blitter.cpp b/src/Device/Blitter.cpp
index 77ad72f..3b761d4 100644
--- a/src/Device/Blitter.cpp
+++ b/src/Device/Blitter.cpp
@@ -1853,6 +1853,12 @@
std::swap(region.dstOffsets[0].y, region.dstOffsets[1].y);
}
+ if(region.dstOffsets[0].z > region.dstOffsets[1].z)
+ {
+ std::swap(region.srcOffsets[0].z, region.srcOffsets[1].z);
+ std::swap(region.dstOffsets[0].z, region.dstOffsets[1].z);
+ }
+
VkImageAspectFlagBits srcAspect = static_cast<VkImageAspectFlagBits>(region.srcSubresource.aspectMask);
VkImageAspectFlagBits dstAspect = static_cast<VkImageAspectFlagBits>(region.dstSubresource.aspectMask);
VkExtent3D srcExtent = src->getMipLevelExtent(srcAspect, region.srcSubresource.mipLevel);