Vulkan: readPixels improvement - use DynamicBuffer

Reintroduce the change that was previously reverted here:
https://chromium-review.googlesource.com/c/angle/angle/+/1064770

This includes a tentative fix the issue on Android that prompted the revert,
we need to call invalidate on the mapped memory range before we read it on
the host side.

Bug: angleproject:2480
Change-Id: Id637bafa2845628ae38483c6fc8e6d7f26ad2d3e
Reviewed-on: https://chromium-review.googlesource.com/1066229
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
diff --git a/src/libANGLE/renderer/vulkan/TextureVk.cpp b/src/libANGLE/renderer/vulkan/TextureVk.cpp
index 28b614a..05995fb 100644
--- a/src/libANGLE/renderer/vulkan/TextureVk.cpp
+++ b/src/libANGLE/renderer/vulkan/TextureVk.cpp
@@ -206,8 +206,8 @@
         ANGLE_TRY(context->getScratchBuffer(bufferSize, &memoryBuffer));
 
         // Read into the scratch buffer
-        ANGLE_TRY(ReadPixelsFromRenderTarget(context, sourceArea, params, renderTarget,
-                                             commandBuffer, memoryBuffer->data()));
+        ANGLE_TRY(ReadPixelsFromRenderTarget(context, sourceArea, params, mStagingBuffer,
+                                             renderTarget, commandBuffer, memoryBuffer->data()));
 
         // Load from scratch buffer to our pixel buffer
         loadFunction.loadFunction(sourceArea.width, sourceArea.height, 1, memoryBuffer->data(),
@@ -216,8 +216,8 @@
     else
     {
         // We read directly from the framebuffer into our pixel buffer.
-        ANGLE_TRY(ReadPixelsFromRenderTarget(context, sourceArea, params, renderTarget,
-                                             commandBuffer, stagingPointer));
+        ANGLE_TRY(ReadPixelsFromRenderTarget(context, sourceArea, params, mStagingBuffer,
+                                             renderTarget, commandBuffer, stagingPointer));
     }
 
     // 3- enqueue the destination image subresource update