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

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: update 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:
150 // PENDING VISIBLE RECT refers to the visible rect that will become current
151 // upon activation (ie, the pending tree's visible rect). Tiles in this
152 // region that are not part of the current visible rect are all handled
153 // here. Note that when processing a pending tree, this rect is the same as
154 // the visible rect so no tiles are processed in this case.
134 enum Phase { 155 enum Phase {
135 VISIBLE_RECT, 156 VISIBLE_RECT,
157 PENDING_VISIBLE_RECT,
136 SKEWPORT_RECT, 158 SKEWPORT_RECT,
137 SOON_BORDER_RECT, 159 SOON_BORDER_RECT,
138 EVENTUALLY_RECT 160 EVENTUALLY_RECT
139 }; 161 };
140 162
141 void AdvancePhase(); 163 void AdvancePhase();
142 164
143 PictureLayerTiling* tiling_; 165 PictureLayerTiling* tiling_;
144 TilingData* tiling_data_; 166 TilingData* tiling_data_;
145 167
146 Phase phase_; 168 Phase phase_;
147 169
148 Tile* current_tile_; 170 Tile* current_tile_;
149 VisibleTilingIterator visible_iterator_; 171 VisibleTilingIterator visible_iterator_;
172 PendingVisibleTilingIterator pending_visible_iterator_;
150 SkewportTilingIterator skewport_iterator_; 173 SkewportTilingIterator skewport_iterator_;
151 SoonBorderTilingIterator soon_border_iterator_; 174 SoonBorderTilingIterator soon_border_iterator_;
152 EventuallyTilingIterator eventually_iterator_; 175 EventuallyTilingIterator eventually_iterator_;
153 }; 176 };
154 177
155 enum IteratorType { LOW_RES, HIGH_RES, NUM_ITERATORS }; 178 enum IteratorType { LOW_RES, HIGH_RES, NUM_ITERATORS };
156 179
157 void AdvanceToNextStage(); 180 void AdvanceToNextStage();
158 181
159 PictureLayerTilingSet* tiling_set_; 182 PictureLayerTilingSet* tiling_set_;
160 183
161 struct IterationStage { 184 struct IterationStage {
162 IteratorType iterator_type; 185 IteratorType iterator_type;
163 TilePriority::PriorityBin tile_type; 186 TilePriority::PriorityBin tile_type;
164 }; 187 };
165 188
166 size_t current_stage_; 189 size_t current_stage_;
167 190
168 // One low res stage, and three high res stages. 191 // One low res stage, and three high res stages.
169 IterationStage stages_[4]; 192 IterationStage stages_[4];
170 TilingIterator iterators_[NUM_ITERATORS]; 193 TilingIterator iterators_[NUM_ITERATORS];
171 }; 194 };
172 195
173 } // namespace cc 196 } // namespace cc
174 197
175 #endif // CC_RESOURCES_TILING_SET_RASTER_QUEUE_ALL_H_ 198 #endif // CC_RESOURCES_TILING_SET_RASTER_QUEUE_ALL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698