[cc-slimming] Bypass layers with all_tiles_done when BuildRasterQueue.
Instead of keeping track of a separate vector for PictureLayerImpls
that have tiles to raster, this is an alternative.
We still need to go through each layer, but can quickly bypass.
We drop the idea of a separate vector of layers because it is
very complicated (thus pragile and bug-prone) to track it.
Bug: 338977414
Change-Id: I35fcade7fad6c2a4133ca589ae93bd49a91f71d4
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5757982
Reviewed-by: Victor Miura <vmiura@chromium.org>
Auto-Submit: Zhenyao Mo <zmo@chromium.org>
Commit-Queue: Victor Miura <vmiura@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1336193}
diff --git a/cc/tiles/raster_tile_priority_queue_all.cc b/cc/tiles/raster_tile_priority_queue_all.cc
index 9683014b..cd2bc8bb 100644
--- a/cc/tiles/raster_tile_priority_queue_all.cc
+++ b/cc/tiles/raster_tile_priority_queue_all.cc
@@ -72,6 +72,9 @@
continue;
PictureLayerTilingSet* tiling_set = layer->picture_layer_tiling_set();
+ if (tiling_set->all_tiles_done()) {
+ continue;
+ }
bool prioritize_low_res = tree_priority == SMOOTHNESS_TAKES_PRIORITY;
std::unique_ptr<TilingSetRasterQueueAll> tiling_set_queue =
std::make_unique<TilingSetRasterQueueAll>(
diff --git a/cc/tiles/raster_tile_priority_queue_required.cc b/cc/tiles/raster_tile_priority_queue_required.cc
index d6f20fe..d447a95a2 100644
--- a/cc/tiles/raster_tile_priority_queue_required.cc
+++ b/cc/tiles/raster_tile_priority_queue_required.cc
@@ -20,9 +20,13 @@
if (!layer->HasValidTilePriorities())
continue;
+ PictureLayerTilingSet* tiling_set = layer->picture_layer_tiling_set();
+ if (tiling_set->all_tiles_done()) {
+ continue;
+ }
std::unique_ptr<TilingSetRasterQueueRequired> tiling_set_queue(
new TilingSetRasterQueueRequired(
- layer->picture_layer_tiling_set(),
+ tiling_set,
RasterTilePriorityQueueRequired::Type::REQUIRED_FOR_ACTIVATION));
if (!tiling_set_queue->IsEmpty())
queues->push_back(std::move(tiling_set_queue));
@@ -55,9 +59,12 @@
if (!layer->HasValidTilePriorities())
continue;
+ PictureLayerTilingSet* tiling_set = layer->picture_layer_tiling_set();
+ if (tiling_set->all_tiles_done()) {
+ continue;
+ }
std::unique_ptr<TilingSetRasterQueueRequired> tiling_set_queue(
- new TilingSetRasterQueueRequired(layer->picture_layer_tiling_set(),
- Type::REQUIRED_FOR_DRAW));
+ new TilingSetRasterQueueRequired(tiling_set, Type::REQUIRED_FOR_DRAW));
if (!tiling_set_queue->IsEmpty())
tiling_set_queues_.push_back(std::move(tiling_set_queue));
}