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

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: for review Created 4 years, 5 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
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);
157 VisibleTilingIterator(const VisibleTilingIterator& other) = default;
158 VisibleTilingIterator(VisibleTilingIterator&& other) = default;
159
160 VisibleTilingIterator& operator=(const VisibleTilingIterator& other) =
161 default;
162 VisibleTilingIterator& operator=(VisibleTilingIterator&& other) = default;
142 163
143 VisibleTilingIterator& operator++(); 164 VisibleTilingIterator& operator++();
144 165
145 private: 166 private:
146 bool TileMatchesRequiredFlags(const PrioritizedTile& tile) const; 167 bool TileMatchesRequiredFlags(const PrioritizedTile& tile) const;
147 168
148 TilingData::Iterator iterator_; 169 TilingData::Iterator iterator_;
149 bool return_occluded_tiles_; 170 bool return_occluded_tiles_;
150 bool return_required_for_activation_tiles_; 171 bool return_required_for_activation_tiles_;
151 }; 172 };
152 173
153 class SkewportTilingIterator : public EvictionRectIterator { 174 class SkewportTilingIterator : public EvictionRectIterator {
154 public: 175 public:
155 SkewportTilingIterator() = default; 176 SkewportTilingIterator() = default;
156 SkewportTilingIterator(std::vector<PictureLayerTiling*>* tilings, 177 SkewportTilingIterator(std::vector<PictureLayerTiling*>* tilings,
157 WhichTree tree); 178 WhichTree tree);
179 SkewportTilingIterator(const SkewportTilingIterator& other) = default;
180 SkewportTilingIterator(SkewportTilingIterator&& other) = default;
181
182 SkewportTilingIterator& operator=(const SkewportTilingIterator& other) =
183 default;
184 SkewportTilingIterator& operator=(SkewportTilingIterator&& other) = default;
158 185
159 SkewportTilingIterator& operator++(); 186 SkewportTilingIterator& operator++();
160 187
161 private: 188 private:
162 TilingData::ReverseSpiralDifferenceIterator iterator_; 189 TilingData::ReverseSpiralDifferenceIterator iterator_;
163 }; 190 };
164 191
165 class SoonBorderTilingIterator : public EvictionRectIterator { 192 class SoonBorderTilingIterator : public EvictionRectIterator {
166 public: 193 public:
167 SoonBorderTilingIterator() = default; 194 SoonBorderTilingIterator() = default;
168 SoonBorderTilingIterator(std::vector<PictureLayerTiling*>* tilings, 195 SoonBorderTilingIterator(std::vector<PictureLayerTiling*>* tilings,
169 WhichTree tree); 196 WhichTree tree);
197 SoonBorderTilingIterator(const SoonBorderTilingIterator& other) = default;
198 SoonBorderTilingIterator(SoonBorderTilingIterator&& other) = default;
199
200 SoonBorderTilingIterator& operator=(const SoonBorderTilingIterator& other) =
201 default;
202 SoonBorderTilingIterator& operator=(SoonBorderTilingIterator&& other) =
203 default;
170 204
171 SoonBorderTilingIterator& operator++(); 205 SoonBorderTilingIterator& operator++();
172 206
173 private: 207 private:
174 TilingData::ReverseSpiralDifferenceIterator iterator_; 208 TilingData::ReverseSpiralDifferenceIterator iterator_;
175 }; 209 };
176 210
177 class EventuallyTilingIterator : public EvictionRectIterator { 211 class EventuallyTilingIterator : public EvictionRectIterator {
178 public: 212 public:
179 EventuallyTilingIterator() = default; 213 EventuallyTilingIterator() = default;
180 EventuallyTilingIterator(std::vector<PictureLayerTiling*>* tilings, 214 EventuallyTilingIterator(std::vector<PictureLayerTiling*>* tilings,
181 WhichTree tree); 215 WhichTree tree);
216 EventuallyTilingIterator(const EventuallyTilingIterator& other) = default;
217 EventuallyTilingIterator(EventuallyTilingIterator&& other) = default;
218
219 EventuallyTilingIterator& operator=(const EventuallyTilingIterator& other) =
220 default;
221 EventuallyTilingIterator& operator=(EventuallyTilingIterator&& other) =
222 default;
182 223
183 EventuallyTilingIterator& operator++(); 224 EventuallyTilingIterator& operator++();
184 225
185 private: 226 private:
186 TilingData::ReverseSpiralDifferenceIterator iterator_; 227 TilingData::ReverseSpiralDifferenceIterator iterator_;
187 }; 228 };
188 229
189 void AdvancePhase(); 230 void AdvancePhase();
190 231
191 WhichTree tree_; 232 WhichTree tree_;
192 Phase phase_; 233 Phase phase_;
193 PrioritizedTile current_tile_; 234 PrioritizedTile current_tile_;
194 std::vector<PictureLayerTiling*> tilings_; 235 std::vector<PictureLayerTiling*> tilings_;
195 236
196 EventuallyTilingIterator eventually_iterator_; 237 EventuallyTilingIterator eventually_iterator_;
197 SoonBorderTilingIterator soon_iterator_; 238 SoonBorderTilingIterator soon_iterator_;
198 SkewportTilingIterator skewport_iterator_; 239 SkewportTilingIterator skewport_iterator_;
199 PendingVisibleTilingIterator pending_visible_iterator_; 240 PendingVisibleTilingIterator pending_visible_iterator_;
200 VisibleTilingIterator visible_iterator_; 241 VisibleTilingIterator visible_iterator_;
201 }; 242 };
202 243
203 } // namespace cc 244 } // namespace cc
204 245
205 #endif // CC_TILES_TILING_SET_EVICTION_QUEUE_H_ 246 #endif // CC_TILES_TILING_SET_EVICTION_QUEUE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698