GpuFence implementation

Implement a command buffer interface for native file descriptor backed
cross-context GpuFence objects. See CHROMIUM_gpu_fence.txt for the GLES
API description and docs/design/gpu_synchronization.md for background
information including usage examples.

gl::GLFenceAndroidNativeSyncPoint - low-level wrapper for underlying GL
calls.

gfx::GpuFenceHandle - IPC-transportable wrapper for the sync file
descriptor.

gfx::GpuFence aka ClientGpuFence - owning container for a GpuFenceHandle,
and convertible to/from a ClientGpuFence for use with GL calls.

gpu::gles2::GpuFenceManager tracks GpuFenceEntry objects by client-assigned
ID number. Each entry stores a gl::GLFence as currently implemented
by the gl::GLFenceAndroidNativeSyncPoint subclass.

BUG=761432

Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: Ibae5c377528db9a9382b64a2648ac56a5a0f53f6
Reviewed-on: https://chromium-review.googlesource.com/680135
Commit-Queue: Klaus Weidner <klausw@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: David Reveman <reveman@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#523001}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: e66cc7d91e9d2f1e14a815d6393a881c2b6cf71c
2 files changed