Index: cc/tiles/tile_manager.cc |
diff --git a/cc/tiles/tile_manager.cc b/cc/tiles/tile_manager.cc |
index 69dee3173b53dad1ebde8f0cb2c247f0a4814e55..aab3047b3343be0aa2a889f2258d490f2dae0a54 100644 |
--- a/cc/tiles/tile_manager.cc |
+++ b/cc/tiles/tile_manager.cc |
@@ -347,9 +347,8 @@ void TileManager::FinishTasksAndCleanUp() { |
// uninitialized resources. |
tile_task_manager_->Shutdown(); |
- raster_buffer_provider_->Shutdown(); |
- |
- // Now that all tasks have been finished, we can clear any |orphan_tasks_|. |
+ // Now that all tasks have been finished, we can clear any |
+ // |orphan_tasks_|. |
orphan_tasks_.clear(); |
tile_task_manager_->CheckForCompletedTasks(); |
@@ -371,7 +370,6 @@ void TileManager::FinishTasksAndCleanUp() { |
void TileManager::SetResources(ResourcePool* resource_pool, |
ImageDecodeController* image_decode_controller, |
TileTaskManager* tile_task_manager, |
- RasterBufferProvider* raster_buffer_provider, |
size_t scheduled_raster_task_limit, |
bool use_gpu_rasterization) { |
DCHECK(!tile_task_manager_); |
@@ -382,7 +380,6 @@ void TileManager::SetResources(ResourcePool* resource_pool, |
resource_pool_ = resource_pool; |
image_decode_controller_ = image_decode_controller; |
tile_task_manager_ = tile_task_manager; |
- raster_buffer_provider_ = raster_buffer_provider; |
} |
void TileManager::Release(Tile* tile) { |
@@ -881,27 +878,6 @@ void TileManager::ScheduleTasks( |
// below, so we do a swap instead of a move. |
locked_images_.swap(new_locked_images); |
- // We must reduce the amount of unused resources before calling |
- // ScheduleTasks to prevent usage from rising above limits. |
- resource_pool_->ReduceResourceUsage(); |
- image_decode_controller_->ReduceCacheUsage(); |
- |
- // Synchronize worker with compositor. This can fail for GPU/one-copy if the |
- // GL context is lost in which case it doesn't make sense to schedule tasks. |
- if (!raster_buffer_provider_->OrderingBarrier()) { |
- // Cancel and complete tasks to cleanup resources properly. |
- for (auto& node : graph_.nodes) { |
- TileTask* task = static_cast<TileTask*>(node.task); |
- task->state().DidCancel(); |
- task->OnTaskCompleted(); |
- task->DidComplete(); |
- } |
- graph_.Reset(); |
- required_for_activate_count = 0; |
- required_for_draw_count = 0; |
- all_count = 0; |
- } |
- |
// Insert nodes for our task completion tasks. We enqueue these using |
// NONCONCURRENT_FOREGROUND category this is the highest prioirty category and |
// we'd like to run these tasks as soon as possible. |
@@ -916,6 +892,11 @@ void TileManager::ScheduleTasks( |
TASK_CATEGORY_NONCONCURRENT_FOREGROUND, |
kAllDoneTaskPriority, all_count); |
+ // We must reduce the amount of unused resoruces before calling |
+ // ScheduleTasks to prevent usage from rising above limits. |
+ resource_pool_->ReduceResourceUsage(); |
+ image_decode_controller_->ReduceCacheUsage(); |
+ |
// Schedule running of |raster_queue_|. This replaces any previously |
// scheduled tasks and effectively cancels all tasks not present |
// in |raster_queue_|. |
@@ -993,7 +974,7 @@ scoped_refptr<TileTask> TileManager::CreateRasterTask( |
bool supports_concurrent_execution = !use_gpu_rasterization_; |
std::unique_ptr<RasterBuffer> raster_buffer = |
- raster_buffer_provider_->AcquireBufferForRaster( |
+ tile_task_manager_->GetRasterBufferProvider()->AcquireBufferForRaster( |
resource, resource_content_id, tile->invalidated_id()); |
return make_scoped_refptr(new RasterTaskImpl( |
this, tile, resource, prioritized_tile.raster_source(), playback_settings, |
@@ -1008,7 +989,8 @@ void TileManager::OnRasterTaskCompleted( |
bool was_canceled) { |
DCHECK(tile); |
DCHECK(tiles_.find(tile->id()) != tiles_.end()); |
- raster_buffer_provider_->ReleaseBufferForRaster(std::move(raster_buffer)); |
+ tile_task_manager_->GetRasterBufferProvider()->ReleaseBufferForRaster( |
+ std::move(raster_buffer)); |
TileDrawInfo& draw_info = tile->draw_info(); |
DCHECK(tile->raster_task_.get()); |
@@ -1064,11 +1046,6 @@ void TileManager::SetTileTaskManagerForTesting( |
tile_task_manager_ = tile_task_manager; |
} |
-void TileManager::SetRasterBufferProviderForTesting( |
- RasterBufferProvider* raster_buffer_provider) { |
- raster_buffer_provider_ = raster_buffer_provider; |
-} |
- |
bool TileManager::AreRequiredTilesReadyToDraw( |
RasterTilePriorityQueue::Type type) const { |
std::unique_ptr<RasterTilePriorityQueue> raster_priority_queue( |
@@ -1238,12 +1215,13 @@ bool TileManager::MarkTilesOutOfMemory( |
} |
ResourceFormat TileManager::DetermineResourceFormat(const Tile* tile) const { |
- return raster_buffer_provider_->GetResourceFormat(!tile->is_opaque()); |
+ return tile_task_manager_->GetRasterBufferProvider()->GetResourceFormat( |
+ !tile->is_opaque()); |
} |
bool TileManager::DetermineResourceRequiresSwizzle(const Tile* tile) const { |
- return raster_buffer_provider_->GetResourceRequiresSwizzle( |
- !tile->is_opaque()); |
+ return tile_task_manager_->GetRasterBufferProvider() |
+ ->GetResourceRequiresSwizzle(!tile->is_opaque()); |
} |
std::unique_ptr<base::trace_event::ConvertableToTraceFormat> |