SkiaRenderer: Add SkiaOutputSurface to allow SkiaRenderer to use SkDDL

This CL adds a new interface viz::SkiaOutputSurface which extends
viz::OutputSurface for SkiaRenderer to support compositing with SkDDL
(skia deferred display list). SkiaRenderer draws quads into a DDL SkCanvas,
and draw operations will be recorded into a DDL.
In OutputSurface::SwapBuffers(), a GPU task will be scheduled with
gpu::Schduler. The task will be executed on the GPU thread when all resource
sync tokes are satisfied. The task will play the DDL back on a GrContext
which is backed by a native platform GL context.

We have a goal to use SkiaRenderer everywhere, and remove GLRenderer and
Software Compositor. The new viz::SkiaOutputSurface interface and
viz::OutputSurface interface will be merged into one interface when DirectRenderer
subclasses are removed. The new interface is for making development
faster because when we change methods in viz::SkiaOutputSurface, we will not break
all other existing OutputSurface implementations.

Bug: 824382
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;master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2;luci.chromium.try:win_optional_gpu_tests_rel
Change-Id: I776a76dc8496d40f88950856867596f5c44f735f
Reviewed-on: https://chromium-review.googlesource.com/978366
Commit-Queue: Peng Huang <penghuang@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Reviewed-by: Robert Kroeger <rjkroege@chromium.org>
Cr-Commit-Position: refs/heads/master@{#553815}
14 files changed