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

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

Issue 1051993002: cc: Remove tile sharing from tilings. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 8 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_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 "cc/base/cc_export.h" 8 #include "cc/base/cc_export.h"
9 #include "cc/resources/picture_layer_tiling_set.h" 9 #include "cc/resources/picture_layer_tiling_set.h"
10 #include "cc/resources/tile.h" 10 #include "cc/resources/tile.h"
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 public: 57 public:
58 VisibleTilingIterator() = default; 58 VisibleTilingIterator() = default;
59 VisibleTilingIterator(PictureLayerTiling* tiling, TilingData* tiling_data); 59 VisibleTilingIterator(PictureLayerTiling* tiling, TilingData* tiling_data);
60 60
61 VisibleTilingIterator& operator++(); 61 VisibleTilingIterator& operator++();
62 62
63 private: 63 private:
64 TilingData::Iterator iterator_; 64 TilingData::Iterator iterator_;
65 }; 65 };
66 66
67 class PendingVisibleTilingIterator : public OnePriorityRectIterator {
68 public:
69 PendingVisibleTilingIterator() = default;
70 PendingVisibleTilingIterator(PictureLayerTiling* tiling,
71 TilingData* tiling_data);
72
73 PendingVisibleTilingIterator& operator++();
74
75 private:
76 TilingData::DifferenceIterator iterator_;
77 };
78
67 // Iterates over skewport only, spiral around the visible rect. 79 // Iterates over skewport only, spiral around the visible rect.
68 class SkewportTilingIterator : public OnePriorityRectIterator { 80 class SkewportTilingIterator : public OnePriorityRectIterator {
69 public: 81 public:
70 SkewportTilingIterator() = default; 82 SkewportTilingIterator() = default;
71 SkewportTilingIterator(PictureLayerTiling* tiling, TilingData* tiling_data); 83 SkewportTilingIterator(PictureLayerTiling* tiling, TilingData* tiling_data);
72 84
73 SkewportTilingIterator& operator++(); 85 SkewportTilingIterator& operator++();
74 86
75 private: 87 private:
76 TilingData::SpiralDifferenceIterator iterator_; 88 TilingData::SpiralDifferenceIterator iterator_;
89 gfx::Rect pending_visible_rect_;
77 }; 90 };
78 91
79 // Iterates over soon border only, spiral around the visible rect. 92 // Iterates over soon border only, spiral around the visible rect.
80 class SoonBorderTilingIterator : public OnePriorityRectIterator { 93 class SoonBorderTilingIterator : public OnePriorityRectIterator {
81 public: 94 public:
82 SoonBorderTilingIterator() = default; 95 SoonBorderTilingIterator() = default;
83 SoonBorderTilingIterator(PictureLayerTiling* tiling, 96 SoonBorderTilingIterator(PictureLayerTiling* tiling,
84 TilingData* tiling_data); 97 TilingData* tiling_data);
85 98
86 SoonBorderTilingIterator& operator++(); 99 SoonBorderTilingIterator& operator++();
87 100
88 private: 101 private:
89 TilingData::SpiralDifferenceIterator iterator_; 102 TilingData::SpiralDifferenceIterator iterator_;
103 gfx::Rect pending_visible_rect_;
90 }; 104 };
91 105
92 // Iterates over eventually rect only, spiral around the soon rect. 106 // Iterates over eventually rect only, spiral around the soon rect.
93 class EventuallyTilingIterator : public OnePriorityRectIterator { 107 class EventuallyTilingIterator : public OnePriorityRectIterator {
94 public: 108 public:
95 EventuallyTilingIterator() = default; 109 EventuallyTilingIterator() = default;
96 EventuallyTilingIterator(PictureLayerTiling* tiling, 110 EventuallyTilingIterator(PictureLayerTiling* tiling,
97 TilingData* tiling_data); 111 TilingData* tiling_data);
98 112
99 EventuallyTilingIterator& operator++(); 113 EventuallyTilingIterator& operator++();
100 114
101 private: 115 private:
102 TilingData::SpiralDifferenceIterator iterator_; 116 TilingData::SpiralDifferenceIterator iterator_;
117 gfx::Rect pending_visible_rect_;
103 }; 118 };
104 119
105 // Iterates over all of the above phases in the following order: visible, 120 // Iterates over all of the above phases in the following order: visible,
106 // skewport, soon border, eventually. 121 // skewport, soon border, eventually.
107 class TilingIterator { 122 class TilingIterator {
108 public: 123 public:
109 TilingIterator(); 124 TilingIterator();
110 explicit TilingIterator(PictureLayerTiling* tiling, 125 explicit TilingIterator(PictureLayerTiling* tiling,
111 TilingData* tiling_data); 126 TilingData* tiling_data);
112 ~TilingIterator() = default; 127 ~TilingIterator();
113 128
114 bool done() const { return current_tile_ == nullptr; } 129 bool done() const { return current_tile_ == nullptr; }
115 const Tile* operator*() const { return current_tile_; } 130 const Tile* operator*() const { return current_tile_; }
116 Tile* operator*() { return current_tile_; } 131 Tile* operator*() { return current_tile_; }
117 TilePriority::PriorityBin type() const { 132 TilePriority::PriorityBin type() const {
118 switch (phase_) { 133 switch (phase_) {
119 case VISIBLE_RECT: 134 case VISIBLE_RECT:
120 return TilePriority::NOW; 135 return TilePriority::NOW;
136 case PENDING_VISIBLE_RECT:
121 case SKEWPORT_RECT: 137 case SKEWPORT_RECT:
122 case SOON_BORDER_RECT: 138 case SOON_BORDER_RECT:
123 return TilePriority::SOON; 139 return TilePriority::SOON;
124 case EVENTUALLY_RECT: 140 case EVENTUALLY_RECT:
125 return TilePriority::EVENTUALLY; 141 return TilePriority::EVENTUALLY;
126 } 142 }
127 NOTREACHED(); 143 NOTREACHED();
128 return TilePriority::EVENTUALLY; 144 return TilePriority::EVENTUALLY;
129 } 145 }
130 146
131 TilingIterator& operator++(); 147 TilingIterator& operator++();
132 148
133 private: 149 private:
134 enum Phase { 150 enum Phase {
135 VISIBLE_RECT, 151 VISIBLE_RECT,
enne (OOO) 2015/04/02 21:45:34 Should this be ACTIVE_VISIBLE_RECT?
152 PENDING_VISIBLE_RECT,
enne (OOO) 2015/04/02 21:45:34 This is nice!
136 SKEWPORT_RECT, 153 SKEWPORT_RECT,
137 SOON_BORDER_RECT, 154 SOON_BORDER_RECT,
138 EVENTUALLY_RECT 155 EVENTUALLY_RECT
139 }; 156 };
140 157
141 void AdvancePhase(); 158 void AdvancePhase();
142 159
143 PictureLayerTiling* tiling_; 160 PictureLayerTiling* tiling_;
144 TilingData* tiling_data_; 161 TilingData* tiling_data_;
145 162
146 Phase phase_; 163 Phase phase_;
147 164
148 Tile* current_tile_; 165 Tile* current_tile_;
149 VisibleTilingIterator visible_iterator_; 166 VisibleTilingIterator visible_iterator_;
167 PendingVisibleTilingIterator pending_visible_iterator_;
150 SkewportTilingIterator skewport_iterator_; 168 SkewportTilingIterator skewport_iterator_;
151 SoonBorderTilingIterator soon_border_iterator_; 169 SoonBorderTilingIterator soon_border_iterator_;
152 EventuallyTilingIterator eventually_iterator_; 170 EventuallyTilingIterator eventually_iterator_;
153 }; 171 };
154 172
155 enum IteratorType { LOW_RES, HIGH_RES, NUM_ITERATORS }; 173 enum IteratorType { LOW_RES, HIGH_RES, NUM_ITERATORS };
156 174
157 void AdvanceToNextStage(); 175 void AdvanceToNextStage();
158 176
159 PictureLayerTilingSet* tiling_set_; 177 PictureLayerTilingSet* tiling_set_;
160 178
161 struct IterationStage { 179 struct IterationStage {
162 IteratorType iterator_type; 180 IteratorType iterator_type;
163 TilePriority::PriorityBin tile_type; 181 TilePriority::PriorityBin tile_type;
164 }; 182 };
165 183
166 size_t current_stage_; 184 size_t current_stage_;
167 185
168 // One low res stage, and three high res stages. 186 // One low res stage, and three high res stages.
169 IterationStage stages_[4]; 187 IterationStage stages_[4];
170 TilingIterator iterators_[NUM_ITERATORS]; 188 TilingIterator iterators_[NUM_ITERATORS];
171 }; 189 };
172 190
173 } // namespace cc 191 } // namespace cc
174 192
175 #endif // CC_RESOURCES_TILING_SET_RASTER_QUEUE_ALL_H_ 193 #endif // CC_RESOURCES_TILING_SET_RASTER_QUEUE_ALL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698