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

Side by Side Diff: cc/resources/tiling_set_raster_queue_all.h

Issue 1130123003: cc: Separate the priority from the tile and put in new PrioritizedTile (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: merge Created 5 years, 7 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/resources/tiling_set_eviction_queue.cc ('k') | cc/resources/tiling_set_raster_queue_all.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_RESOURCES_TILING_SET_RASTER_QUEUE_ALL_H_ 5 #ifndef CC_RESOURCES_TILING_SET_RASTER_QUEUE_ALL_H_
6 #define CC_RESOURCES_TILING_SET_RASTER_QUEUE_ALL_H_ 6 #define CC_RESOURCES_TILING_SET_RASTER_QUEUE_ALL_H_
7 7
8 #include "base/containers/stack_container.h" 8 #include "base/containers/stack_container.h"
9 #include "cc/base/cc_export.h" 9 #include "cc/base/cc_export.h"
10 #include "cc/resources/picture_layer_tiling_set.h" 10 #include "cc/resources/picture_layer_tiling_set.h"
11 #include "cc/resources/prioritized_tile.h"
11 #include "cc/resources/tile.h" 12 #include "cc/resources/tile.h"
12 #include "cc/resources/tile_priority.h" 13 #include "cc/resources/tile_priority.h"
13 14
14 namespace cc { 15 namespace cc {
15 16
16 // This queue returns all tiles required to be rasterized from HIGH_RESOLUTION 17 // This queue returns all tiles required to be rasterized from HIGH_RESOLUTION
17 // and LOW_RESOLUTION tilings. 18 // and LOW_RESOLUTION tilings.
18 class CC_EXPORT TilingSetRasterQueueAll { 19 class CC_EXPORT TilingSetRasterQueueAll {
19 public: 20 public:
20 TilingSetRasterQueueAll(PictureLayerTilingSet* tiling_set, 21 TilingSetRasterQueueAll(PictureLayerTilingSet* tiling_set,
21 bool prioritize_low_res); 22 bool prioritize_low_res);
22 ~TilingSetRasterQueueAll(); 23 ~TilingSetRasterQueueAll();
23 24
24 Tile* Top(); 25 const PrioritizedTile& Top() const;
25 const Tile* Top() const;
26 void Pop(); 26 void Pop();
27 bool IsEmpty() const; 27 bool IsEmpty() const;
28 28
29 private: 29 private:
30 // Helper base class for individual region iterators. 30 // Helper base class for individual region iterators.
31 class OnePriorityRectIterator { 31 class OnePriorityRectIterator {
32 public: 32 public:
33 OnePriorityRectIterator(); 33 OnePriorityRectIterator();
34 OnePriorityRectIterator(PictureLayerTiling* tiling, 34 OnePriorityRectIterator(PictureLayerTiling* tiling,
35 TilingData* tiling_data); 35 TilingData* tiling_data);
36 36
37 bool done() const { return !tile_; } 37 bool done() const { return !current_tile_.tile(); }
38 Tile* operator*() const { return tile_; } 38 const PrioritizedTile& operator*() const { return current_tile_; }
39 39
40 protected: 40 protected:
41 ~OnePriorityRectIterator() = default; 41 ~OnePriorityRectIterator() = default;
42 bool TileNeedsRaster(Tile* tile) const { 42 bool TileNeedsRaster(Tile* tile) const {
43 return tile->NeedsRaster() && !tiling_->IsTileOccluded(tile); 43 return tile->NeedsRaster() && !tiling_->IsTileOccluded(tile);
44 } 44 }
45 45
46 template <typename TilingIteratorType> 46 template <typename TilingIteratorType>
47 void AdvanceToNextTile(TilingIteratorType* iterator); 47 void AdvanceToNextTile(TilingIteratorType* iterator);
48 template <typename TilingIteratorType> 48 template <typename TilingIteratorType>
49 bool GetFirstTileAndCheckIfValid(TilingIteratorType* iterator); 49 bool GetFirstTileAndCheckIfValid(TilingIteratorType* iterator);
50 50
51 Tile* tile_; 51 PrioritizedTile current_tile_;
52 PictureLayerTiling* tiling_; 52 PictureLayerTiling* tiling_;
53 TilingData* tiling_data_; 53 TilingData* tiling_data_;
54 }; 54 };
55 55
56 // Iterates over visible rect only, left to right top to bottom order. 56 // Iterates over visible rect only, left to right top to bottom order.
57 class VisibleTilingIterator : public OnePriorityRectIterator { 57 class VisibleTilingIterator : public OnePriorityRectIterator {
58 public: 58 public:
59 VisibleTilingIterator() = default; 59 VisibleTilingIterator() = default;
60 VisibleTilingIterator(PictureLayerTiling* tiling, TilingData* tiling_data); 60 VisibleTilingIterator(PictureLayerTiling* tiling, TilingData* tiling_data);
61 61
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 120
121 // Iterates over all of the above phases in the following order: visible, 121 // Iterates over all of the above phases in the following order: visible,
122 // skewport, soon border, eventually. 122 // skewport, soon border, eventually.
123 class TilingIterator { 123 class TilingIterator {
124 public: 124 public:
125 TilingIterator(); 125 TilingIterator();
126 explicit TilingIterator(PictureLayerTiling* tiling, 126 explicit TilingIterator(PictureLayerTiling* tiling,
127 TilingData* tiling_data); 127 TilingData* tiling_data);
128 ~TilingIterator(); 128 ~TilingIterator();
129 129
130 bool done() const { return current_tile_ == nullptr; } 130 bool done() const { return !current_tile_.tile(); }
131 const Tile* operator*() const { return current_tile_; } 131 const PrioritizedTile& operator*() const { return current_tile_; }
132 Tile* operator*() { return current_tile_; }
133 TilePriority::PriorityBin type() const { 132 TilePriority::PriorityBin type() const {
134 switch (phase_) { 133 switch (phase_) {
135 case VISIBLE_RECT: 134 case VISIBLE_RECT:
136 return TilePriority::NOW; 135 return TilePriority::NOW;
137 case PENDING_VISIBLE_RECT: 136 case PENDING_VISIBLE_RECT:
138 case SKEWPORT_RECT: 137 case SKEWPORT_RECT:
139 case SOON_BORDER_RECT: 138 case SOON_BORDER_RECT:
140 return TilePriority::SOON; 139 return TilePriority::SOON;
141 case EVENTUALLY_RECT: 140 case EVENTUALLY_RECT:
142 return TilePriority::EVENTUALLY; 141 return TilePriority::EVENTUALLY;
(...skipping 18 matching lines...) Expand all
161 EVENTUALLY_RECT 160 EVENTUALLY_RECT
162 }; 161 };
163 162
164 void AdvancePhase(); 163 void AdvancePhase();
165 164
166 PictureLayerTiling* tiling_; 165 PictureLayerTiling* tiling_;
167 TilingData* tiling_data_; 166 TilingData* tiling_data_;
168 167
169 Phase phase_; 168 Phase phase_;
170 169
171 Tile* current_tile_; 170 PrioritizedTile current_tile_;
172 VisibleTilingIterator visible_iterator_; 171 VisibleTilingIterator visible_iterator_;
173 PendingVisibleTilingIterator pending_visible_iterator_; 172 PendingVisibleTilingIterator pending_visible_iterator_;
174 SkewportTilingIterator skewport_iterator_; 173 SkewportTilingIterator skewport_iterator_;
175 SoonBorderTilingIterator soon_border_iterator_; 174 SoonBorderTilingIterator soon_border_iterator_;
176 EventuallyTilingIterator eventually_iterator_; 175 EventuallyTilingIterator eventually_iterator_;
177 }; 176 };
178 177
179 enum IteratorType { 178 enum IteratorType {
180 LOW_RES, 179 LOW_RES,
181 HIGH_RES, 180 HIGH_RES,
(...skipping 15 matching lines...) Expand all
197 196
198 // The max number of stages is 6: 1 low res, 3 high res, and 2 active non 197 // The max number of stages is 6: 1 low res, 3 high res, and 2 active non
199 // ideal pending high res. 198 // ideal pending high res.
200 base::StackVector<IterationStage, 6> stages_; 199 base::StackVector<IterationStage, 6> stages_;
201 TilingIterator iterators_[NUM_ITERATORS]; 200 TilingIterator iterators_[NUM_ITERATORS];
202 }; 201 };
203 202
204 } // namespace cc 203 } // namespace cc
205 204
206 #endif // CC_RESOURCES_TILING_SET_RASTER_QUEUE_ALL_H_ 205 #endif // CC_RESOURCES_TILING_SET_RASTER_QUEUE_ALL_H_
OLDNEW
« no previous file with comments | « cc/resources/tiling_set_eviction_queue.cc ('k') | cc/resources/tiling_set_raster_queue_all.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698