| 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 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 45 // 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. |
| 46 virtual void NotifyReadyToDraw() = 0; | 46 virtual void NotifyReadyToDraw() = 0; |
| 47 | 47 |
| 48 // 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 |
| 49 // examples are: | 49 // examples are: |
| 50 // - Tile version initialized. | 50 // - Tile version initialized. |
| 51 // - Tile resources freed. | 51 // - Tile resources freed. |
| 52 // - Tile marked for on-demand raster. | 52 // - Tile marked for on-demand raster. |
| 53 virtual void NotifyTileStateChanged(const Tile* tile) = 0; | 53 virtual void NotifyTileStateChanged(const Tile* tile) = 0; |
| 54 | 54 |
| 55 // Given an empty raster tile priority queue, this will build a priority queue | |
| 56 // that will return tiles in order in which they should be rasterized. | |
| 57 // Note if the queue was previous built, Reset must be called on it. | |
| 58 virtual scoped_ptr<RasterTilePriorityQueue> BuildRasterQueue( | |
| 59 TreePriority tree_priority, | |
| 60 RasterTilePriorityQueue::Type type) = 0; | |
| 61 | |
| 62 // Given an empty eviction tile priority queue, this will build a priority | |
| 63 // queue that will return tiles in order in which they should be evicted. | |
| 64 // Note if the queue was previous built, Reset must be called on it. | |
| 65 virtual scoped_ptr<EvictionTilePriorityQueue> BuildEvictionQueue( | |
| 66 TreePriority tree_priority) = 0; | |
| 67 | |
| 68 // Informs the client that due to the currently rasterizing (or scheduled to | 55 // 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 | 56 // 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. | 57 // draw. This can be used to preemptively start a frame. |
| 71 virtual void SetIsLikelyToRequireADraw(bool is_likely_to_require_a_draw) = 0; | 58 virtual void SetIsLikelyToRequireADraw(bool is_likely_to_require_a_draw) = 0; |
| 72 | 59 |
| 60 // Returns true iff we have a pending tree. |
| 61 virtual bool PendingTreeExists() = 0; |
| 62 |
| 73 protected: | 63 protected: |
| 74 virtual ~TileManagerClient() {} | 64 virtual ~TileManagerClient() {} |
| 75 }; | 65 }; |
| 76 | 66 |
| 77 struct RasterTaskCompletionStats { | 67 struct RasterTaskCompletionStats { |
| 78 RasterTaskCompletionStats(); | 68 RasterTaskCompletionStats(); |
| 79 | 69 |
| 80 size_t completed_count; | 70 size_t completed_count; |
| 81 size_t canceled_count; | 71 size_t canceled_count; |
| 82 }; | 72 }; |
| (...skipping 21 matching lines...) Expand all Loading... |
| 104 "minus 1"); | 94 "minus 1"); |
| 105 | 95 |
| 106 static scoped_ptr<TileManager> Create(TileManagerClient* client, | 96 static scoped_ptr<TileManager> Create(TileManagerClient* client, |
| 107 base::SequencedTaskRunner* task_runner, | 97 base::SequencedTaskRunner* task_runner, |
| 108 ResourcePool* resource_pool, | 98 ResourcePool* resource_pool, |
| 109 TileTaskRunner* tile_task_runner, | 99 TileTaskRunner* tile_task_runner, |
| 110 Rasterizer* rasterizer, | 100 Rasterizer* rasterizer, |
| 111 size_t scheduled_raster_task_limit); | 101 size_t scheduled_raster_task_limit); |
| 112 ~TileManager() override; | 102 ~TileManager() override; |
| 113 | 103 |
| 104 void RegisterPictureLayerTilingSet(int layer_id, |
| 105 WhichTree tree, |
| 106 PictureLayerTilingSet* tiling_set); |
| 107 void UnregisterPictureLayerTilingSet(int layer_id, WhichTree tree); |
| 108 |
| 114 // Assigns tile memory and schedules work to prepare tiles for drawing. | 109 // Assigns tile memory and schedules work to prepare tiles for drawing. |
| 115 // - Runs client_->NotifyReadyToActivate() when all tiles required for | 110 // - Runs client_->NotifyReadyToActivate() when all tiles required for |
| 116 // activation are prepared, or failed to prepare due to OOM. | 111 // activation are prepared, or failed to prepare due to OOM. |
| 117 // - Runs client_->NotifyReadyToDraw() when all tiles required draw are | 112 // - Runs client_->NotifyReadyToDraw() when all tiles required draw are |
| 118 // prepared, or failed to prepare due to OOM. | 113 // prepared, or failed to prepare due to OOM. |
| 119 void PrepareTiles(const GlobalStateThatImpactsTilePriority& state); | 114 void PrepareTiles(const GlobalStateThatImpactsTilePriority& state); |
| 120 | 115 |
| 121 void UpdateVisibleTiles(const GlobalStateThatImpactsTilePriority& state); | 116 void UpdateVisibleTiles(const GlobalStateThatImpactsTilePriority& state); |
| 122 | 117 |
| 123 scoped_refptr<Tile> CreateTile(RasterSource* raster_source, | 118 scoped_refptr<Tile> CreateTile(RasterSource* raster_source, |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 172 return tiles; | 167 return tiles; |
| 173 } | 168 } |
| 174 | 169 |
| 175 void SetScheduledRasterTaskLimitForTesting(size_t limit) { | 170 void SetScheduledRasterTaskLimitForTesting(size_t limit) { |
| 176 scheduled_raster_task_limit_ = limit; | 171 scheduled_raster_task_limit_ = limit; |
| 177 } | 172 } |
| 178 | 173 |
| 179 bool IsReadyToActivate() const; | 174 bool IsReadyToActivate() const; |
| 180 bool IsReadyToDraw() const; | 175 bool IsReadyToDraw() const; |
| 181 | 176 |
| 177 scoped_ptr<RasterTilePriorityQueue> BuildRasterQueue( |
| 178 RasterTilePriorityQueue::Type type) const; |
| 179 scoped_ptr<EvictionTilePriorityQueue> BuildEvictionQueue() const; |
| 180 |
| 182 protected: | 181 protected: |
| 183 TileManager(TileManagerClient* client, | 182 TileManager(TileManagerClient* client, |
| 184 const scoped_refptr<base::SequencedTaskRunner>& task_runner, | 183 const scoped_refptr<base::SequencedTaskRunner>& task_runner, |
| 185 ResourcePool* resource_pool, | 184 ResourcePool* resource_pool, |
| 186 TileTaskRunner* tile_task_runner, | 185 TileTaskRunner* tile_task_runner, |
| 187 Rasterizer* rasterizer, | 186 Rasterizer* rasterizer, |
| 188 size_t scheduled_raster_task_limit); | 187 size_t scheduled_raster_task_limit); |
| 189 | 188 |
| 190 void FreeResourcesForReleasedTiles(); | 189 void FreeResourcesForReleasedTiles(); |
| 191 void CleanUpReleasedTiles(); | 190 void CleanUpReleasedTiles(); |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 305 | 304 |
| 306 UniqueNotifier ready_to_activate_notifier_; | 305 UniqueNotifier ready_to_activate_notifier_; |
| 307 UniqueNotifier ready_to_draw_notifier_; | 306 UniqueNotifier ready_to_draw_notifier_; |
| 308 UniqueNotifier ready_to_activate_check_notifier_; | 307 UniqueNotifier ready_to_activate_check_notifier_; |
| 309 UniqueNotifier ready_to_draw_check_notifier_; | 308 UniqueNotifier ready_to_draw_check_notifier_; |
| 310 UniqueNotifier more_tiles_need_prepare_check_notifier_; | 309 UniqueNotifier more_tiles_need_prepare_check_notifier_; |
| 311 | 310 |
| 312 bool did_notify_ready_to_activate_; | 311 bool did_notify_ready_to_activate_; |
| 313 bool did_notify_ready_to_draw_; | 312 bool did_notify_ready_to_draw_; |
| 314 | 313 |
| 314 base::hash_map<int, PictureLayerTilingSet::Pair> |
| 315 paired_picture_layer_tiling_sets_; |
| 316 |
| 315 DISALLOW_COPY_AND_ASSIGN(TileManager); | 317 DISALLOW_COPY_AND_ASSIGN(TileManager); |
| 316 }; | 318 }; |
| 317 | 319 |
| 318 } // namespace cc | 320 } // namespace cc |
| 319 | 321 |
| 320 #endif // CC_RESOURCES_TILE_MANAGER_H_ | 322 #endif // CC_RESOURCES_TILE_MANAGER_H_ |
| OLD | NEW |