Vulkan: Support inverted blit for depth/stencil.

Depth/stencil formats are packed tightly when reading back Images with
vkCmdCopyImageToBuffer. Same for the reverse. Thus we need to take this
into account when doing our blitWithReadback implementation.

This splits the depth/stencil blit into two separate steps. Fixes all
the remaining blit failures in BlitFramebufferANGLETest.

Bug: angleproject:2673
Change-Id: Ie9f43f782a82b5a0746d00122b24f81088d57c4c
Reviewed-on: https://chromium-review.googlesource.com/1140740
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
diff --git a/src/libANGLE/renderer/renderer_utils.cpp b/src/libANGLE/renderer/renderer_utils.cpp
index 7290cb6..5b2679c 100644
--- a/src/libANGLE/renderer/renderer_utils.cpp
+++ b/src/libANGLE/renderer/renderer_utils.cpp
@@ -236,8 +236,9 @@
     // Maximum size of any Color<T> type used.
     uint8_t temp[16];
     static_assert(sizeof(temp) >= sizeof(gl::ColorF) && sizeof(temp) >= sizeof(gl::ColorUI) &&
-                      sizeof(temp) >= sizeof(gl::ColorI),
-                  "Unexpected size of gl::Color struct.");
+                      sizeof(temp) >= sizeof(gl::ColorI) &&
+                      sizeof(temp) >= sizeof(angle::DepthStencil),
+                  "Unexpected size of pixel struct.");
 
     ColorReadFunction colorReadFunction = sourceFormat.colorReadFunction;
     ASSERT(colorReadFunction != nullptr);