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

Side by Side Diff: cc/tile_manager.h

Issue 11593030: cc: Add RasterWorkerPool class. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix win build. Created 7 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « cc/raster_worker_pool.cc ('k') | cc/tile_manager.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CC_TILE_MANAGER_H_ 5 #ifndef CC_TILE_MANAGER_H_
6 #define CC_TILE_MANAGER_H_ 6 #define CC_TILE_MANAGER_H_
7 7
8 #include <list> 8 #include <list>
9 #include <queue> 9 #include <queue>
10 #include <vector> 10 #include <vector>
11 11
12 #include "base/hash_tables.h" 12 #include "base/hash_tables.h"
13 #include "base/memory/scoped_ptr.h" 13 #include "base/memory/scoped_ptr.h"
14 #include "base/values.h" 14 #include "base/values.h"
15 #include "cc/rendering_stats.h"
15 #include "cc/resource_pool.h" 16 #include "cc/resource_pool.h"
16 #include "cc/tile_priority.h" 17 #include "cc/tile_priority.h"
17 18
18 namespace cc { 19 namespace cc {
19 20 class RasterWorkerPool;
20 class RasterThread;
21 class ResourceProvider; 21 class ResourceProvider;
22 class Tile; 22 class Tile;
23 class TileVersion; 23 class TileVersion;
24 struct RenderingStats;
25 24
26 class CC_EXPORT TileManagerClient { 25 class CC_EXPORT TileManagerClient {
27 public: 26 public:
28 virtual void ScheduleManageTiles() = 0; 27 virtual void ScheduleManageTiles() = 0;
29 virtual void ScheduleCheckForCompletedSetPixels() = 0; 28 virtual void ScheduleCheckForCompletedSetPixels() = 0;
30 29
31 protected: 30 protected:
32 virtual ~TileManagerClient() {} 31 virtual ~TileManagerClient() {}
33 }; 32 };
34 33
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 // should no longer have any memory assigned to them. Tile objects are "owned" 72 // should no longer have any memory assigned to them. Tile objects are "owned"
74 // by layers; they automatically register with the manager when they are 73 // by layers; they automatically register with the manager when they are
75 // created, and unregister from the manager when they are deleted. 74 // created, and unregister from the manager when they are deleted.
76 class CC_EXPORT TileManager { 75 class CC_EXPORT TileManager {
77 public: 76 public:
78 TileManager(TileManagerClient* client, 77 TileManager(TileManagerClient* client,
79 ResourceProvider *resource_provider, 78 ResourceProvider *resource_provider,
80 size_t num_raster_threads); 79 size_t num_raster_threads);
81 virtual ~TileManager(); 80 virtual ~TileManager();
82 81
83 const GlobalStateThatImpactsTilePriority& GlobalState() const { return global_ state_; } 82 const GlobalStateThatImpactsTilePriority& GlobalState() const {
83 return global_state_;
84 }
84 void SetGlobalState(const GlobalStateThatImpactsTilePriority& state); 85 void SetGlobalState(const GlobalStateThatImpactsTilePriority& state);
85 86
86 void ManageTiles(); 87 void ManageTiles();
87 void CheckForCompletedSetPixels(); 88 void CheckForCompletedSetPixels();
88 void GetMemoryStats(size_t* memoryRequiredBytes, 89 void GetMemoryStats(size_t* memoryRequiredBytes,
89 size_t* memoryNiceToHaveBytes, 90 size_t* memoryNiceToHaveBytes,
90 size_t* memoryUsedBytes); 91 size_t* memoryUsedBytes);
91 92
92 void GetRenderingStats(RenderingStats* stats); 93 void GetRenderingStats(RenderingStats* stats);
93 94
94 int GetTilesInBinCount(TileManagerBin bin, WhichTree tree); 95 int GetTilesInBinCount(TileManagerBin bin, WhichTree tree);
95 int GetDrawableTilesInBinCount(TileManagerBin bin, WhichTree tree); 96 int GetDrawableTilesInBinCount(TileManagerBin bin, WhichTree tree);
96 97
97 protected: 98 protected:
98 // Methods called by Tile 99 // Methods called by Tile
99 friend class Tile; 100 friend class Tile;
100 void RegisterTile(Tile*); 101 void RegisterTile(Tile* tile);
101 void UnregisterTile(Tile*); 102 void UnregisterTile(Tile* tile);
102 void WillModifyTilePriority(Tile*, WhichTree, const TilePriority& new_priority ); 103 void WillModifyTilePriority(
104 Tile* tile, WhichTree tree, const TilePriority& new_priority);
103 105
104 private: 106 private:
105 void ResetBinCounts(); 107 void ResetBinCounts();
106 void AssignGpuMemoryToTiles(); 108 void AssignGpuMemoryToTiles();
107 void FreeResourcesForTile(Tile*); 109 void FreeResourcesForTile(Tile* tile);
108 void ScheduleManageTiles(); 110 void ScheduleManageTiles();
109 void ScheduleCheckForCompletedSetPixels(); 111 void ScheduleCheckForCompletedSetPixels();
110 void DispatchMoreTasks(); 112 void DispatchMoreTasks();
111 void DispatchOneRasterTask(RasterThread*, scoped_refptr<Tile>); 113 void GatherPixelRefsForTile(Tile* tile);
114 void DispatchImageDecodeTasksForTile(Tile* tile);
115 void DispatchOneImageDecodeTask(
116 scoped_refptr<Tile> tile, skia::LazyPixelRef* pixel_ref);
117 void OnImageDecodeTaskCompleted(
118 scoped_refptr<Tile> tile, uint32_t pixel_ref_id);
119 void DispatchOneRasterTask(scoped_refptr<Tile> tile);
112 void OnRasterTaskCompleted( 120 void OnRasterTaskCompleted(
113 scoped_refptr<Tile>, 121 scoped_refptr<Tile> tile,
114 scoped_ptr<ResourcePool::Resource>, 122 scoped_ptr<ResourcePool::Resource> resource,
115 scoped_refptr<PicturePileImpl>, 123 int manage_tiles_call_count_when_dispatched);
116 int manage_tiles_call_count_when_dispatched, 124 void DidFinishTileInitialization(Tile* tile);
117 RenderingStats*);
118 void DidFinishTileInitialization(Tile*);
119 void DispatchImageDecodingTasksForTile(Tile*);
120 void OnImageDecodingTaskCompleted(scoped_refptr<Tile>,
121 uint32_t,
122 RenderingStats*);
123 void DispatchOneImageDecodingTask(
124 RasterThread*, scoped_refptr<Tile>, skia::LazyPixelRef*);
125 void GatherPixelRefsForTile(Tile*);
126 RasterThread* GetFreeRasterThread();
127 125
128 TileManagerClient* client_; 126 TileManagerClient* client_;
129 scoped_ptr<ResourcePool> resource_pool_; 127 scoped_ptr<ResourcePool> resource_pool_;
128 scoped_ptr<RasterWorkerPool> raster_worker_;
130 bool manage_tiles_pending_; 129 bool manage_tiles_pending_;
131 int manage_tiles_call_count_; 130 int manage_tiles_call_count_;
132 bool check_for_completed_set_pixels_pending_; 131 bool check_for_completed_set_pixels_pending_;
133 132
134 GlobalStateThatImpactsTilePriority global_state_; 133 GlobalStateThatImpactsTilePriority global_state_;
135 134
136 int tiles_in_bin_count_[NUM_BINS][NUM_TREES]; 135 int tiles_in_bin_count_[NUM_BINS][NUM_TREES];
137 int drawable_tiles_in_bin_count_[NUM_BINS][NUM_TREES]; 136 int drawable_tiles_in_bin_count_[NUM_BINS][NUM_TREES];
138 137
139 typedef std::vector<Tile*> TileVector; 138 typedef std::vector<Tile*> TileVector;
140 TileVector tiles_; 139 TileVector tiles_;
141 TileVector tiles_that_need_to_be_rasterized_; 140 TileVector tiles_that_need_to_be_rasterized_;
142 141
143 typedef std::list<Tile*> TileList; 142 typedef std::list<Tile*> TileList;
144 // Tiles with image decoding tasks. These tiles need to be rasterized 143 // Tiles with image decoding tasks. These tiles need to be rasterized
145 // when all the image decoding tasks finish. 144 // when all the image decoding tasks finish.
146 TileList tiles_with_image_decoding_tasks_; 145 TileList tiles_with_image_decoding_tasks_;
147 146
148 typedef base::hash_map<uint32_t, skia::LazyPixelRef*> PixelRefMap; 147 typedef base::hash_map<uint32_t, skia::LazyPixelRef*> PixelRefMap;
149 PixelRefMap pending_decode_tasks_; 148 PixelRefMap pending_decode_tasks_;
150 149
151 typedef std::queue<scoped_refptr<Tile> > TileQueue; 150 typedef std::queue<scoped_refptr<Tile> > TileQueue;
152 TileQueue tiles_with_pending_set_pixels_; 151 TileQueue tiles_with_pending_set_pixels_;
153 152
154 typedef ScopedPtrVector<RasterThread> RasterThreadVector;
155 RasterThreadVector raster_threads_;
156
157 RenderingStats rendering_stats_; 153 RenderingStats rendering_stats_;
158 154
159 DISALLOW_COPY_AND_ASSIGN(TileManager); 155 DISALLOW_COPY_AND_ASSIGN(TileManager);
160 }; 156 };
161 157
162 } // namespace cc 158 } // namespace cc
163 159
164 #endif // CC_TILE_MANAGER_H_ 160 #endif // CC_TILE_MANAGER_H_
OLDNEW
« no previous file with comments | « cc/raster_worker_pool.cc ('k') | cc/tile_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698