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);