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

Side by Side Diff: cc/tiles/picture_layer_tiling.h

Issue 1587283002: Switch cc to std::unordered_*. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@unordered-map
Patch Set: Fix MSVC build issue Created 4 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
« no previous file with comments | « cc/tiles/image_decode_controller.h ('k') | cc/tiles/picture_layer_tiling.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_TILES_PICTURE_LAYER_TILING_H_ 5 #ifndef CC_TILES_PICTURE_LAYER_TILING_H_
6 #define CC_TILES_PICTURE_LAYER_TILING_H_ 6 #define CC_TILES_PICTURE_LAYER_TILING_H_
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
11 #include <map> 11 #include <map>
12 #include <unordered_map>
12 #include <utility> 13 #include <utility>
13 #include <vector> 14 #include <vector>
14 15
15 #include "base/containers/scoped_ptr_hash_map.h"
16 #include "base/macros.h" 16 #include "base/macros.h"
17 #include "base/memory/scoped_ptr.h" 17 #include "base/memory/scoped_ptr.h"
18 #include "cc/base/cc_export.h" 18 #include "cc/base/cc_export.h"
19 #include "cc/base/region.h" 19 #include "cc/base/region.h"
20 #include "cc/base/tiling_data.h" 20 #include "cc/base/tiling_data.h"
21 #include "cc/tiles/tile.h" 21 #include "cc/tiles/tile.h"
22 #include "cc/tiles/tile_priority.h" 22 #include "cc/tiles/tile_priority.h"
23 #include "cc/trees/occlusion.h" 23 #include "cc/trees/occlusion.h"
24 #include "ui/gfx/geometry/rect.h" 24 #include "ui/gfx/geometry/rect.h"
25 25
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 : index_x(index.first), index_y(index.second) {} 60 : index_x(index.first), index_y(index.second) {}
61 61
62 bool operator==(const TileMapKey& other) const { 62 bool operator==(const TileMapKey& other) const {
63 return index_x == other.index_x && index_y == other.index_y; 63 return index_x == other.index_x && index_y == other.index_y;
64 } 64 }
65 65
66 int index_x; 66 int index_x;
67 int index_y; 67 int index_y;
68 }; 68 };
69 69
70 } // namespace cc 70 struct TileMapKeyHash {
71 71 size_t operator()(const TileMapKey& key) const {
72 namespace BASE_HASH_NAMESPACE {
73 template <>
74 struct hash<cc::TileMapKey> {
75 size_t operator()(const cc::TileMapKey& key) const {
76 uint16_t value1 = static_cast<uint16_t>(key.index_x); 72 uint16_t value1 = static_cast<uint16_t>(key.index_x);
77 uint16_t value2 = static_cast<uint16_t>(key.index_y); 73 uint16_t value2 = static_cast<uint16_t>(key.index_y);
78 uint32_t value1_32 = value1; 74 uint32_t value1_32 = value1;
79 return (value1_32 << 16) | value2; 75 return (value1_32 << 16) | value2;
80 } 76 }
81 }; 77 };
82 } // namespace BASE_HASH_NAMESPACE
83
84 namespace cc {
85 78
86 class CC_EXPORT PictureLayerTiling { 79 class CC_EXPORT PictureLayerTiling {
87 public: 80 public:
88 static const int kBorderTexels = 1; 81 static const int kBorderTexels = 1;
89 82
90 PictureLayerTilingClient* client() const { return client_; } 83 PictureLayerTilingClient* client() const { return client_; }
91 ~PictureLayerTiling(); 84 ~PictureLayerTiling();
92 85
93 static float CalculateSoonBorderDistance( 86 static float CalculateSoonBorderDistance(
94 const gfx::Rect& visible_rect_in_content_space, 87 const gfx::Rect& visible_rect_in_content_space,
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 return raster_source_.get(); 126 return raster_source_.get();
134 } 127 }
135 gfx::Size tiling_size() const { return tiling_data_.tiling_size(); } 128 gfx::Size tiling_size() const { return tiling_data_.tiling_size(); }
136 gfx::Rect live_tiles_rect() const { return live_tiles_rect_; } 129 gfx::Rect live_tiles_rect() const { return live_tiles_rect_; }
137 gfx::Size tile_size() const { return tiling_data_.max_texture_size(); } 130 gfx::Size tile_size() const { return tiling_data_.max_texture_size(); }
138 float contents_scale() const { return contents_scale_; } 131 float contents_scale() const { return contents_scale_; }
139 const TilingData* tiling_data() const { return &tiling_data_; } 132 const TilingData* tiling_data() const { return &tiling_data_; }
140 133
141 Tile* TileAt(int i, int j) const { 134 Tile* TileAt(int i, int j) const {
142 TileMap::const_iterator iter = tiles_.find(TileMapKey(i, j)); 135 TileMap::const_iterator iter = tiles_.find(TileMapKey(i, j));
143 return iter == tiles_.end() ? nullptr : iter->second; 136 return iter == tiles_.end() ? nullptr : iter->second.get();
144 } 137 }
145 138
146 bool has_tiles() const { return !tiles_.empty(); } 139 bool has_tiles() const { return !tiles_.empty(); }
147 // all_tiles_done() can return false negatives. 140 // all_tiles_done() can return false negatives.
148 bool all_tiles_done() const { return all_tiles_done_; } 141 bool all_tiles_done() const { return all_tiles_done_; }
149 void set_all_tiles_done(bool all_tiles_done) { 142 void set_all_tiles_done(bool all_tiles_done) {
150 all_tiles_done_ = all_tiles_done; 143 all_tiles_done_ = all_tiles_done;
151 } 144 }
152 145
153 void VerifyNoTileNeedsRaster() const { 146 void VerifyNoTileNeedsRaster() const {
154 #if DCHECK_IS_ON() 147 #if DCHECK_IS_ON()
155 for (const auto tile_pair : tiles_) { 148 for (const auto& tile_pair : tiles_) {
156 DCHECK(!tile_pair.second->draw_info().NeedsRaster() || 149 DCHECK(!tile_pair.second->draw_info().NeedsRaster() ||
157 IsTileOccluded(tile_pair.second)); 150 IsTileOccluded(tile_pair.second.get()));
158 } 151 }
159 #endif // DCHECK_IS_ON() 152 #endif // DCHECK_IS_ON()
160 } 153 }
161 154
162 // For testing functionality. 155 // For testing functionality.
163 void CreateAllTilesForTesting() { 156 void CreateAllTilesForTesting() {
164 SetLiveTilesRect(gfx::Rect(tiling_data_.tiling_size())); 157 SetLiveTilesRect(gfx::Rect(tiling_data_.tiling_size()));
165 } 158 }
166 const TilingData& TilingDataForTesting() const { return tiling_data_; } 159 const TilingData& TilingDataForTesting() const { return tiling_data_; }
167 std::vector<Tile*> AllTilesForTesting() const { 160 std::vector<Tile*> AllTilesForTesting() const {
168 std::vector<Tile*> all_tiles; 161 std::vector<Tile*> all_tiles;
169 for (TileMap::const_iterator it = tiles_.begin(); it != tiles_.end(); ++it) 162 for (TileMap::const_iterator it = tiles_.begin(); it != tiles_.end(); ++it)
170 all_tiles.push_back(it->second); 163 all_tiles.push_back(it->second.get());
171 return all_tiles; 164 return all_tiles;
172 } 165 }
173 166
174 void UpdateAllRequiredStateForTesting() { 167 void UpdateAllRequiredStateForTesting() {
175 for (const auto& key_tile_pair : tiles_) 168 for (const auto& key_tile_pair : tiles_)
176 UpdateRequiredStatesOnTile(key_tile_pair.second); 169 UpdateRequiredStatesOnTile(key_tile_pair.second.get());
177 } 170 }
178 std::map<const Tile*, PrioritizedTile> 171 std::map<const Tile*, PrioritizedTile>
179 UpdateAndGetAllPrioritizedTilesForTesting() const; 172 UpdateAndGetAllPrioritizedTilesForTesting() const;
180 173
181 void SetAllTilesOccludedForTesting() { 174 void SetAllTilesOccludedForTesting() {
182 gfx::Rect viewport_in_layer_space = 175 gfx::Rect viewport_in_layer_space =
183 ScaleToEnclosingRect(current_visible_rect_, 1.0f / contents_scale_); 176 ScaleToEnclosingRect(current_visible_rect_, 1.0f / contents_scale_);
184 current_occlusion_in_layer_space_ = 177 current_occlusion_in_layer_space_ =
185 Occlusion(gfx::Transform(), 178 Occlusion(gfx::Transform(),
186 SimpleEnclosedRegion(viewport_in_layer_space), 179 SimpleEnclosedRegion(viewport_in_layer_space),
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
267 // here. Note that when processing a pending tree, this rect is the same as 260 // here. Note that when processing a pending tree, this rect is the same as
268 // the visible rect so no tiles are processed in this case. 261 // the visible rect so no tiles are processed in this case.
269 enum PriorityRectType { 262 enum PriorityRectType {
270 VISIBLE_RECT, 263 VISIBLE_RECT,
271 PENDING_VISIBLE_RECT, 264 PENDING_VISIBLE_RECT,
272 SKEWPORT_RECT, 265 SKEWPORT_RECT,
273 SOON_BORDER_RECT, 266 SOON_BORDER_RECT,
274 EVENTUALLY_RECT 267 EVENTUALLY_RECT
275 }; 268 };
276 269
277 using TileMap = base::ScopedPtrHashMap<TileMapKey, ScopedTilePtr>; 270 using TileMap = std::unordered_map<TileMapKey, ScopedTilePtr, TileMapKeyHash>;
278 271
279 struct FrameVisibleRect { 272 struct FrameVisibleRect {
280 gfx::Rect visible_rect_in_content_space; 273 gfx::Rect visible_rect_in_content_space;
281 double frame_time_in_seconds = 0.0; 274 double frame_time_in_seconds = 0.0;
282 }; 275 };
283 276
284 PictureLayerTiling(WhichTree tree, 277 PictureLayerTiling(WhichTree tree,
285 float contents_scale, 278 float contents_scale,
286 scoped_refptr<DisplayListRasterSource> raster_source, 279 scoped_refptr<DisplayListRasterSource> raster_source,
287 PictureLayerTilingClient* client, 280 PictureLayerTilingClient* client,
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
406 float current_content_to_screen_scale_; 399 float current_content_to_screen_scale_;
407 Occlusion current_occlusion_in_layer_space_; 400 Occlusion current_occlusion_in_layer_space_;
408 401
409 bool has_visible_rect_tiles_; 402 bool has_visible_rect_tiles_;
410 bool has_skewport_rect_tiles_; 403 bool has_skewport_rect_tiles_;
411 bool has_soon_border_rect_tiles_; 404 bool has_soon_border_rect_tiles_;
412 bool has_eventually_rect_tiles_; 405 bool has_eventually_rect_tiles_;
413 bool all_tiles_done_; 406 bool all_tiles_done_;
414 407
415 private: 408 private:
416 DISALLOW_ASSIGN(PictureLayerTiling); 409 DISALLOW_COPY_AND_ASSIGN(PictureLayerTiling);
417 }; 410 };
418 411
419 } // namespace cc 412 } // namespace cc
420 413
421 #endif // CC_TILES_PICTURE_LAYER_TILING_H_ 414 #endif // CC_TILES_PICTURE_LAYER_TILING_H_
OLDNEW
« no previous file with comments | « cc/tiles/image_decode_controller.h ('k') | cc/tiles/picture_layer_tiling.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698