cc: Call modify tile priorities once per UpdateTiles/DidBecomeActive.
Currently, we call DidModifyTilePriorities for every layer that updates
tiles or activates. This patch reduces the number of these calls.
R=danakj
Review URL: https://codereview.chromium.org/820813002
Cr-Commit-Position: refs/heads/master@{#309728}
diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc
index 703c37b4..9a76ad8 100644
--- a/cc/trees/layer_tree_impl.cc
+++ b/cc/trees/layer_tree_impl.cc
@@ -560,6 +560,7 @@
typedef LayerIterator<LayerImpl> LayerIteratorType;
LayerIteratorType end = LayerIteratorType::End(&render_surface_layer_list_);
size_t layers_updated_count = 0;
+ bool tile_priorities_updated = false;
for (LayerIteratorType it =
LayerIteratorType::Begin(&render_surface_layer_list_);
it != end;
@@ -574,8 +575,8 @@
: Occlusion();
if (it.represents_itself()) {
- layer->UpdateTiles(occlusion_in_content_space,
- resourceless_software_draw);
+ tile_priorities_updated |= layer->UpdateTiles(
+ occlusion_in_content_space, resourceless_software_draw);
++layers_updated_count;
}
@@ -586,13 +587,14 @@
}
if (layer->mask_layer()) {
- layer->mask_layer()->UpdateTiles(occlusion_in_content_space,
- resourceless_software_draw);
+ tile_priorities_updated |= layer->mask_layer()->UpdateTiles(
+ occlusion_in_content_space, resourceless_software_draw);
++layers_updated_count;
}
if (layer->replica_layer() && layer->replica_layer()->mask_layer()) {
- layer->replica_layer()->mask_layer()->UpdateTiles(
- occlusion_in_content_space, resourceless_software_draw);
+ tile_priorities_updated |=
+ layer->replica_layer()->mask_layer()->UpdateTiles(
+ occlusion_in_content_space, resourceless_software_draw);
++layers_updated_count;
}
@@ -600,6 +602,9 @@
occlusion_tracker->LeaveLayer(it);
}
+ if (tile_priorities_updated)
+ DidModifyTilePriorities();
+
TRACE_EVENT_END1("cc", "LayerTreeImpl::UpdateTilePriorities",
"layers_updated_count", layers_updated_count);
}