| 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 |