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

Side by Side Diff: cc/resources/tile_manager.h

Issue 228183002: cc: Move ResourcePool ownership to LTHI. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 8 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/resources/resource_pool.h ('k') | cc/resources/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_RESOURCES_TILE_MANAGER_H_ 5 #ifndef CC_RESOURCES_TILE_MANAGER_H_
6 #define CC_RESOURCES_TILE_MANAGER_H_ 6 #define CC_RESOURCES_TILE_MANAGER_H_
7 7
8 #include <queue> 8 #include <queue>
9 #include <set> 9 #include <set>
10 #include <utility> 10 #include <utility>
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
101 }; 101 };
102 102
103 std::vector<PairedPictureLayerIterator> paired_iterators_; 103 std::vector<PairedPictureLayerIterator> paired_iterators_;
104 std::vector<PairedPictureLayerIterator*> iterator_heap_; 104 std::vector<PairedPictureLayerIterator*> iterator_heap_;
105 TreePriority tree_priority_; 105 TreePriority tree_priority_;
106 RasterOrderComparator comparator_; 106 RasterOrderComparator comparator_;
107 }; 107 };
108 108
109 static scoped_ptr<TileManager> Create( 109 static scoped_ptr<TileManager> Create(
110 TileManagerClient* client, 110 TileManagerClient* client,
111 ResourceProvider* resource_provider, 111 ResourcePool* resource_pool,
112 Rasterizer* rasterizer, 112 Rasterizer* rasterizer,
113 Rasterizer* gpu_rasterizer, 113 Rasterizer* gpu_rasterizer,
114 size_t max_raster_usage_bytes, 114 size_t max_raster_usage_bytes,
115 bool use_rasterize_on_demand, 115 bool use_rasterize_on_demand,
116 RenderingStatsInstrumentation* rendering_stats_instrumentation); 116 RenderingStatsInstrumentation* rendering_stats_instrumentation);
117 virtual ~TileManager(); 117 virtual ~TileManager();
118 118
119 void ManageTiles(const GlobalStateThatImpactsTilePriority& state); 119 void ManageTiles(const GlobalStateThatImpactsTilePriority& state);
120 120
121 // Returns true when visible tiles have been initialized. 121 // Returns true when visible tiles have been initialized.
(...skipping 17 matching lines...) Expand all
139 size_t* memory_nice_to_have_bytes, 139 size_t* memory_nice_to_have_bytes,
140 size_t* memory_allocated_bytes, 140 size_t* memory_allocated_bytes,
141 size_t* memory_used_bytes) const; 141 size_t* memory_used_bytes) const;
142 142
143 const MemoryHistory::Entry& memory_stats_from_last_assign() const { 143 const MemoryHistory::Entry& memory_stats_from_last_assign() const {
144 return memory_stats_from_last_assign_; 144 return memory_stats_from_last_assign_;
145 } 145 }
146 146
147 void GetPairedPictureLayers(std::vector<PairedPictureLayer>* layers) const; 147 void GetPairedPictureLayers(std::vector<PairedPictureLayer>* layers) const;
148 148
149 ResourcePool* resource_pool() { return resource_pool_.get(); }
150
151 void InitializeTilesWithResourcesForTesting(const std::vector<Tile*>& tiles) { 149 void InitializeTilesWithResourcesForTesting(const std::vector<Tile*>& tiles) {
152 for (size_t i = 0; i < tiles.size(); ++i) { 150 for (size_t i = 0; i < tiles.size(); ++i) {
153 ManagedTileState& mts = tiles[i]->managed_state(); 151 ManagedTileState& mts = tiles[i]->managed_state();
154 ManagedTileState::TileVersion& tile_version = 152 ManagedTileState::TileVersion& tile_version =
155 mts.tile_versions[HIGH_QUALITY_NO_LCD_RASTER_MODE]; 153 mts.tile_versions[HIGH_QUALITY_NO_LCD_RASTER_MODE];
156 154
157 tile_version.resource_ = resource_pool_->AcquireResource(gfx::Size(1, 1)); 155 tile_version.resource_ = resource_pool_->AcquireResource(gfx::Size(1, 1));
158 156
159 bytes_releasable_ += BytesConsumedIfAllocated(tiles[i]); 157 bytes_releasable_ += BytesConsumedIfAllocated(tiles[i]);
160 ++resources_releasable_; 158 ++resources_releasable_;
161 } 159 }
162 } 160 }
163 161
164 void SetGlobalStateForTesting( 162 void SetGlobalStateForTesting(
165 const GlobalStateThatImpactsTilePriority& state) { 163 const GlobalStateThatImpactsTilePriority& state) {
166 // Soft limit is used for resource pool such that 164 // Soft limit is used for resource pool such that
167 // memory returns to soft limit after going over. 165 // memory returns to soft limit after going over.
168 if (state != global_state_) { 166 if (state != global_state_) {
169 global_state_ = state; 167 global_state_ = state;
170 prioritized_tiles_dirty_ = true; 168 prioritized_tiles_dirty_ = true;
171 resource_pool_->SetResourceUsageLimits( 169 resource_pool_->SetResourceUsageLimits(
172 global_state_.soft_memory_limit_in_bytes, 170 global_state_.soft_memory_limit_in_bytes,
173 global_state_.unused_memory_limit_in_bytes, 171 global_state_.unused_memory_limit_in_bytes,
174 global_state_.num_resources_limit); 172 global_state_.num_resources_limit);
175 } 173 }
176 } 174 }
177 175
178 protected: 176 protected:
179 TileManager(TileManagerClient* client, 177 TileManager(TileManagerClient* client,
180 ResourceProvider* resource_provider, 178 ResourcePool* resource_pool,
181 Rasterizer* rasterizer, 179 Rasterizer* rasterizer,
182 Rasterizer* gpu_rasterizer, 180 Rasterizer* gpu_rasterizer,
183 size_t max_raster_usage_bytes, 181 size_t max_raster_usage_bytes,
184 bool use_rasterize_on_demand, 182 bool use_rasterize_on_demand,
185 RenderingStatsInstrumentation* rendering_stats_instrumentation); 183 RenderingStatsInstrumentation* rendering_stats_instrumentation);
186 184
187 // Methods called by Tile 185 // Methods called by Tile
188 friend class Tile; 186 friend class Tile;
189 void DidChangeTilePriority(Tile* tile); 187 void DidChangeTilePriority(Tile* tile);
190 188
(...skipping 28 matching lines...) Expand all
219 void OnImageDecodeTaskCompleted(int layer_id, 217 void OnImageDecodeTaskCompleted(int layer_id,
220 SkPixelRef* pixel_ref, 218 SkPixelRef* pixel_ref,
221 bool was_canceled); 219 bool was_canceled);
222 void OnRasterTaskCompleted(Tile::Id tile, 220 void OnRasterTaskCompleted(Tile::Id tile,
223 scoped_ptr<ScopedResource> resource, 221 scoped_ptr<ScopedResource> resource,
224 RasterMode raster_mode, 222 RasterMode raster_mode,
225 const PicturePileImpl::Analysis& analysis, 223 const PicturePileImpl::Analysis& analysis,
226 bool was_canceled); 224 bool was_canceled);
227 225
228 inline size_t BytesConsumedIfAllocated(const Tile* tile) const { 226 inline size_t BytesConsumedIfAllocated(const Tile* tile) const {
229 return Resource::MemorySizeBytes(tile->size(), resource_format_); 227 return Resource::MemorySizeBytes(tile->size(),
228 resource_pool_->resource_format());
230 } 229 }
231 230
232 void FreeResourceForTile(Tile* tile, RasterMode mode); 231 void FreeResourceForTile(Tile* tile, RasterMode mode);
233 void FreeResourcesForTile(Tile* tile); 232 void FreeResourcesForTile(Tile* tile);
234 void FreeUnusedResourcesForTile(Tile* tile); 233 void FreeUnusedResourcesForTile(Tile* tile);
235 scoped_refptr<internal::ImageDecodeTask> CreateImageDecodeTask( 234 scoped_refptr<internal::ImageDecodeTask> CreateImageDecodeTask(
236 Tile* tile, 235 Tile* tile,
237 SkPixelRef* pixel_ref); 236 SkPixelRef* pixel_ref);
238 scoped_refptr<internal::RasterTask> CreateRasterTask(Tile* tile); 237 scoped_refptr<internal::RasterTask> CreateRasterTask(Tile* tile);
239 scoped_ptr<base::Value> GetMemoryRequirementsAsValue() const; 238 scoped_ptr<base::Value> GetMemoryRequirementsAsValue() const;
240 void UpdatePrioritizedTileSetIfNeeded(); 239 void UpdatePrioritizedTileSetIfNeeded();
241 240
242 TileManagerClient* client_; 241 TileManagerClient* client_;
243 scoped_ptr<ResourcePool> resource_pool_; 242 ResourcePool* resource_pool_;
244 scoped_ptr<RasterizerDelegate> rasterizer_delegate_; 243 scoped_ptr<RasterizerDelegate> rasterizer_delegate_;
245 GlobalStateThatImpactsTilePriority global_state_; 244 GlobalStateThatImpactsTilePriority global_state_;
246 245
247 typedef base::hash_map<Tile::Id, Tile*> TileMap; 246 typedef base::hash_map<Tile::Id, Tile*> TileMap;
248 TileMap tiles_; 247 TileMap tiles_;
249 248
250 PrioritizedTileSet prioritized_tiles_; 249 PrioritizedTileSet prioritized_tiles_;
251 bool prioritized_tiles_dirty_; 250 bool prioritized_tiles_dirty_;
252 251
253 bool all_tiles_that_need_to_be_rasterized_have_memory_; 252 bool all_tiles_that_need_to_be_rasterized_have_memory_;
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
290 std::vector<scoped_refptr<internal::RasterTask> > orphan_raster_tasks_; 289 std::vector<scoped_refptr<internal::RasterTask> > orphan_raster_tasks_;
291 290
292 std::vector<PictureLayerImpl*> layers_; 291 std::vector<PictureLayerImpl*> layers_;
293 292
294 DISALLOW_COPY_AND_ASSIGN(TileManager); 293 DISALLOW_COPY_AND_ASSIGN(TileManager);
295 }; 294 };
296 295
297 } // namespace cc 296 } // namespace cc
298 297
299 #endif // CC_RESOURCES_TILE_MANAGER_H_ 298 #endif // CC_RESOURCES_TILE_MANAGER_H_
OLDNEW
« no previous file with comments | « cc/resources/resource_pool.h ('k') | cc/resources/tile_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698