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

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

Issue 98113005: Revert "cc: Added tile bundles" (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years 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/tile_bundle_unittest.cc ('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 <vector> 10 #include <vector>
11 11
12 #include "base/containers/hash_tables.h" 12 #include "base/containers/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/base/ref_counted_managed.h" 15 #include "cc/base/ref_counted_managed.h"
16 #include "cc/debug/rendering_stats_instrumentation.h" 16 #include "cc/debug/rendering_stats_instrumentation.h"
17 #include "cc/resources/managed_tile_state.h" 17 #include "cc/resources/managed_tile_state.h"
18 #include "cc/resources/memory_history.h" 18 #include "cc/resources/memory_history.h"
19 #include "cc/resources/picture_pile_impl.h" 19 #include "cc/resources/picture_pile_impl.h"
20 #include "cc/resources/prioritized_tile_set.h" 20 #include "cc/resources/prioritized_tile_set.h"
21 #include "cc/resources/raster_worker_pool.h" 21 #include "cc/resources/raster_worker_pool.h"
22 #include "cc/resources/resource_pool.h" 22 #include "cc/resources/resource_pool.h"
23 #include "cc/resources/tile.h" 23 #include "cc/resources/tile.h"
24 #include "cc/resources/tile_bundle.h"
25 24
26 namespace cc { 25 namespace cc {
27 class ResourceProvider; 26 class ResourceProvider;
28 27
29 class CC_EXPORT TileManagerClient { 28 class CC_EXPORT TileManagerClient {
30 public: 29 public:
31 virtual void NotifyReadyToActivate() = 0; 30 virtual void NotifyReadyToActivate() = 0;
32 31
33 protected: 32 protected:
34 virtual ~TileManagerClient() {} 33 virtual ~TileManagerClient() {}
35 }; 34 };
36 35
37 struct RasterTaskCompletionStats { 36 struct RasterTaskCompletionStats {
38 RasterTaskCompletionStats(); 37 RasterTaskCompletionStats();
39 38
40 size_t completed_count; 39 size_t completed_count;
41 size_t canceled_count; 40 size_t canceled_count;
42 }; 41 };
43 scoped_ptr<base::Value> RasterTaskCompletionStatsAsValue( 42 scoped_ptr<base::Value> RasterTaskCompletionStatsAsValue(
44 const RasterTaskCompletionStats& stats); 43 const RasterTaskCompletionStats& stats);
45 44
46 // This class manages tiles, deciding which should get rasterized and which 45 // This class manages tiles, deciding which should get rasterized and which
47 // should no longer have any memory assigned to them. Tile objects are "owned" 46 // should no longer have any memory assigned to them. Tile objects are "owned"
48 // by layers; they automatically register with the manager when they are 47 // by layers; they automatically register with the manager when they are
49 // created, and unregister from the manager when they are deleted. 48 // created, and unregister from the manager when they are deleted.
50 class CC_EXPORT TileManager : public RasterWorkerPoolClient, 49 class CC_EXPORT TileManager : public RasterWorkerPoolClient,
51 public RefCountedManager<Tile>, 50 public RefCountedManager<Tile> {
52 public RefCountedManager<TileBundle> {
53 public: 51 public:
54 static scoped_ptr<TileManager> Create( 52 static scoped_ptr<TileManager> Create(
55 TileManagerClient* client, 53 TileManagerClient* client,
56 ResourceProvider* resource_provider, 54 ResourceProvider* resource_provider,
57 size_t num_raster_threads, 55 size_t num_raster_threads,
58 RenderingStatsInstrumentation* rendering_stats_instrumentation, 56 RenderingStatsInstrumentation* rendering_stats_instrumentation,
59 bool use_map_image, 57 bool use_map_image,
60 size_t max_transfer_buffer_usage_bytes, 58 size_t max_transfer_buffer_usage_bytes,
61 size_t max_raster_usage_bytes, 59 size_t max_raster_usage_bytes,
62 GLenum map_image_texture_target); 60 GLenum map_image_texture_target);
63 virtual ~TileManager(); 61 virtual ~TileManager();
64 62
65 void ManageTiles(const GlobalStateThatImpactsTilePriority& state); 63 void ManageTiles(const GlobalStateThatImpactsTilePriority& state);
66 64
67 // Returns true when visible tiles have been initialized. 65 // Returns true when visible tiles have been initialized.
68 bool UpdateVisibleTiles(); 66 bool UpdateVisibleTiles();
69 67
70 scoped_refptr<Tile> CreateTile(PicturePileImpl* picture_pile, 68 scoped_refptr<Tile> CreateTile(PicturePileImpl* picture_pile,
71 gfx::Size tile_size, 69 gfx::Size tile_size,
72 gfx::Rect content_rect, 70 gfx::Rect content_rect,
73 gfx::Rect opaque_rect, 71 gfx::Rect opaque_rect,
74 float contents_scale, 72 float contents_scale,
75 int layer_id, 73 int layer_id,
76 int source_frame_number, 74 int source_frame_number,
77 int flags); 75 int flags);
78 76
79 scoped_refptr<TileBundle> CreateTileBundle(int offset_x,
80 int offset_y,
81 int width,
82 int height);
83
84 scoped_ptr<base::Value> BasicStateAsValue() const; 77 scoped_ptr<base::Value> BasicStateAsValue() const;
85 scoped_ptr<base::Value> AllTilesAsValue() const; 78 scoped_ptr<base::Value> AllTilesAsValue() const;
86 void GetMemoryStats(size_t* memory_required_bytes, 79 void GetMemoryStats(size_t* memory_required_bytes,
87 size_t* memory_nice_to_have_bytes, 80 size_t* memory_nice_to_have_bytes,
88 size_t* memory_allocated_bytes, 81 size_t* memory_allocated_bytes,
89 size_t* memory_used_bytes) const; 82 size_t* memory_used_bytes) const;
90 83
91 const MemoryHistory::Entry& memory_stats_from_last_assign() const { 84 const MemoryHistory::Entry& memory_stats_from_last_assign() const {
92 return memory_stats_from_last_assign_; 85 return memory_stats_from_last_assign_;
93 } 86 }
(...skipping 30 matching lines...) Expand all
124 } 117 }
125 118
126 protected: 119 protected:
127 TileManager(TileManagerClient* client, 120 TileManager(TileManagerClient* client,
128 ResourceProvider* resource_provider, 121 ResourceProvider* resource_provider,
129 scoped_ptr<RasterWorkerPool> raster_worker_pool, 122 scoped_ptr<RasterWorkerPool> raster_worker_pool,
130 size_t num_raster_threads, 123 size_t num_raster_threads,
131 size_t max_raster_usage_bytes, 124 size_t max_raster_usage_bytes,
132 RenderingStatsInstrumentation* rendering_stats_instrumentation); 125 RenderingStatsInstrumentation* rendering_stats_instrumentation);
133 126
134 // Methods called by Tile and TileBundle 127 // Methods called by Tile
135 friend class TileBundle;
136 friend class Tile; 128 friend class Tile;
137
138 void DidChangeTilePriority(Tile* tile); 129 void DidChangeTilePriority(Tile* tile);
139 void DidChangeTileBundlePriority(TileBundle* bundle);
140 130
141 void CleanUpReleasedTiles(); 131 void CleanUpReleasedTiles();
142 132
143 // Overridden from RefCountedManager<Tile>: 133 // Overriden from RefCountedManager<Tile>:
144 virtual void Release(Tile* tile) OVERRIDE; 134 virtual void Release(Tile* tile) OVERRIDE;
145 135
146 // Overridden from RefCountedManager<TileBundle>: 136 // Overriden from RasterWorkerPoolClient:
147 virtual void Release(TileBundle* bundle) OVERRIDE;
148
149 // Overridden from RasterWorkerPoolClient:
150 virtual bool ShouldForceTasksRequiredForActivationToComplete() const 137 virtual bool ShouldForceTasksRequiredForActivationToComplete() const
151 OVERRIDE; 138 OVERRIDE;
152 virtual void DidFinishRunningTasks() OVERRIDE; 139 virtual void DidFinishRunningTasks() OVERRIDE;
153 virtual void DidFinishRunningTasksRequiredForActivation() OVERRIDE; 140 virtual void DidFinishRunningTasksRequiredForActivation() OVERRIDE;
154 141
155 typedef std::vector<Tile*> TileVector; 142 typedef std::vector<Tile*> TileVector;
156 typedef std::set<Tile*> TileSet; 143 typedef std::set<Tile*> TileSet;
157 144
158 // Virtual for test 145 // Virtual for test
159 virtual void ScheduleTasks( 146 virtual void ScheduleTasks(
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
191 void UpdatePrioritizedTileSetIfNeeded(); 178 void UpdatePrioritizedTileSetIfNeeded();
192 179
193 TileManagerClient* client_; 180 TileManagerClient* client_;
194 scoped_ptr<ResourcePool> resource_pool_; 181 scoped_ptr<ResourcePool> resource_pool_;
195 scoped_ptr<RasterWorkerPool> raster_worker_pool_; 182 scoped_ptr<RasterWorkerPool> raster_worker_pool_;
196 GlobalStateThatImpactsTilePriority global_state_; 183 GlobalStateThatImpactsTilePriority global_state_;
197 184
198 typedef base::hash_map<Tile::Id, Tile*> TileMap; 185 typedef base::hash_map<Tile::Id, Tile*> TileMap;
199 TileMap tiles_; 186 TileMap tiles_;
200 187
201 typedef base::hash_map<TileBundle::Id, TileBundle*> TileBundleMap;
202 TileBundleMap bundles_;
203
204 PrioritizedTileSet prioritized_tiles_; 188 PrioritizedTileSet prioritized_tiles_;
205 bool prioritized_tiles_dirty_; 189 bool prioritized_tiles_dirty_;
206 190
207 bool all_tiles_that_need_to_be_rasterized_have_memory_; 191 bool all_tiles_that_need_to_be_rasterized_have_memory_;
208 bool all_tiles_required_for_activation_have_memory_; 192 bool all_tiles_required_for_activation_have_memory_;
209 193
210 size_t memory_required_bytes_; 194 size_t memory_required_bytes_;
211 size_t memory_nice_to_have_bytes_; 195 size_t memory_nice_to_have_bytes_;
212 196
213 size_t bytes_releasable_; 197 size_t bytes_releasable_;
(...skipping 11 matching lines...) Expand all
225 typedef base::hash_map<uint32_t, RasterWorkerPool::Task> PixelRefTaskMap; 209 typedef base::hash_map<uint32_t, RasterWorkerPool::Task> PixelRefTaskMap;
226 typedef base::hash_map<int, PixelRefTaskMap> LayerPixelRefTaskMap; 210 typedef base::hash_map<int, PixelRefTaskMap> LayerPixelRefTaskMap;
227 LayerPixelRefTaskMap image_decode_tasks_; 211 LayerPixelRefTaskMap image_decode_tasks_;
228 212
229 typedef base::hash_map<int, int> LayerCountMap; 213 typedef base::hash_map<int, int> LayerCountMap;
230 LayerCountMap used_layer_counts_; 214 LayerCountMap used_layer_counts_;
231 215
232 RasterTaskCompletionStats update_visible_tiles_stats_; 216 RasterTaskCompletionStats update_visible_tiles_stats_;
233 217
234 std::vector<Tile*> released_tiles_; 218 std::vector<Tile*> released_tiles_;
235 std::vector<TileBundle*> released_tile_bundles_;
236 219
237 DISALLOW_COPY_AND_ASSIGN(TileManager); 220 DISALLOW_COPY_AND_ASSIGN(TileManager);
238 }; 221 };
239 222
240 } // namespace cc 223 } // namespace cc
241 224
242 #endif // CC_RESOURCES_TILE_MANAGER_H_ 225 #endif // CC_RESOURCES_TILE_MANAGER_H_
OLDNEW
« no previous file with comments | « cc/resources/tile_bundle_unittest.cc ('k') | cc/resources/tile_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698