[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));
   }