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

Unified Diff: cc/resources/tile_manager.cc

Issue 863013004: cc: Split RasterTilePriorityQueue into required and all based on type. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: compile fix Created 5 years, 11 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
« no previous file with comments | « cc/resources/tile_manager.h ('k') | cc/resources/tile_manager_perftest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/resources/tile_manager.cc
diff --git a/cc/resources/tile_manager.cc b/cc/resources/tile_manager.cc
index 81ae8b5c9ee656486454580dacd4e726a8c1a9c7..cfdad9ce976598b476e5346c2e692ca137f6262c 100644
--- a/cc/resources/tile_manager.cc
+++ b/cc/resources/tile_manager.cc
@@ -360,11 +360,11 @@ void TileManager::PrepareTiles(
CleanUpReleasedTiles();
TileVector tiles_that_need_to_be_rasterized;
- RasterTilePriorityQueue raster_priority_queue;
- client_->BuildRasterQueue(&raster_priority_queue,
- global_state_.tree_priority,
- RasterTilePriorityQueue::Type::ALL);
- AssignGpuMemoryToTiles(&raster_priority_queue, scheduled_raster_task_limit_,
+ scoped_ptr<RasterTilePriorityQueue> raster_priority_queue(
+ client_->BuildRasterQueue(global_state_.tree_priority,
+ RasterTilePriorityQueue::Type::ALL));
+ AssignGpuMemoryToTiles(raster_priority_queue.get(),
+ scheduled_raster_task_limit_,
&tiles_that_need_to_be_rasterized);
// Schedule tile tasks.
@@ -411,12 +411,12 @@ void TileManager::SynchronouslyRasterizeTiles(
FreeResourcesForReleasedTiles();
CleanUpReleasedTiles();
- RasterTilePriorityQueue required_for_draw_queue;
- client_->BuildRasterQueue(&required_for_draw_queue,
- global_state_.tree_priority,
- RasterTilePriorityQueue::Type::REQUIRED_FOR_DRAW);
+ scoped_ptr<RasterTilePriorityQueue> required_for_draw_queue(
+ client_->BuildRasterQueue(
+ global_state_.tree_priority,
+ RasterTilePriorityQueue::Type::REQUIRED_FOR_DRAW));
TileVector tiles_that_need_to_be_rasterized;
- AssignGpuMemoryToTiles(&required_for_draw_queue,
+ AssignGpuMemoryToTiles(required_for_draw_queue.get(),
std::numeric_limits<size_t>::max(),
&tiles_that_need_to_be_rasterized);
@@ -433,15 +433,14 @@ void TileManager::SynchronouslyRasterizeTiles(
// assigned memory after reaching a steady memory state.
// TODO(hendrikw): Figure out why this would improve jank on some tests - See
// crbug.com/449288
- required_for_draw_queue.Reset();
- client_->BuildRasterQueue(&required_for_draw_queue,
- global_state_.tree_priority,
- RasterTilePriorityQueue::Type::REQUIRED_FOR_DRAW);
+ required_for_draw_queue = client_->BuildRasterQueue(
+ global_state_.tree_priority,
+ RasterTilePriorityQueue::Type::REQUIRED_FOR_DRAW);
// 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();
+ for (; !required_for_draw_queue->IsEmpty(); required_for_draw_queue->Pop()) {
+ Tile* tile = required_for_draw_queue->Top();
tile->draw_info().set_rasterize_on_demand();
client_->NotifyTileStateChanged(tile);
}
@@ -944,10 +943,11 @@ void TileManager::CheckIfMoreTilesNeedToBePrepared() {
// When OOM, keep re-assigning memory until we reach a steady state
// where top-priority tiles are initialized.
TileVector tiles_that_need_to_be_rasterized;
- RasterTilePriorityQueue raster_priority_queue;
- client_->BuildRasterQueue(&raster_priority_queue, global_state_.tree_priority,
- RasterTilePriorityQueue::Type::ALL);
- AssignGpuMemoryToTiles(&raster_priority_queue, scheduled_raster_task_limit_,
+ scoped_ptr<RasterTilePriorityQueue> raster_priority_queue(
+ client_->BuildRasterQueue(global_state_.tree_priority,
+ RasterTilePriorityQueue::Type::ALL));
+ AssignGpuMemoryToTiles(raster_priority_queue.get(),
+ scheduled_raster_task_limit_,
&tiles_that_need_to_be_rasterized);
// |tiles_that_need_to_be_rasterized| will be empty when we reach a
@@ -977,20 +977,20 @@ void TileManager::CheckIfMoreTilesNeedToBePrepared() {
// we used for AssignGpuMemoryToTiles, since the AssignGpuMemoryToTiles call
// could have evicted some tiles that would not be picked up by the old raster
// queue.
- RasterTilePriorityQueue required_for_activation_queue;
- client_->BuildRasterQueue(
- &required_for_activation_queue, global_state_.tree_priority,
- RasterTilePriorityQueue::Type::REQUIRED_FOR_ACTIVATION);
+ scoped_ptr<RasterTilePriorityQueue> required_for_activation_queue(
+ client_->BuildRasterQueue(
+ global_state_.tree_priority,
+ RasterTilePriorityQueue::Type::REQUIRED_FOR_ACTIVATION));
// 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)
+ if (!required_for_activation_queue->IsEmpty() && !allow_rasterize_on_demand)
return;
// 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();
+ for (; !required_for_activation_queue->IsEmpty();
+ required_for_activation_queue->Pop()) {
+ Tile* tile = required_for_activation_queue->Top();
tile->draw_info().set_rasterize_on_demand();
client_->NotifyTileStateChanged(tile);
}
« no previous file with comments | « cc/resources/tile_manager.h ('k') | cc/resources/tile_manager_perftest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698