De-jank window resizing in MacViews (part 2).

Part 1: https://chromium-review.googlesource.com/c/chromium/src/+/1066304

This change picks up from the above CL and adds hooks into the GPU process to
coordinate its CATransaction with the browser's on request (e.g. for resize).

New GPU IPCs let the browser process, via CATransactionObserver, begin a
transaction and then end it while in the post commit phase of its
CATransaction. This makes compositor changes display atomically with changes in
the browser process. It also fixes the window frame jank described in the above
CL when the GPU process assigns new IOSurfaces as CALayer contents.

I think this is because the two CATransactions happen as one from the window
server's point of view: in a test app, committing the two transactions like
this significantly reduced the time to commit.

Bug: 837660
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel
Change-Id: Ib5b2a3a3cae76640cc9872b7f265cb3bd13143a4
Reviewed-on: https://chromium-review.googlesource.com/1077047
Reviewed-by: Robert Sesek <rsesek@chromium.org>
Reviewed-by: Avi Drissman <avi@chromium.org>
Reviewed-by: ccameron <ccameron@chromium.org>
Commit-Queue: Sidney San Martín <sdy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#565687}
14 files changed