| Index: cc/resources/picture_layer_tiling.cc
|
| diff --git a/cc/resources/picture_layer_tiling.cc b/cc/resources/picture_layer_tiling.cc
|
| index 33e9038d4a2f30bff6bd3bad17bd1ece0286074a..deaee6a2d94e52e8a405a89a61d81985f9d2a8ff 100644
|
| --- a/cc/resources/picture_layer_tiling.cc
|
| +++ b/cc/resources/picture_layer_tiling.cc
|
| @@ -467,7 +467,10 @@ void PictureLayerTiling::UpdateTilePriorities(
|
| current_eventually_rect_ = eventually_rect;
|
| eviction_tiles_cache_valid_ = false;
|
|
|
| - TilePriority now_priority(resolution_, TilePriority::NOW, 0);
|
| + bool occluded = true;
|
| + TilePriority now_priority(resolution_, !occluded, TilePriority::NOW, 0);
|
| + TilePriority now_and_occluded_priority(
|
| + resolution_, occluded, TilePriority::NOW, 0);
|
| float content_to_screen_scale =
|
| 1.0f / (contents_scale_ * layer_contents_scale);
|
|
|
| @@ -482,9 +485,7 @@ void PictureLayerTiling::UpdateTilePriorities(
|
| continue;
|
| Tile* tile = find->second.get();
|
|
|
| - tile->SetPriority(tree, now_priority);
|
| -
|
| - // Set whether tile is occluded or not.
|
| + // Determine whether tile is occluded or not.
|
| bool is_occluded = false;
|
| if (occlusion_tracker) {
|
| gfx::Rect tile_query_rect = ScaleToEnclosingRect(
|
| @@ -495,7 +496,12 @@ void PictureLayerTiling::UpdateTilePriorities(
|
| is_occluded = occlusion_tracker->Occluded(
|
| render_target, tile_query_rect, draw_transform);
|
| }
|
| - tile->set_is_occluded(is_occluded);
|
| +
|
| + if (is_occluded) {
|
| + tile->SetPriority(tree, now_and_occluded_priority);
|
| + } else {
|
| + tile->SetPriority(tree, now_priority);
|
| + }
|
| }
|
|
|
| // Assign soon priority to skewport tiles.
|
| @@ -515,7 +521,8 @@ void PictureLayerTiling::UpdateTilePriorities(
|
| visible_rect_in_content_space.ManhattanInternalDistance(tile_bounds) *
|
| content_to_screen_scale;
|
|
|
| - TilePriority priority(resolution_, TilePriority::SOON, distance_to_visible);
|
| + TilePriority priority(
|
| + resolution_, !occluded, TilePriority::SOON, distance_to_visible);
|
| tile->SetPriority(tree, priority);
|
| }
|
|
|
| @@ -536,7 +543,7 @@ void PictureLayerTiling::UpdateTilePriorities(
|
| visible_rect_in_content_space.ManhattanInternalDistance(tile_bounds) *
|
| content_to_screen_scale;
|
| TilePriority priority(
|
| - resolution_, TilePriority::EVENTUALLY, distance_to_visible);
|
| + resolution_, !occluded, TilePriority::EVENTUALLY, distance_to_visible);
|
| tile->SetPriority(tree, priority);
|
| }
|
|
|
| @@ -554,6 +561,7 @@ void PictureLayerTiling::UpdateTilePriorities(
|
| Tile* tile = find->second.get();
|
|
|
| TilePriority priority(resolution_,
|
| + !occluded,
|
| TilePriority::SOON,
|
| tile->priority(tree).distance_to_visible);
|
| tile->SetPriority(tree, priority);
|
|
|