Commit e99e40c995677a02d753185cde189a09aa9866b5

Lubosz Sarnecki 2022-10-11T12:27:18

FrameCapture: Implement shadow memory for coherent buffers. On certain devices like the Pixel 6 it is not possible to mprotect Vulkan allocated memory required for coherent buffer tracking. To overcome this limitation implement a shadow memory for coherent buffers when running FrameCapture that is exposed to the app and syncronized with the Vulkan memory and can be mprotected for coherent buffer tracking. Add a test to determine whether memory protection can be used directly or will require shadow memory. Run this test only on build configurations with assertions enabled. Determine the requirement of shadow memory through a deny list of device manufacturers and models, which is checked against ANGLE's SystemInfo. Add ANGLE_CAPTURE_FORCE_SHADOW environment setting and Android equivalent to force enable shadow memory. Test: angle_end2end_tests --gtest_filter="BufferStorageTestES3.*/ES3_Vulkan" Bug: angleproject:7402 Change-Id: I74b7930259d3bc1846ef96fffa782f8bc553b043 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3945018 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>