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