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