From 020909963f5684d47c99bd12a3d3cd246bfe8132 Mon Sep 17 00:00:00 2001 From: "reveman@chromium.org" Date: Wed, 5 Dec 2012 19:06:18 +0000 Subject: cc: Reduce picture cloning by creating at most one clone per raster thread. This adds raster sequences to the TileManager. Raster tasks posted to the same sequence are guaranteed to run in sequential order, which means only one picture clone per sequence is required. We use the same number of raster sequences as raster threads. BUG=155209 TEST=manual Review URL: https://chromiumcodereview.appspot.com/11419262 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@171267 0039d316-1c4b-4281-b951-d872f2087c98 --- cc/tile_manager.h | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) (limited to 'cc/tile_manager.h') diff --git a/cc/tile_manager.h b/cc/tile_manager.h index 4a02ded..43c9064 100644 --- a/cc/tile_manager.h +++ b/cc/tile_manager.h @@ -12,16 +12,13 @@ #include "cc/resource_pool.h" #include "cc/tile_priority.h" -namespace base { -class SequencedWorkerPool; -} - namespace cc { +class RasterThread; +class ResourceProvider; class Tile; class TileVersion; struct RenderingStats; -class ResourceProvider; class CC_EXPORT TileManagerClient { public: @@ -92,7 +89,7 @@ class CC_EXPORT TileManager { void FreeResourcesForTile(Tile*); void ScheduleManageTiles(); void DispatchMoreRasterTasks(); - void DispatchOneRasterTask(scoped_refptr); + void DispatchOneRasterTask(RasterThread*, scoped_refptr); void OnRasterTaskCompleted( scoped_refptr, scoped_ptr, @@ -103,9 +100,6 @@ class CC_EXPORT TileManager { TileManagerClient* client_; scoped_ptr resource_pool_; bool manage_tiles_pending_; - int pending_raster_tasks_; - size_t num_raster_threads_; - scoped_refptr worker_pool_; GlobalStateThatImpactsTilePriority global_state_; @@ -113,6 +107,9 @@ class CC_EXPORT TileManager { TileVector tiles_; TileVector tiles_that_need_to_be_rasterized_; + typedef ScopedPtrVector RasterThreadVector; + RasterThreadVector raster_threads_; + RenderingStats rendering_stats_; }; -- cgit v1.1