Vulkan: offscreen perftests: use two FBOs and call glFlush every frame For offscreen variant of perf tests, we blit from offscreen to onscreen for every frame and then every N frames we call swap. Right now we never call glFlush. This causes test accumulate many frames rendering without a flush, which changes the behavior. For example, gfxbench does issue glFlush for every frame. This CL adds glFlush call for every frame when swap is not called. Also ARM native GLES driver and ANGLE skip glFlush call if it is issued within the same FBO. For some traces that does not use any FBO, there is no frame boundary for drivers to detect, versus for onscreen there is actual frame boundary. To solve this mismatch problem, this CL also uses two offscreen FBOs and ping pong between them so that it will still have the frame boundary but not goes to screen. This allows drivers that try to detect frame boundary still function properly. Bug: b/184766477 Change-Id: I23edda66fdf391930afd3f6b1d955b41ec6ad019 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2861844 Commit-Queue: Charlie Lao <cclao@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>