| OLD | NEW |
| 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 <deque> | 8 #include <deque> |
| 9 #include <queue> | 9 #include <queue> |
| 10 #include <set> | 10 #include <set> |
| (...skipping 21 matching lines...) Expand all Loading... |
| 32 } | 32 } |
| 33 } | 33 } |
| 34 | 34 |
| 35 namespace cc { | 35 namespace cc { |
| 36 class PictureLayerImpl; | 36 class PictureLayerImpl; |
| 37 class Rasterizer; | 37 class Rasterizer; |
| 38 class ResourceProvider; | 38 class ResourceProvider; |
| 39 | 39 |
| 40 class CC_EXPORT TileManagerClient { | 40 class CC_EXPORT TileManagerClient { |
| 41 public: | 41 public: |
| 42 // Returns the set of layers that the tile manager should consider for raster. | |
| 43 // TODO(vmpstr): Change the way we determine if we are ready to activate, so | |
| 44 // that this can be removed. | |
| 45 virtual const std::vector<PictureLayerImpl*>& GetPictureLayers() const = 0; | |
| 46 | |
| 47 // Called when all tiles marked as required for activation are ready to draw. | 42 // Called when all tiles marked as required for activation are ready to draw. |
| 48 virtual void NotifyReadyToActivate() = 0; | 43 virtual void NotifyReadyToActivate() = 0; |
| 49 | 44 |
| 50 // Called when all tiles marked as required for draw are ready to draw. | 45 // Called when all tiles marked as required for draw are ready to draw. |
| 51 virtual void NotifyReadyToDraw() = 0; | 46 virtual void NotifyReadyToDraw() = 0; |
| 52 | 47 |
| 53 // Called when the visible representation of a tile might have changed. Some | 48 // Called when the visible representation of a tile might have changed. Some |
| 54 // examples are: | 49 // examples are: |
| 55 // - Tile version initialized. | 50 // - Tile version initialized. |
| 56 // - Tile resources freed. | 51 // - Tile resources freed. |
| 57 // - Tile marked for on-demand raster. | 52 // - Tile marked for on-demand raster. |
| 58 virtual void NotifyTileStateChanged(const Tile* tile) = 0; | 53 virtual void NotifyTileStateChanged(const Tile* tile) = 0; |
| 59 | 54 |
| 60 // Given an empty raster tile priority queue, this will build a priority queue | 55 // Given an empty raster tile priority queue, this will build a priority queue |
| 61 // that will return tiles in order in which they should be rasterized. | 56 // that will return tiles in order in which they should be rasterized. |
| 62 // Note if the queue was previous built, Reset must be called on it. | 57 // Note if the queue was previous built, Reset must be called on it. |
| 63 virtual scoped_ptr<RasterTilePriorityQueue> BuildRasterQueue( | 58 virtual scoped_ptr<RasterTilePriorityQueue> BuildRasterQueue( |
| 64 TreePriority tree_priority, | 59 TreePriority tree_priority, |
| 65 RasterTilePriorityQueue::Type type) = 0; | 60 RasterTilePriorityQueue::Type type) = 0; |
| 66 | 61 |
| 67 // Given an empty eviction tile priority queue, this will build a priority | 62 // Given an empty eviction tile priority queue, this will build a priority |
| 68 // queue that will return tiles in order in which they should be evicted. | 63 // queue that will return tiles in order in which they should be evicted. |
| 69 // Note if the queue was previous built, Reset must be called on it. | 64 // Note if the queue was previous built, Reset must be called on it. |
| 70 virtual scoped_ptr<EvictionTilePriorityQueue> BuildEvictionQueue( | 65 virtual scoped_ptr<EvictionTilePriorityQueue> BuildEvictionQueue( |
| 71 TreePriority tree_priority) = 0; | 66 TreePriority tree_priority) = 0; |
| 72 | 67 |
| 68 // Informs the client that due to the currently rasterizing (or scheduled to |
| 69 // be rasterized) tiles, we will be in a position that will likely require a |
| 70 // draw. This can be used to preemptively start a frame. |
| 71 virtual void SetIsLikelyToRequireADraw(bool is_likely_to_require_a_draw) = 0; |
| 72 |
| 73 protected: | 73 protected: |
| 74 virtual ~TileManagerClient() {} | 74 virtual ~TileManagerClient() {} |
| 75 }; | 75 }; |
| 76 | 76 |
| 77 struct RasterTaskCompletionStats { | 77 struct RasterTaskCompletionStats { |
| 78 RasterTaskCompletionStats(); | 78 RasterTaskCompletionStats(); |
| 79 | 79 |
| 80 size_t completed_count; | 80 size_t completed_count; |
| 81 size_t canceled_count; | 81 size_t canceled_count; |
| 82 }; | 82 }; |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 169 ++it) { | 169 ++it) { |
| 170 tiles.push_back(it->second); | 170 tiles.push_back(it->second); |
| 171 } | 171 } |
| 172 return tiles; | 172 return tiles; |
| 173 } | 173 } |
| 174 | 174 |
| 175 void SetScheduledRasterTaskLimitForTesting(size_t limit) { | 175 void SetScheduledRasterTaskLimitForTesting(size_t limit) { |
| 176 scheduled_raster_task_limit_ = limit; | 176 scheduled_raster_task_limit_ = limit; |
| 177 } | 177 } |
| 178 | 178 |
| 179 bool IsReadyToActivate() const; |
| 180 bool IsReadyToDraw() const; |
| 181 |
| 179 protected: | 182 protected: |
| 180 TileManager(TileManagerClient* client, | 183 TileManager(TileManagerClient* client, |
| 181 const scoped_refptr<base::SequencedTaskRunner>& task_runner, | 184 const scoped_refptr<base::SequencedTaskRunner>& task_runner, |
| 182 ResourcePool* resource_pool, | 185 ResourcePool* resource_pool, |
| 183 TileTaskRunner* tile_task_runner, | 186 TileTaskRunner* tile_task_runner, |
| 184 Rasterizer* rasterizer, | 187 Rasterizer* rasterizer, |
| 185 size_t scheduled_raster_task_limit); | 188 size_t scheduled_raster_task_limit); |
| 186 | 189 |
| 187 void FreeResourcesForReleasedTiles(); | 190 void FreeResourcesForReleasedTiles(); |
| 188 void CleanUpReleasedTiles(); | 191 void CleanUpReleasedTiles(); |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 252 scoped_ptr<EvictionTilePriorityQueue> eviction_priority_queue, | 255 scoped_ptr<EvictionTilePriorityQueue> eviction_priority_queue, |
| 253 const MemoryUsage& limit, | 256 const MemoryUsage& limit, |
| 254 MemoryUsage* usage); | 257 MemoryUsage* usage); |
| 255 scoped_ptr<EvictionTilePriorityQueue> | 258 scoped_ptr<EvictionTilePriorityQueue> |
| 256 FreeTileResourcesWithLowerPriorityUntilUsageIsWithinLimit( | 259 FreeTileResourcesWithLowerPriorityUntilUsageIsWithinLimit( |
| 257 scoped_ptr<EvictionTilePriorityQueue> eviction_priority_queue, | 260 scoped_ptr<EvictionTilePriorityQueue> eviction_priority_queue, |
| 258 const MemoryUsage& limit, | 261 const MemoryUsage& limit, |
| 259 const TilePriority& oother_priority, | 262 const TilePriority& oother_priority, |
| 260 MemoryUsage* usage); | 263 MemoryUsage* usage); |
| 261 bool TilePriorityViolatesMemoryPolicy(const TilePriority& priority); | 264 bool TilePriorityViolatesMemoryPolicy(const TilePriority& priority); |
| 262 bool IsReadyToActivate() const; | 265 bool AreRequiredTilesReadyToDraw(RasterTilePriorityQueue::Type type) const; |
| 263 bool IsReadyToDraw() const; | |
| 264 void NotifyReadyToActivate(); | 266 void NotifyReadyToActivate(); |
| 265 void NotifyReadyToDraw(); | 267 void NotifyReadyToDraw(); |
| 266 void CheckIfReadyToActivate(); | 268 void CheckIfReadyToActivate(); |
| 267 void CheckIfReadyToDraw(); | 269 void CheckIfReadyToDraw(); |
| 268 void CheckIfMoreTilesNeedToBePrepared(); | 270 void CheckIfMoreTilesNeedToBePrepared(); |
| 269 | 271 |
| 270 TileManagerClient* client_; | 272 TileManagerClient* client_; |
| 271 scoped_refptr<base::SequencedTaskRunner> task_runner_; | 273 scoped_refptr<base::SequencedTaskRunner> task_runner_; |
| 272 ResourcePool* resource_pool_; | 274 ResourcePool* resource_pool_; |
| 273 TileTaskRunner* tile_task_runner_; | 275 TileTaskRunner* tile_task_runner_; |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 309 | 311 |
| 310 bool did_notify_ready_to_activate_; | 312 bool did_notify_ready_to_activate_; |
| 311 bool did_notify_ready_to_draw_; | 313 bool did_notify_ready_to_draw_; |
| 312 | 314 |
| 313 DISALLOW_COPY_AND_ASSIGN(TileManager); | 315 DISALLOW_COPY_AND_ASSIGN(TileManager); |
| 314 }; | 316 }; |
| 315 | 317 |
| 316 } // namespace cc | 318 } // namespace cc |
| 317 | 319 |
| 318 #endif // CC_RESOURCES_TILE_MANAGER_H_ | 320 #endif // CC_RESOURCES_TILE_MANAGER_H_ |
| OLD | NEW |