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

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

Issue 2067213002: cc: Implement tile iteration order based on pyramid sequence. [old] Base URL: https://chromium.googlesource.com/chromium/src.git@tiling_data_fix
Patch Set: rebase -> used for smoothness tests Created 3 years, 10 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/tile_manager_unittest.cc ('k') | cc/tiles/tiling_set_eviction_queue.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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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_TILING_SET_EVICTION_QUEUE_H_ 5 #ifndef CC_TILES_TILING_SET_EVICTION_QUEUE_H_
6 #define CC_TILES_TILING_SET_EVICTION_QUEUE_H_ 6 #define CC_TILES_TILING_SET_EVICTION_QUEUE_H_
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 9
10 #include <vector> 10 #include <vector>
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 void GenerateTilingOrder(PictureLayerTilingSet* tiling_set); 90 void GenerateTilingOrder(PictureLayerTilingSet* tiling_set);
91 91
92 // Helper base class for individual region iterators. 92 // Helper base class for individual region iterators.
93 class EvictionRectIterator { 93 class EvictionRectIterator {
94 public: 94 public:
95 EvictionRectIterator(); 95 EvictionRectIterator();
96 EvictionRectIterator( 96 EvictionRectIterator(
97 std::vector<PictureLayerTiling*>* tilings, 97 std::vector<PictureLayerTiling*>* tilings,
98 WhichTree tree, 98 WhichTree tree,
99 PictureLayerTiling::PriorityRectType priority_rect_type); 99 PictureLayerTiling::PriorityRectType priority_rect_type);
100 EvictionRectIterator(const EvictionRectIterator& other) = default;
101 EvictionRectIterator(EvictionRectIterator&& other) = default;
102
103 EvictionRectIterator& operator=(const EvictionRectIterator& other) =
104 default;
105 EvictionRectIterator& operator=(EvictionRectIterator&& other) = default;
100 106
101 bool done() const { return !prioritized_tile_.tile(); } 107 bool done() const { return !prioritized_tile_.tile(); }
102 const PrioritizedTile& operator*() const { return prioritized_tile_; } 108 const PrioritizedTile& operator*() const { return prioritized_tile_; }
103 109
104 protected: 110 protected:
105 ~EvictionRectIterator() = default; 111 ~EvictionRectIterator() = default;
106 112
107 template <typename TilingIteratorType> 113 template <typename TilingIteratorType>
108 bool AdvanceToNextTile(TilingIteratorType* iterator); 114 bool AdvanceToNextTile(TilingIteratorType* iterator);
109 template <typename TilingIteratorType> 115 template <typename TilingIteratorType>
110 bool GetFirstTileAndCheckIfValid(TilingIteratorType* iterator); 116 bool GetFirstTileAndCheckIfValid(TilingIteratorType* iterator);
111 117
112 PrioritizedTile prioritized_tile_; 118 PrioritizedTile prioritized_tile_;
113 std::vector<PictureLayerTiling*>* tilings_; 119 std::vector<PictureLayerTiling*>* tilings_;
114 WhichTree tree_; 120 WhichTree tree_;
115 PictureLayerTiling::PriorityRectType priority_rect_type_; 121 PictureLayerTiling::PriorityRectType priority_rect_type_;
116 size_t tiling_index_; 122 size_t tiling_index_;
117 }; 123 };
118 124
119 class PendingVisibleTilingIterator : public EvictionRectIterator { 125 class PendingVisibleTilingIterator : public EvictionRectIterator {
120 public: 126 public:
121 PendingVisibleTilingIterator() = default; 127 PendingVisibleTilingIterator() = default;
122 PendingVisibleTilingIterator(std::vector<PictureLayerTiling*>* tilings, 128 PendingVisibleTilingIterator(std::vector<PictureLayerTiling*>* tilings,
123 WhichTree tree, 129 WhichTree tree,
124 bool return_required_for_activation_tiles); 130 bool return_required_for_activation_tiles);
131 PendingVisibleTilingIterator(const PendingVisibleTilingIterator& other) =
132 default;
133 PendingVisibleTilingIterator(PendingVisibleTilingIterator&& other) =
134 default;
135
136 PendingVisibleTilingIterator& operator=(
137 const PendingVisibleTilingIterator& other) = default;
138 PendingVisibleTilingIterator& operator=(
139 PendingVisibleTilingIterator&& other) = default;
125 140
126 PendingVisibleTilingIterator& operator++(); 141 PendingVisibleTilingIterator& operator++();
127 142
128 private: 143 private:
129 bool TileMatchesRequiredFlags(const PrioritizedTile& tile) const; 144 bool TileMatchesRequiredFlags(const PrioritizedTile& tile) const;
130 145
131 TilingData::DifferenceIterator iterator_; 146 TilingData::DifferenceIterator iterator_;
132 bool return_required_for_activation_tiles_; 147 bool return_required_for_activation_tiles_;
133 }; 148 };
134 149
135 class VisibleTilingIterator : public EvictionRectIterator { 150 class VisibleTilingIterator : public EvictionRectIterator {
136 public: 151 public:
137 VisibleTilingIterator() = default; 152 VisibleTilingIterator() = default;
138 VisibleTilingIterator(std::vector<PictureLayerTiling*>* tilings, 153 VisibleTilingIterator(std::vector<PictureLayerTiling*>* tilings,
139 WhichTree tree, 154 WhichTree tree,
140 bool return_occluded_tiles, 155 bool return_occluded_tiles,
141 bool return_required_for_activation_tiles); 156 bool return_required_for_activation_tiles);
142 157
158 VisibleTilingIterator(const VisibleTilingIterator& other) = default;
159 VisibleTilingIterator(VisibleTilingIterator&& other) = default;
160
161 VisibleTilingIterator& operator=(const VisibleTilingIterator& other) =
162 default;
163 VisibleTilingIterator& operator=(VisibleTilingIterator&& other) = default;
164
143 VisibleTilingIterator& operator++(); 165 VisibleTilingIterator& operator++();
144 166
145 private: 167 private:
146 bool TileMatchesRequiredFlags(const PrioritizedTile& tile) const; 168 bool TileMatchesRequiredFlags(const PrioritizedTile& tile) const;
147 169
148 TilingData::Iterator iterator_; 170 TilingData::Iterator iterator_;
149 bool return_occluded_tiles_; 171 bool return_occluded_tiles_;
150 bool return_required_for_activation_tiles_; 172 bool return_required_for_activation_tiles_;
151 }; 173 };
152 174
153 class SkewportTilingIterator : public EvictionRectIterator { 175 class SkewportTilingIterator : public EvictionRectIterator {
154 public: 176 public:
155 SkewportTilingIterator() = default; 177 SkewportTilingIterator() = default;
156 SkewportTilingIterator(std::vector<PictureLayerTiling*>* tilings, 178 SkewportTilingIterator(std::vector<PictureLayerTiling*>* tilings,
157 WhichTree tree); 179 WhichTree tree);
180 SkewportTilingIterator(const SkewportTilingIterator& other) = default;
181 SkewportTilingIterator(SkewportTilingIterator&& other) = default;
182
183 SkewportTilingIterator& operator=(const SkewportTilingIterator& other) =
184 default;
185 SkewportTilingIterator& operator=(SkewportTilingIterator&& other) = default;
158 186
159 SkewportTilingIterator& operator++(); 187 SkewportTilingIterator& operator++();
160 188
161 private: 189 private:
162 TilingData::ReverseSpiralDifferenceIterator iterator_; 190 TilingData::ReverseSpiralDifferenceIterator iterator_;
163 }; 191 };
164 192
165 class SoonBorderTilingIterator : public EvictionRectIterator { 193 class SoonBorderTilingIterator : public EvictionRectIterator {
166 public: 194 public:
167 SoonBorderTilingIterator() = default; 195 SoonBorderTilingIterator() = default;
168 SoonBorderTilingIterator(std::vector<PictureLayerTiling*>* tilings, 196 SoonBorderTilingIterator(std::vector<PictureLayerTiling*>* tilings,
169 WhichTree tree); 197 WhichTree tree);
198 SoonBorderTilingIterator(const SoonBorderTilingIterator& other) = default;
199 SoonBorderTilingIterator(SoonBorderTilingIterator&& other) = default;
200
201 SoonBorderTilingIterator& operator=(const SoonBorderTilingIterator& other) =
202 default;
203 SoonBorderTilingIterator& operator=(SoonBorderTilingIterator&& other) =
204 default;
170 205
171 SoonBorderTilingIterator& operator++(); 206 SoonBorderTilingIterator& operator++();
172 207
173 private: 208 private:
174 TilingData::ReverseSpiralDifferenceIterator iterator_; 209 TilingData::ReverseSpiralDifferenceIterator iterator_;
175 }; 210 };
176 211
177 class EventuallyTilingIterator : public EvictionRectIterator { 212 class EventuallyTilingIterator : public EvictionRectIterator {
178 public: 213 public:
179 EventuallyTilingIterator() = default; 214 EventuallyTilingIterator() = default;
180 EventuallyTilingIterator(std::vector<PictureLayerTiling*>* tilings, 215 EventuallyTilingIterator(std::vector<PictureLayerTiling*>* tilings,
181 WhichTree tree); 216 WhichTree tree);
217 EventuallyTilingIterator(const EventuallyTilingIterator& other) = default;
218 EventuallyTilingIterator(EventuallyTilingIterator&& other) = default;
219
220 EventuallyTilingIterator& operator=(const EventuallyTilingIterator& other) =
221 default;
222 EventuallyTilingIterator& operator=(EventuallyTilingIterator&& other) =
223 default;
182 224
183 EventuallyTilingIterator& operator++(); 225 EventuallyTilingIterator& operator++();
184 226
185 private: 227 private:
186 TilingData::ReverseSpiralDifferenceIterator iterator_; 228 TilingData::ReverseSpiralDifferenceIterator iterator_;
187 }; 229 };
188 230
189 void AdvancePhase(); 231 void AdvancePhase();
190 232
191 WhichTree tree_; 233 WhichTree tree_;
192 Phase phase_; 234 Phase phase_;
193 PrioritizedTile current_tile_; 235 PrioritizedTile current_tile_;
194 std::vector<PictureLayerTiling*> tilings_; 236 std::vector<PictureLayerTiling*> tilings_;
195 237
196 EventuallyTilingIterator eventually_iterator_; 238 EventuallyTilingIterator eventually_iterator_;
197 SoonBorderTilingIterator soon_iterator_; 239 SoonBorderTilingIterator soon_iterator_;
198 SkewportTilingIterator skewport_iterator_; 240 SkewportTilingIterator skewport_iterator_;
199 PendingVisibleTilingIterator pending_visible_iterator_; 241 PendingVisibleTilingIterator pending_visible_iterator_;
200 VisibleTilingIterator visible_iterator_; 242 VisibleTilingIterator visible_iterator_;
201 }; 243 };
202 244
203 } // namespace cc 245 } // namespace cc
204 246
205 #endif // CC_TILES_TILING_SET_EVICTION_QUEUE_H_ 247 #endif // CC_TILES_TILING_SET_EVICTION_QUEUE_H_
OLDNEW
« no previous file with comments | « cc/tiles/tile_manager_unittest.cc ('k') | cc/tiles/tiling_set_eviction_queue.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698