OLD | NEW |
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 Loading... |
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_ |
OLD | NEW |