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

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

Issue 1108773003: Revert of 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 #include "cc/resources/tiling_set_raster_queue_all.h" 5 #include "cc/resources/tiling_set_raster_queue_all.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
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"
11 #include "cc/resources/tile_priority.h" 11 #include "cc/resources/tile_priority.h"
12 12
13 namespace cc { 13 namespace cc {
14 14
15 TilingSetRasterQueueAll::IterationStage::IterationStage(
16 IteratorType type,
17 TilePriority::PriorityBin bin)
18 : iterator_type(type), tile_type(bin) {
19 }
20
21 TilingSetRasterQueueAll::TilingSetRasterQueueAll( 15 TilingSetRasterQueueAll::TilingSetRasterQueueAll(
22 PictureLayerTilingSet* tiling_set, 16 PictureLayerTilingSet* tiling_set,
23 bool prioritize_low_res) 17 bool prioritize_low_res)
24 : tiling_set_(tiling_set), current_stage_(0) { 18 : tiling_set_(tiling_set), current_stage_(0) {
25 DCHECK(tiling_set_); 19 DCHECK(tiling_set_);
26 20
27 // Early out if the tiling set has no tilings. 21 // Early out if the tiling set has no tilings.
28 if (!tiling_set_->num_tilings()) 22 if (!tiling_set_->num_tilings()) {
23 current_stage_ = arraysize(stages_);
29 return; 24 return;
25 }
30 26
31 const PictureLayerTilingClient* client = tiling_set->client();
32 WhichTree tree = client->GetTree();
33 // Find high and low res tilings and initialize the iterators. 27 // Find high and low res tilings and initialize the iterators.
34 PictureLayerTiling* high_res_tiling = nullptr;
35 PictureLayerTiling* low_res_tiling = nullptr;
36 // This variable would point to a tiling that has a NON_IDEAL_RESOLUTION
37 // resolution on the active tree, but HIGH_RESOLUTION on the pending tree.
38 // These tilings are the only non-ideal tilings that could have required for
39 // activation tiles, so they need to be considered for rasterization.
40 PictureLayerTiling* active_non_ideal_pending_high_res_tiling = nullptr;
41 for (size_t i = 0; i < tiling_set_->num_tilings(); ++i) { 28 for (size_t i = 0; i < tiling_set_->num_tilings(); ++i) {
42 PictureLayerTiling* tiling = tiling_set_->tiling_at(i); 29 PictureLayerTiling* tiling = tiling_set_->tiling_at(i);
43 if (tiling->resolution() == HIGH_RESOLUTION) 30 if (tiling->resolution() == HIGH_RESOLUTION)
44 high_res_tiling = tiling; 31 iterators_[HIGH_RES] = TilingIterator(tiling, &tiling->tiling_data_);
45 if (prioritize_low_res && tiling->resolution() == LOW_RESOLUTION) 32 if (prioritize_low_res && tiling->resolution() == LOW_RESOLUTION)
46 low_res_tiling = tiling; 33 iterators_[LOW_RES] = TilingIterator(tiling, &tiling->tiling_data_);
47 if (tree == ACTIVE_TREE && tiling->resolution() == NON_IDEAL_RESOLUTION) {
48 const PictureLayerTiling* twin =
49 client->GetPendingOrActiveTwinTiling(tiling);
50 if (twin && twin->resolution() == HIGH_RESOLUTION)
51 active_non_ideal_pending_high_res_tiling = tiling;
52 }
53 } 34 }
54 35
55 bool use_low_res_tiling = low_res_tiling && low_res_tiling->has_tiles(); 36 if (prioritize_low_res) {
56 if (use_low_res_tiling && prioritize_low_res) { 37 stages_[0].iterator_type = LOW_RES;
57 iterators_[LOW_RES] = 38 stages_[0].tile_type = TilePriority::NOW;
58 TilingIterator(low_res_tiling, &low_res_tiling->tiling_data_); 39
59 stages_->push_back(IterationStage(LOW_RES, TilePriority::NOW)); 40 stages_[1].iterator_type = HIGH_RES;
41 stages_[1].tile_type = TilePriority::NOW;
42 } else {
43 stages_[0].iterator_type = HIGH_RES;
44 stages_[0].tile_type = TilePriority::NOW;
45
46 stages_[1].iterator_type = LOW_RES;
47 stages_[1].tile_type = TilePriority::NOW;
60 } 48 }
61 49
62 DCHECK(high_res_tiling); 50 stages_[2].iterator_type = HIGH_RES;
63 bool use_high_res_tiling = high_res_tiling->has_tiles(); 51 stages_[2].tile_type = TilePriority::SOON;
64 if (use_high_res_tiling) {
65 iterators_[HIGH_RES] =
66 TilingIterator(high_res_tiling, &high_res_tiling->tiling_data_);
67 stages_->push_back(IterationStage(HIGH_RES, TilePriority::NOW));
68 }
69 52
70 if (low_res_tiling && !prioritize_low_res) { 53 stages_[3].iterator_type = HIGH_RES;
71 iterators_[LOW_RES] = 54 stages_[3].tile_type = TilePriority::EVENTUALLY;
72 TilingIterator(low_res_tiling, &low_res_tiling->tiling_data_);
73 stages_->push_back(IterationStage(LOW_RES, TilePriority::NOW));
74 }
75
76 if (active_non_ideal_pending_high_res_tiling &&
77 active_non_ideal_pending_high_res_tiling->has_tiles()) {
78 iterators_[ACTIVE_NON_IDEAL_PENDING_HIGH_RES] =
79 TilingIterator(active_non_ideal_pending_high_res_tiling,
80 &active_non_ideal_pending_high_res_tiling->tiling_data_);
81
82 stages_->push_back(
83 IterationStage(ACTIVE_NON_IDEAL_PENDING_HIGH_RES, TilePriority::NOW));
84 stages_->push_back(
85 IterationStage(ACTIVE_NON_IDEAL_PENDING_HIGH_RES, TilePriority::SOON));
86 }
87
88 if (use_high_res_tiling) {
89 stages_->push_back(IterationStage(HIGH_RES, TilePriority::SOON));
90 stages_->push_back(IterationStage(HIGH_RES, TilePriority::EVENTUALLY));
91 }
92
93 if (stages_->empty())
94 return;
95 55
96 IteratorType index = stages_[current_stage_].iterator_type; 56 IteratorType index = stages_[current_stage_].iterator_type;
97 TilePriority::PriorityBin tile_type = stages_[current_stage_].tile_type; 57 TilePriority::PriorityBin tile_type = stages_[current_stage_].tile_type;
98 if (iterators_[index].done() || iterators_[index].type() != tile_type) 58 if (iterators_[index].done() || iterators_[index].type() != tile_type)
99 AdvanceToNextStage(); 59 AdvanceToNextStage();
100 } 60 }
101 61
102 TilingSetRasterQueueAll::~TilingSetRasterQueueAll() { 62 TilingSetRasterQueueAll::~TilingSetRasterQueueAll() {
103 } 63 }
104 64
105 bool TilingSetRasterQueueAll::IsEmpty() const { 65 bool TilingSetRasterQueueAll::IsEmpty() const {
106 return current_stage_ >= stages_->size(); 66 return current_stage_ >= arraysize(stages_);
107 } 67 }
108 68
109 void TilingSetRasterQueueAll::Pop() { 69 void TilingSetRasterQueueAll::Pop() {
110 IteratorType index = stages_[current_stage_].iterator_type; 70 IteratorType index = stages_[current_stage_].iterator_type;
111 TilePriority::PriorityBin tile_type = stages_[current_stage_].tile_type; 71 TilePriority::PriorityBin tile_type = stages_[current_stage_].tile_type;
112 72
113 // First advance the iterator. 73 // First advance the iterator.
114 DCHECK(!iterators_[index].done()); 74 DCHECK(!iterators_[index].done());
115 DCHECK(iterators_[index].type() == tile_type); 75 DCHECK(iterators_[index].type() == tile_type);
116 ++iterators_[index]; 76 ++iterators_[index];
(...skipping 16 matching lines...) Expand all
133 DCHECK(!IsEmpty()); 93 DCHECK(!IsEmpty());
134 94
135 IteratorType index = stages_[current_stage_].iterator_type; 95 IteratorType index = stages_[current_stage_].iterator_type;
136 DCHECK(!iterators_[index].done()); 96 DCHECK(!iterators_[index].done());
137 DCHECK(iterators_[index].type() == stages_[current_stage_].tile_type); 97 DCHECK(iterators_[index].type() == stages_[current_stage_].tile_type);
138 98
139 return *iterators_[index]; 99 return *iterators_[index];
140 } 100 }
141 101
142 void TilingSetRasterQueueAll::AdvanceToNextStage() { 102 void TilingSetRasterQueueAll::AdvanceToNextStage() {
143 DCHECK_LT(current_stage_, stages_->size()); 103 DCHECK_LT(current_stage_, arraysize(stages_));
144 ++current_stage_; 104 ++current_stage_;
145 while (current_stage_ < stages_->size()) { 105 while (current_stage_ < arraysize(stages_)) {
146 IteratorType index = stages_[current_stage_].iterator_type; 106 IteratorType index = stages_[current_stage_].iterator_type;
147 TilePriority::PriorityBin tile_type = stages_[current_stage_].tile_type; 107 TilePriority::PriorityBin tile_type = stages_[current_stage_].tile_type;
148 108
149 if (!iterators_[index].done() && iterators_[index].type() == tile_type) 109 if (!iterators_[index].done() && iterators_[index].type() == tile_type)
150 break; 110 break;
151 ++current_stage_; 111 ++current_stage_;
152 } 112 }
153 } 113 }
154 114
155 // OnePriorityRectIterator 115 // OnePriorityRectIterator
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 ++(*this); 166 ++(*this);
207 } 167 }
208 168
209 TilingSetRasterQueueAll::VisibleTilingIterator& 169 TilingSetRasterQueueAll::VisibleTilingIterator&
210 TilingSetRasterQueueAll::VisibleTilingIterator:: 170 TilingSetRasterQueueAll::VisibleTilingIterator::
211 operator++() { 171 operator++() {
212 AdvanceToNextTile(&iterator_); 172 AdvanceToNextTile(&iterator_);
213 return *this; 173 return *this;
214 } 174 }
215 175
216 // PendingVisibleTilingIterator.
217 TilingSetRasterQueueAll::PendingVisibleTilingIterator::
218 PendingVisibleTilingIterator(PictureLayerTiling* tiling,
219 TilingData* tiling_data)
220 : OnePriorityRectIterator(tiling, tiling_data) {
221 iterator_ = TilingData::DifferenceIterator(tiling_data_,
222 tiling_->pending_visible_rect(),
223 tiling_->current_visible_rect());
224 if (!iterator_)
225 return;
226 if (!GetFirstTileAndCheckIfValid(&iterator_))
227 ++(*this);
228 }
229
230 TilingSetRasterQueueAll::PendingVisibleTilingIterator&
231 TilingSetRasterQueueAll::PendingVisibleTilingIterator::
232 operator++() {
233 AdvanceToNextTile(&iterator_);
234 return *this;
235 }
236
237 // SkewportTilingIterator. 176 // SkewportTilingIterator.
238 TilingSetRasterQueueAll::SkewportTilingIterator::SkewportTilingIterator( 177 TilingSetRasterQueueAll::SkewportTilingIterator::SkewportTilingIterator(
239 PictureLayerTiling* tiling, 178 PictureLayerTiling* tiling,
240 TilingData* tiling_data) 179 TilingData* tiling_data)
241 : OnePriorityRectIterator(tiling, tiling_data), 180 : OnePriorityRectIterator(tiling, tiling_data) {
242 pending_visible_rect_(tiling->pending_visible_rect()) {
243 if (!tiling_->has_skewport_rect_tiles()) 181 if (!tiling_->has_skewport_rect_tiles())
244 return; 182 return;
245 iterator_ = TilingData::SpiralDifferenceIterator( 183 iterator_ = TilingData::SpiralDifferenceIterator(
246 tiling_data_, tiling_->current_skewport_rect(), 184 tiling_data_, tiling_->current_skewport_rect(),
247 tiling_->current_visible_rect(), tiling_->current_visible_rect()); 185 tiling_->current_visible_rect(), tiling_->current_visible_rect());
248 if (!iterator_) 186 if (!iterator_)
249 return; 187 return;
250 if (!GetFirstTileAndCheckIfValid(&iterator_)) { 188 if (!GetFirstTileAndCheckIfValid(&iterator_))
251 ++(*this);
252 return;
253 }
254 if (tile_->content_rect().Intersects(pending_visible_rect_))
255 ++(*this); 189 ++(*this);
256 } 190 }
257 191
258 TilingSetRasterQueueAll::SkewportTilingIterator& 192 TilingSetRasterQueueAll::SkewportTilingIterator&
259 TilingSetRasterQueueAll::SkewportTilingIterator:: 193 TilingSetRasterQueueAll::SkewportTilingIterator::
260 operator++() { 194 operator++() {
261 AdvanceToNextTile(&iterator_); 195 AdvanceToNextTile(&iterator_);
262 while (!done()) {
263 if (!tile_->content_rect().Intersects(pending_visible_rect_))
264 break;
265 AdvanceToNextTile(&iterator_);
266 }
267 return *this; 196 return *this;
268 } 197 }
269 198
270 // SoonBorderTilingIterator. 199 // SoonBorderTilingIterator.
271 TilingSetRasterQueueAll::SoonBorderTilingIterator::SoonBorderTilingIterator( 200 TilingSetRasterQueueAll::SoonBorderTilingIterator::SoonBorderTilingIterator(
272 PictureLayerTiling* tiling, 201 PictureLayerTiling* tiling,
273 TilingData* tiling_data) 202 TilingData* tiling_data)
274 : OnePriorityRectIterator(tiling, tiling_data), 203 : OnePriorityRectIterator(tiling, tiling_data) {
275 pending_visible_rect_(tiling->pending_visible_rect()) {
276 if (!tiling_->has_soon_border_rect_tiles()) 204 if (!tiling_->has_soon_border_rect_tiles())
277 return; 205 return;
278 iterator_ = TilingData::SpiralDifferenceIterator( 206 iterator_ = TilingData::SpiralDifferenceIterator(
279 tiling_data_, tiling_->current_soon_border_rect(), 207 tiling_data_, tiling_->current_soon_border_rect(),
280 tiling_->current_skewport_rect(), tiling_->current_visible_rect()); 208 tiling_->current_skewport_rect(), tiling_->current_visible_rect());
281 if (!iterator_) 209 if (!iterator_)
282 return; 210 return;
283 if (!GetFirstTileAndCheckIfValid(&iterator_)) { 211 if (!GetFirstTileAndCheckIfValid(&iterator_))
284 ++(*this);
285 return;
286 }
287 if (tile_->content_rect().Intersects(pending_visible_rect_))
288 ++(*this); 212 ++(*this);
289 } 213 }
290 214
291 TilingSetRasterQueueAll::SoonBorderTilingIterator& 215 TilingSetRasterQueueAll::SoonBorderTilingIterator&
292 TilingSetRasterQueueAll::SoonBorderTilingIterator:: 216 TilingSetRasterQueueAll::SoonBorderTilingIterator::
293 operator++() { 217 operator++() {
294 AdvanceToNextTile(&iterator_); 218 AdvanceToNextTile(&iterator_);
295 while (!done()) {
296 if (!tile_->content_rect().Intersects(pending_visible_rect_))
297 break;
298 AdvanceToNextTile(&iterator_);
299 }
300 return *this; 219 return *this;
301 } 220 }
302 221
303 // EventuallyTilingIterator. 222 // EventuallyTilingIterator.
304 TilingSetRasterQueueAll::EventuallyTilingIterator::EventuallyTilingIterator( 223 TilingSetRasterQueueAll::EventuallyTilingIterator::EventuallyTilingIterator(
305 PictureLayerTiling* tiling, 224 PictureLayerTiling* tiling,
306 TilingData* tiling_data) 225 TilingData* tiling_data)
307 : OnePriorityRectIterator(tiling, tiling_data), 226 : OnePriorityRectIterator(tiling, tiling_data) {
308 pending_visible_rect_(tiling->pending_visible_rect()) {
309 if (!tiling_->has_eventually_rect_tiles()) 227 if (!tiling_->has_eventually_rect_tiles())
310 return; 228 return;
311 iterator_ = TilingData::SpiralDifferenceIterator( 229 iterator_ = TilingData::SpiralDifferenceIterator(
312 tiling_data_, tiling_->current_eventually_rect(), 230 tiling_data_, tiling_->current_eventually_rect(),
313 tiling_->current_skewport_rect(), tiling_->current_soon_border_rect()); 231 tiling_->current_skewport_rect(), tiling_->current_soon_border_rect());
314 if (!iterator_) 232 if (!iterator_)
315 return; 233 return;
316 if (!GetFirstTileAndCheckIfValid(&iterator_)) { 234 if (!GetFirstTileAndCheckIfValid(&iterator_))
317 ++(*this);
318 return;
319 }
320 if (tile_->content_rect().Intersects(pending_visible_rect_))
321 ++(*this); 235 ++(*this);
322 } 236 }
323 237
324 TilingSetRasterQueueAll::EventuallyTilingIterator& 238 TilingSetRasterQueueAll::EventuallyTilingIterator&
325 TilingSetRasterQueueAll::EventuallyTilingIterator:: 239 TilingSetRasterQueueAll::EventuallyTilingIterator::
326 operator++() { 240 operator++() {
327 AdvanceToNextTile(&iterator_); 241 AdvanceToNextTile(&iterator_);
328 while (!done()) {
329 if (!tile_->content_rect().Intersects(pending_visible_rect_))
330 break;
331 AdvanceToNextTile(&iterator_);
332 }
333 return *this; 242 return *this;
334 } 243 }
335 244
336 // TilingIterator 245 // TilingIterator
337 TilingSetRasterQueueAll::TilingIterator::TilingIterator() 246 TilingSetRasterQueueAll::TilingIterator::TilingIterator()
338 : tiling_(NULL), current_tile_(NULL) { 247 : tiling_(NULL), current_tile_(NULL) {
339 } 248 }
340 249
341 TilingSetRasterQueueAll::TilingIterator::TilingIterator( 250 TilingSetRasterQueueAll::TilingIterator::TilingIterator(
342 PictureLayerTiling* tiling, 251 PictureLayerTiling* tiling,
343 TilingData* tiling_data) 252 TilingData* tiling_data)
344 : tiling_(tiling), 253 : tiling_(tiling),
345 tiling_data_(tiling_data), 254 tiling_data_(tiling_data),
346 phase_(VISIBLE_RECT), 255 phase_(VISIBLE_RECT),
347 current_tile_(NULL) { 256 current_tile_(NULL) {
348 visible_iterator_ = VisibleTilingIterator(tiling_, tiling_data_); 257 visible_iterator_ = VisibleTilingIterator(tiling_, tiling_data_);
349 if (visible_iterator_.done()) { 258 if (visible_iterator_.done()) {
350 AdvancePhase(); 259 AdvancePhase();
351 return; 260 return;
352 } 261 }
353 current_tile_ = *visible_iterator_; 262 current_tile_ = *visible_iterator_;
354 } 263 }
355 264
356 TilingSetRasterQueueAll::TilingIterator::~TilingIterator() {
357 }
358
359 void TilingSetRasterQueueAll::TilingIterator::AdvancePhase() { 265 void TilingSetRasterQueueAll::TilingIterator::AdvancePhase() {
360 DCHECK_LT(phase_, EVENTUALLY_RECT); 266 DCHECK_LT(phase_, EVENTUALLY_RECT);
361 267
362 current_tile_ = nullptr; 268 current_tile_ = nullptr;
363 while (!current_tile_ && phase_ < EVENTUALLY_RECT) { 269 while (!current_tile_ && phase_ < EVENTUALLY_RECT) {
364 phase_ = static_cast<Phase>(phase_ + 1); 270 phase_ = static_cast<Phase>(phase_ + 1);
365 switch (phase_) { 271 switch (phase_) {
366 case VISIBLE_RECT: 272 case VISIBLE_RECT:
367 NOTREACHED(); 273 NOTREACHED();
368 return; 274 return;
369 case PENDING_VISIBLE_RECT:
370 pending_visible_iterator_ =
371 PendingVisibleTilingIterator(tiling_, tiling_data_);
372 if (!pending_visible_iterator_.done())
373 current_tile_ = *pending_visible_iterator_;
374 break;
375 case SKEWPORT_RECT: 275 case SKEWPORT_RECT:
376 skewport_iterator_ = SkewportTilingIterator(tiling_, tiling_data_); 276 skewport_iterator_ = SkewportTilingIterator(tiling_, tiling_data_);
377 if (!skewport_iterator_.done()) 277 if (!skewport_iterator_.done())
378 current_tile_ = *skewport_iterator_; 278 current_tile_ = *skewport_iterator_;
379 break; 279 break;
380 case SOON_BORDER_RECT: 280 case SOON_BORDER_RECT:
381 soon_border_iterator_ = SoonBorderTilingIterator(tiling_, tiling_data_); 281 soon_border_iterator_ = SoonBorderTilingIterator(tiling_, tiling_data_);
382 if (!soon_border_iterator_.done()) 282 if (!soon_border_iterator_.done())
383 current_tile_ = *soon_border_iterator_; 283 current_tile_ = *soon_border_iterator_;
384 break; 284 break;
(...skipping 11 matching lines...) Expand all
396 operator++() { 296 operator++() {
397 switch (phase_) { 297 switch (phase_) {
398 case VISIBLE_RECT: 298 case VISIBLE_RECT:
399 ++visible_iterator_; 299 ++visible_iterator_;
400 if (visible_iterator_.done()) { 300 if (visible_iterator_.done()) {
401 AdvancePhase(); 301 AdvancePhase();
402 return *this; 302 return *this;
403 } 303 }
404 current_tile_ = *visible_iterator_; 304 current_tile_ = *visible_iterator_;
405 break; 305 break;
406 case PENDING_VISIBLE_RECT:
407 ++pending_visible_iterator_;
408 if (pending_visible_iterator_.done()) {
409 AdvancePhase();
410 return *this;
411 }
412 current_tile_ = *pending_visible_iterator_;
413 break;
414 case SKEWPORT_RECT: 306 case SKEWPORT_RECT:
415 ++skewport_iterator_; 307 ++skewport_iterator_;
416 if (skewport_iterator_.done()) { 308 if (skewport_iterator_.done()) {
417 AdvancePhase(); 309 AdvancePhase();
418 return *this; 310 return *this;
419 } 311 }
420 current_tile_ = *skewport_iterator_; 312 current_tile_ = *skewport_iterator_;
421 break; 313 break;
422 case SOON_BORDER_RECT: 314 case SOON_BORDER_RECT:
423 ++soon_border_iterator_; 315 ++soon_border_iterator_;
424 if (soon_border_iterator_.done()) { 316 if (soon_border_iterator_.done()) {
425 AdvancePhase(); 317 AdvancePhase();
426 return *this; 318 return *this;
427 } 319 }
428 current_tile_ = *soon_border_iterator_; 320 current_tile_ = *soon_border_iterator_;
429 break; 321 break;
430 case EVENTUALLY_RECT: 322 case EVENTUALLY_RECT:
431 ++eventually_iterator_; 323 ++eventually_iterator_;
432 if (eventually_iterator_.done()) { 324 if (eventually_iterator_.done()) {
433 current_tile_ = nullptr; 325 current_tile_ = nullptr;
434 return *this; 326 return *this;
435 } 327 }
436 current_tile_ = *eventually_iterator_; 328 current_tile_ = *eventually_iterator_;
437 break; 329 break;
438 } 330 }
439 return *this; 331 return *this;
440 } 332 }
441 333
442 } // namespace cc 334 } // namespace cc
OLDNEW
« no previous file with comments | « cc/resources/tiling_set_raster_queue_all.h ('k') | cc/resources/tiling_set_raster_queue_required.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698