Index: cc/resources/tile_manager.cc |
diff --git a/cc/resources/tile_manager.cc b/cc/resources/tile_manager.cc |
index 00ae3da6e92fed3b9a96a0d8e5b781df8541b4d8..94b6332a9aa4229bcfaa1b90831beba679a39416 100644 |
--- a/cc/resources/tile_manager.cc |
+++ b/cc/resources/tile_manager.cc |
@@ -439,11 +439,11 @@ void TileManager::SynchronouslyRasterizeTiles( |
global_state_.tree_priority, |
RasterTilePriorityQueue::Type::REQUIRED_FOR_DRAW); |
- // Change to OOM mode for any tiles that have not been been assigned memory. |
- // This ensures that we draw even when OOM. |
+ // Use on-demand raster for any tiles that have not been been assigned |
+ // memory. This ensures that we draw even when OOM. |
for (; !required_for_draw_queue->IsEmpty(); required_for_draw_queue->Pop()) { |
Tile* tile = required_for_draw_queue->Top(); |
- tile->draw_info().set_oom(); |
+ tile->draw_info().set_rasterize_on_demand(); |
client_->NotifyTileStateChanged(tile); |
} |
@@ -604,8 +604,8 @@ void TileManager::AssignGpuMemoryToTiles( |
TileDrawInfo& draw_info = tile->draw_info(); |
tile->scheduled_priority_ = schedule_priority++; |
- DCHECK_IMPLIES(draw_info.mode() != TileDrawInfo::OOM_MODE, |
- !draw_info.IsReadyToDraw()); |
+ DCHECK(draw_info.mode() == TileDrawInfo::PICTURE_PILE_MODE || |
+ !draw_info.IsReadyToDraw()); |
// If the tile already has a raster_task, then the memory used by it is |
// already accounted for in memory_usage. Otherwise, we'll have to acquire |
@@ -973,30 +973,31 @@ void TileManager::CheckIfMoreTilesNeedToBePrepared() { |
// Likewise if we don't allow any tiles (as is the case when we're |
// invisible), if we have tiles that aren't ready, then we shouldn't |
// activate as activation can cause checkerboards. |
- bool wait_for_all_required_tiles = |
- global_state_.tree_priority == SMOOTHNESS_TAKES_PRIORITY || |
- global_state_.memory_limit_policy == ALLOW_NOTHING; |
- |
- // Mark any required-for-activation tiles that have not been been assigned |
- // memory after reaching a steady memory state as OOM. This ensures that we |
- // activate even when OOM. Note that we can't reuse the queue we used for |
- // AssignGpuMemoryToTiles, since the AssignGpuMemoryToTiles call could have |
- // evicted some tiles that would not be picked up by the old raster queue. |
+ bool allow_rasterize_on_demand = |
+ global_state_.tree_priority != SMOOTHNESS_TAKES_PRIORITY && |
+ global_state_.memory_limit_policy != ALLOW_NOTHING; |
+ |
+ // Use on-demand raster for any required-for-activation tiles that have |
+ // not been been assigned memory after reaching a steady memory state. This |
+ // ensures that we activate even when OOM. Note that we can't reuse the queue |
+ // we used for AssignGpuMemoryToTiles, since the AssignGpuMemoryToTiles call |
+ // could have evicted some tiles that would not be picked up by the old raster |
+ // queue. |
scoped_ptr<RasterTilePriorityQueue> required_for_activation_queue( |
client_->BuildRasterQueue( |
global_state_.tree_priority, |
RasterTilePriorityQueue::Type::REQUIRED_FOR_ACTIVATION)); |
- // If we have tiles left to raster for activation, and we don't allow |
- // activating without them, then skip activation and return early. |
- if (!required_for_activation_queue->IsEmpty() && wait_for_all_required_tiles) |
+ // If we have tiles to mark as rasterize on demand, but we don't allow |
+ // rasterize on demand, then skip activation and return early. |
+ if (!required_for_activation_queue->IsEmpty() && !allow_rasterize_on_demand) |
return; |
- // Mark required tiles as OOM so that we can activate without them. |
+ // Mark required tiles as rasterize on demand. |
for (; !required_for_activation_queue->IsEmpty(); |
required_for_activation_queue->Pop()) { |
Tile* tile = required_for_activation_queue->Top(); |
- tile->draw_info().set_oom(); |
+ tile->draw_info().set_rasterize_on_demand(); |
client_->NotifyTileStateChanged(tile); |
} |