Index: cc/tiles/tile_manager.cc |
diff --git a/cc/tiles/tile_manager.cc b/cc/tiles/tile_manager.cc |
index 27a709fb9c3cf34ee30067fab94acdf61ecc1a5a..02e00c35ae69fa3870f82112e37e2b8e1369a423 100644 |
--- a/cc/tiles/tile_manager.cc |
+++ b/cc/tiles/tile_manager.cc |
@@ -344,8 +344,9 @@ void TileManager::FinishTasksAndCleanUp() { |
// uninitialized resources. |
tile_task_manager_->Shutdown(); |
- // Now that all tasks have been finished, we can clear any |
- // |orphan_tasks_|. |
+ raster_buffer_provider_->Shutdown(); |
+ |
+ // Now that all tasks have been finished, we can clear any |orphan_tasks_|. |
orphan_tasks_.clear(); |
tile_task_manager_->CheckForCompletedTasks(); |
@@ -363,6 +364,7 @@ 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_); |
@@ -373,6 +375,7 @@ 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) { |
@@ -835,6 +838,9 @@ void TileManager::ScheduleTasks( |
resource_pool_->ReduceResourceUsage(); |
image_decode_controller_->ReduceCacheUsage(); |
+ // Synchronize worker with compositor. |
+ raster_buffer_provider_->OrderingBarrier(); |
+ |
// Schedule running of |raster_queue_|. This replaces any previously |
// scheduled tasks and effectively cancels all tasks not present |
// in |raster_queue_|. |
@@ -912,7 +918,7 @@ scoped_refptr<TileTask> TileManager::CreateRasterTask( |
bool supports_concurrent_execution = !use_gpu_rasterization_; |
std::unique_ptr<RasterBuffer> raster_buffer = |
- tile_task_manager_->GetRasterBufferProvider()->AcquireBufferForRaster( |
+ raster_buffer_provider_->AcquireBufferForRaster( |
resource, resource_content_id, tile->invalidated_id()); |
return make_scoped_refptr(new RasterTaskImpl( |
this, tile, resource, prioritized_tile.raster_source(), playback_settings, |
@@ -927,8 +933,7 @@ void TileManager::OnRasterTaskCompleted( |
bool was_canceled) { |
DCHECK(tile); |
DCHECK(tiles_.find(tile->id()) != tiles_.end()); |
- tile_task_manager_->GetRasterBufferProvider()->ReleaseBufferForRaster( |
- std::move(raster_buffer)); |
+ raster_buffer_provider_->ReleaseBufferForRaster(std::move(raster_buffer)); |
TileDrawInfo& draw_info = tile->draw_info(); |
DCHECK(tile->raster_task_.get()); |
@@ -984,6 +989,11 @@ 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( |
@@ -1146,13 +1156,12 @@ bool TileManager::MarkTilesOutOfMemory( |
} |
ResourceFormat TileManager::DetermineResourceFormat(const Tile* tile) const { |
- return tile_task_manager_->GetRasterBufferProvider()->GetResourceFormat( |
- !tile->is_opaque()); |
+ return raster_buffer_provider_->GetResourceFormat(!tile->is_opaque()); |
} |
bool TileManager::DetermineResourceRequiresSwizzle(const Tile* tile) const { |
- return tile_task_manager_->GetRasterBufferProvider() |
- ->GetResourceRequiresSwizzle(!tile->is_opaque()); |
+ return raster_buffer_provider_->GetResourceRequiresSwizzle( |
+ !tile->is_opaque()); |
} |
std::unique_ptr<base::trace_event::ConvertableToTraceFormat> |