Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1533)

Unified Diff: cc/resources/picture_layer_tiling.cc

Issue 690063002: cc: Do not ignore layers without valid priorities during eviction. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: cc/resources/picture_layer_tiling.cc
diff --git a/cc/resources/picture_layer_tiling.cc b/cc/resources/picture_layer_tiling.cc
index 61b0362ee44c2b9cd073fe86db6e7c238378c69f..c42ec7a1e7f9ed3b810fc17bb4a83e22a4965449 100644
--- a/cc/resources/picture_layer_tiling.cc
+++ b/cc/resources/picture_layer_tiling.cc
@@ -742,22 +742,32 @@ bool PictureLayerTiling::IsTileRequiredForActivation(const Tile* tile) const {
return true;
}
-void PictureLayerTiling::UpdateTileAndTwinPriority(Tile* tile) const {
- UpdateTilePriority(tile);
+void PictureLayerTiling::UpdateTileAndTwinPriority(
+ Tile* tile,
+ bool use_tile_priority_rects,
+ bool use_twin_tile_priority_rects) const {
+ if (use_tile_priority_rects) {
vmpstr 2014/10/31 15:35:49 How about we add a client_->GetMaxBinForTilePriori
USE eero AT chromium.org 2014/11/04 17:47:57 Done.
+ UpdateTilePriority(tile);
+ } else {
+ WhichTree tree = client_->GetTree();
+ tile->SetPriority(tree, TilePriority());
+ tile->set_is_occluded(tree, false);
+ if (tree == PENDING_TREE)
+ tile->set_required_for_activation(false);
+ }
const PictureLayerTiling* twin_tiling =
client_->GetPendingOrActiveTwinTiling(this);
- if (!tile->is_shared() || !twin_tiling) {
+ if (use_twin_tile_priority_rects && tile->is_shared() && twin_tiling) {
+ twin_tiling->UpdateTilePriority(tile);
+ } else {
WhichTree tree = client_->GetTree();
WhichTree twin_tree = tree == ACTIVE_TREE ? PENDING_TREE : ACTIVE_TREE;
tile->SetPriority(twin_tree, TilePriority());
tile->set_is_occluded(twin_tree, false);
if (twin_tree == PENDING_TREE)
tile->set_required_for_activation(false);
- return;
}
-
- twin_tiling->UpdateTilePriority(tile);
}
void PictureLayerTiling::UpdateTilePriority(Tile* tile) const {
@@ -975,7 +985,9 @@ gfx::Rect PictureLayerTiling::ExpandRectEquallyToAreaBoundedBy(
}
void PictureLayerTiling::UpdateEvictionCacheIfNeeded(
- TreePriority tree_priority) {
+ TreePriority tree_priority,
+ bool use_tile_priority_rects,
+ bool use_twin_tile_priority_rects) {
if (eviction_tiles_cache_valid_ &&
eviction_cache_tree_priority_ == tree_priority)
return;
@@ -989,7 +1001,8 @@ void PictureLayerTiling::UpdateEvictionCacheIfNeeded(
for (TileMap::iterator it = tiles_.begin(); it != tiles_.end(); ++it) {
Tile* tile = it->second.get();
- UpdateTileAndTwinPriority(tile);
+ UpdateTileAndTwinPriority(
+ tile, use_tile_priority_rects, use_twin_tile_priority_rects);
const TilePriority& priority =
tile->priority_for_tree_priority(tree_priority);
switch (priority.priority_bin) {
@@ -1040,8 +1053,11 @@ void PictureLayerTiling::UpdateEvictionCacheIfNeeded(
const std::vector<Tile*>* PictureLayerTiling::GetEvictionTiles(
TreePriority tree_priority,
- EvictionCategory category) {
- UpdateEvictionCacheIfNeeded(tree_priority);
+ EvictionCategory category,
+ bool use_tile_priority_rects,
+ bool use_twin_tile_priority_rects) {
+ UpdateEvictionCacheIfNeeded(
+ tree_priority, use_tile_priority_rects, use_twin_tile_priority_rects);
switch (category) {
case EVENTUALLY:
return &eviction_tiles_eventually_;
@@ -1085,7 +1101,7 @@ PictureLayerTiling::TilingRasterTileIterator::TilingRasterTileIterator(
++(*this);
return;
}
- tiling_->UpdateTileAndTwinPriority(current_tile_);
+ tiling_->UpdateTileAndTwinPriority(current_tile_, true, true);
}
PictureLayerTiling::TilingRasterTileIterator::~TilingRasterTileIterator() {}
@@ -1148,7 +1164,7 @@ void PictureLayerTiling::TilingRasterTileIterator::AdvancePhase() {
} while (!spiral_iterator_);
if (current_tile_)
- tiling_->UpdateTileAndTwinPriority(current_tile_);
+ tiling_->UpdateTileAndTwinPriority(current_tile_, true, true);
}
PictureLayerTiling::TilingRasterTileIterator&
@@ -1188,7 +1204,7 @@ operator++() {
}
if (current_tile_)
- tiling_->UpdateTileAndTwinPriority(current_tile_);
+ tiling_->UpdateTileAndTwinPriority(current_tile_, true, true);
return *this;
}
@@ -1199,8 +1215,13 @@ PictureLayerTiling::TilingEvictionTileIterator::TilingEvictionTileIterator()
PictureLayerTiling::TilingEvictionTileIterator::TilingEvictionTileIterator(
PictureLayerTiling* tiling,
TreePriority tree_priority,
- EvictionCategory category)
- : eviction_tiles_(tiling->GetEvictionTiles(tree_priority, category)),
+ EvictionCategory category,
+ bool use_tile_priority_rects,
+ bool use_twin_tile_priority_rects)
+ : eviction_tiles_(tiling->GetEvictionTiles(tree_priority,
+ category,
+ use_tile_priority_rects,
+ use_twin_tile_priority_rects)),
// Note: initializing to "0 - 1" works as overflow is well defined for
// unsigned integers.
current_eviction_tiles_index_(static_cast<size_t>(0) - 1) {

Powered by Google App Engine
This is Rietveld 408576698