cc: Optimize decode scheduling for checker-images

Desktop / Chromium - khushalsagar [chromium.org] - 21 April 2017 00:49 EDT

The CheckerImageTracker currently schedules image decodes for all checkered images as we schedule raster work for the dependent tiles. Once image decodes have been submitted to the tracker, they can not be cancelled and the order can not be changed. This means that as tile priorities change, the order in which images are decoded may not be aligned with the priority of the tiles which depend on them.

Instead use a queue for scheduling decode work in the tracker. Only one outstanding decode is pending with the decode service at a time, and the queue is re-build each time we schedule work for a new set of tiles. This requires plumbing through the checker-imaged tiles in the RasterWorkerQueue since they are now inter-leaved with tiles that actually need to be rasterized.

BUG=689184 CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel

Review-Url: https://codereview.chromium.org/2726343004 Cr-Commit-Position: refs/heads/master@{#466261}

3e256c2 cc: Optimize decode scheduling for checker-images.
cc/test/fake_layer_tree_host_impl.h | 2 +
cc/test/fake_layer_tree_host_impl_client.cc | 4 +
cc/test/fake_layer_tree_host_impl_client.h | 12 +-
cc/test/fake_recording_source.h | 4 +
cc/test/test_layer_tree_host_base.cc | 12 ++
cc/test/test_layer_tree_host_base.h | 1 +
cc/tiles/checker_image_tracker.cc | 92 +++++-----
cc/tiles/checker_image_tracker.h | 37 ++--
cc/tiles/checker_image_tracker_unittest.cc | 193 +++++++++++----------
cc/tiles/picture_layer_tiling.cc | 36 +++-
cc/tiles/picture_layer_tiling.h | 4 +
cc/tiles/prioritized_tile.cc | 7 +-
cc/tiles/prioritized_tile.h | 7 +-
cc/tiles/tile.h | 14 ++
cc/tiles/tile_draw_info.cc | 2 +-
cc/tiles/tile_draw_info.h | 15 +-
cc/tiles/tile_manager.cc | 171 +++++++++++++++---
cc/tiles/tile_manager.h | 31 +++-
cc/tiles/tile_manager_unittest.cc | 260 +++++++++++++++++++++++++++-
cc/tiles/tiling_set_raster_queue_all.cc | 17 +-
cc/tiles/tiling_set_raster_queue_all.h | 3 -
21 files changed, 731 insertions(+), 193 deletions(-)

Upstream: git.chromium.org


  • Share