Chromium Code Reviews| 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) { |