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

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

Issue 1144973005: cc: TilingSetRasterQueue clean-ups and optimizations. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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/tiles/tiling_set_raster_queue_all.h ('k') | no next file » | 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 #include "cc/tiles/tiling_set_raster_queue_all.h" 5 #include "cc/tiles/tiling_set_raster_queue_all.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "cc/tiles/picture_layer_tiling_set.h" 9 #include "cc/tiles/picture_layer_tiling_set.h"
10 #include "cc/tiles/tile.h" 10 #include "cc/tiles/tile.h"
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 TilingSetRasterQueueAll::OnePriorityRectIterator::OnePriorityRectIterator() 145 TilingSetRasterQueueAll::OnePriorityRectIterator::OnePriorityRectIterator()
146 : tiling_(nullptr), tiling_data_(nullptr) { 146 : tiling_(nullptr), tiling_data_(nullptr) {
147 } 147 }
148 148
149 TilingSetRasterQueueAll::OnePriorityRectIterator::OnePriorityRectIterator( 149 TilingSetRasterQueueAll::OnePriorityRectIterator::OnePriorityRectIterator(
150 PictureLayerTiling* tiling, 150 PictureLayerTiling* tiling,
151 TilingData* tiling_data, 151 TilingData* tiling_data,
152 PictureLayerTiling::PriorityRectType priority_rect_type) 152 PictureLayerTiling::PriorityRectType priority_rect_type)
153 : tiling_(tiling), 153 : tiling_(tiling),
154 tiling_data_(tiling_data), 154 tiling_data_(tiling_data),
155 priority_rect_type_(priority_rect_type) { 155 priority_rect_type_(priority_rect_type),
156 pending_visible_rect_(tiling->pending_visible_rect()) {
156 } 157 }
157 158
158 template <typename TilingIteratorType> 159 template <typename TilingIteratorType>
159 void TilingSetRasterQueueAll::OnePriorityRectIterator::AdvanceToNextTile( 160 void TilingSetRasterQueueAll::OnePriorityRectIterator::AdvanceToNextTile(
160 TilingIteratorType* iterator) { 161 TilingIteratorType* iterator) {
161 for (;;) { 162 for (;;) {
162 ++(*iterator); 163 ++(*iterator);
163 if (!(*iterator)) { 164 if (!(*iterator)) {
164 current_tile_ = PrioritizedTile(); 165 current_tile_ = PrioritizedTile();
165 break; 166 break;
(...skipping 21 matching lines...) Expand all
187 } 188 }
188 189
189 bool TilingSetRasterQueueAll::OnePriorityRectIterator::IsTileValid( 190 bool TilingSetRasterQueueAll::OnePriorityRectIterator::IsTileValid(
190 const Tile* tile) const { 191 const Tile* tile) const {
191 if (!tile || !TileNeedsRaster(tile)) 192 if (!tile || !TileNeedsRaster(tile))
192 return false; 193 return false;
193 // After the pending visible rect has been processed, we must return false 194 // After the pending visible rect has been processed, we must return false
194 // for pending visible rect tiles as tiling iterators do not ignore those 195 // for pending visible rect tiles as tiling iterators do not ignore those
195 // tiles. 196 // tiles.
196 if (priority_rect_type_ > PictureLayerTiling::PENDING_VISIBLE_RECT && 197 if (priority_rect_type_ > PictureLayerTiling::PENDING_VISIBLE_RECT &&
197 tiling_->pending_visible_rect().Intersects(tile->content_rect())) { 198 pending_visible_rect_.Intersects(tile->content_rect())) {
198 return false; 199 return false;
199 } 200 }
200 return true; 201 return true;
201 } 202 }
202 203
203 // VisibleTilingIterator. 204 // VisibleTilingIterator.
204 TilingSetRasterQueueAll::VisibleTilingIterator::VisibleTilingIterator( 205 TilingSetRasterQueueAll::VisibleTilingIterator::VisibleTilingIterator(
205 PictureLayerTiling* tiling, 206 PictureLayerTiling* tiling,
206 TilingData* tiling_data) 207 TilingData* tiling_data)
207 : OnePriorityRectIterator(tiling, 208 : OnePriorityRectIterator(tiling,
(...skipping 17 matching lines...) Expand all
225 return *this; 226 return *this;
226 } 227 }
227 228
228 // PendingVisibleTilingIterator. 229 // PendingVisibleTilingIterator.
229 TilingSetRasterQueueAll::PendingVisibleTilingIterator:: 230 TilingSetRasterQueueAll::PendingVisibleTilingIterator::
230 PendingVisibleTilingIterator(PictureLayerTiling* tiling, 231 PendingVisibleTilingIterator(PictureLayerTiling* tiling,
231 TilingData* tiling_data) 232 TilingData* tiling_data)
232 : OnePriorityRectIterator(tiling, 233 : OnePriorityRectIterator(tiling,
233 tiling_data, 234 tiling_data,
234 PictureLayerTiling::PENDING_VISIBLE_RECT) { 235 PictureLayerTiling::PENDING_VISIBLE_RECT) {
235 iterator_ = TilingData::DifferenceIterator(tiling_data_, 236 iterator_ = TilingData::DifferenceIterator(
236 tiling_->pending_visible_rect(), 237 tiling_data_, pending_visible_rect_, tiling_->current_visible_rect());
237 tiling_->current_visible_rect());
238 if (!iterator_) 238 if (!iterator_)
239 return; 239 return;
240 if (!GetFirstTileAndCheckIfValid(&iterator_)) 240 if (!GetFirstTileAndCheckIfValid(&iterator_))
241 ++(*this); 241 ++(*this);
242 } 242 }
243 243
244 TilingSetRasterQueueAll::PendingVisibleTilingIterator& 244 TilingSetRasterQueueAll::PendingVisibleTilingIterator&
245 TilingSetRasterQueueAll::PendingVisibleTilingIterator:: 245 TilingSetRasterQueueAll::PendingVisibleTilingIterator::
246 operator++() { 246 operator++() {
247 AdvanceToNextTile(&iterator_); 247 AdvanceToNextTile(&iterator_);
248 return *this; 248 return *this;
249 } 249 }
250 250
251 // SkewportTilingIterator. 251 // SkewportTilingIterator.
252 TilingSetRasterQueueAll::SkewportTilingIterator::SkewportTilingIterator( 252 TilingSetRasterQueueAll::SkewportTilingIterator::SkewportTilingIterator(
253 PictureLayerTiling* tiling, 253 PictureLayerTiling* tiling,
254 TilingData* tiling_data) 254 TilingData* tiling_data)
255 : OnePriorityRectIterator(tiling, 255 : OnePriorityRectIterator(tiling,
256 tiling_data, 256 tiling_data,
257 PictureLayerTiling::SKEWPORT_RECT), 257 PictureLayerTiling::SKEWPORT_RECT) {
258 pending_visible_rect_(tiling->pending_visible_rect()) {
259 if (!tiling_->has_skewport_rect_tiles()) 258 if (!tiling_->has_skewport_rect_tiles())
260 return; 259 return;
261 iterator_ = TilingData::SpiralDifferenceIterator( 260 iterator_ = TilingData::SpiralDifferenceIterator(
262 tiling_data_, tiling_->current_skewport_rect(), 261 tiling_data_, tiling_->current_skewport_rect(),
263 tiling_->current_visible_rect(), tiling_->current_visible_rect()); 262 tiling_->current_visible_rect(), tiling_->current_visible_rect());
264 if (!iterator_) 263 if (!iterator_)
265 return; 264 return;
266 if (!GetFirstTileAndCheckIfValid(&iterator_)) { 265 if (!GetFirstTileAndCheckIfValid(&iterator_)) {
267 ++(*this); 266 ++(*this);
268 return; 267 return;
269 } 268 }
270 // TODO(e_hakkinen): This is not needed as GetFirstTileAndCheckIfValid
271 // does the same checking.
272 if (current_tile_.tile()->content_rect().Intersects(pending_visible_rect_))
273 ++(*this);
274 } 269 }
275 270
276 TilingSetRasterQueueAll::SkewportTilingIterator& 271 TilingSetRasterQueueAll::SkewportTilingIterator&
277 TilingSetRasterQueueAll::SkewportTilingIterator:: 272 TilingSetRasterQueueAll::SkewportTilingIterator::
278 operator++() { 273 operator++() {
279 AdvanceToNextTile(&iterator_); 274 AdvanceToNextTile(&iterator_);
280 // TODO(e_hakkinen): This is not needed as GetFirstTileAndCheckIfValid called
281 // by AdvanceToNextTile does the same checking.
282 while (!done()) {
283 if (!current_tile_.tile()->content_rect().Intersects(pending_visible_rect_))
284 break;
285 AdvanceToNextTile(&iterator_);
286 }
287 return *this; 275 return *this;
288 } 276 }
289 277
290 // SoonBorderTilingIterator. 278 // SoonBorderTilingIterator.
291 TilingSetRasterQueueAll::SoonBorderTilingIterator::SoonBorderTilingIterator( 279 TilingSetRasterQueueAll::SoonBorderTilingIterator::SoonBorderTilingIterator(
292 PictureLayerTiling* tiling, 280 PictureLayerTiling* tiling,
293 TilingData* tiling_data) 281 TilingData* tiling_data)
294 : OnePriorityRectIterator(tiling, 282 : OnePriorityRectIterator(tiling,
295 tiling_data, 283 tiling_data,
296 PictureLayerTiling::SOON_BORDER_RECT), 284 PictureLayerTiling::SOON_BORDER_RECT) {
297 pending_visible_rect_(tiling->pending_visible_rect()) {
298 if (!tiling_->has_soon_border_rect_tiles()) 285 if (!tiling_->has_soon_border_rect_tiles())
299 return; 286 return;
300 iterator_ = TilingData::SpiralDifferenceIterator( 287 iterator_ = TilingData::SpiralDifferenceIterator(
301 tiling_data_, tiling_->current_soon_border_rect(), 288 tiling_data_, tiling_->current_soon_border_rect(),
302 tiling_->current_skewport_rect(), tiling_->current_visible_rect()); 289 tiling_->current_skewport_rect(), tiling_->current_visible_rect());
303 if (!iterator_) 290 if (!iterator_)
304 return; 291 return;
305 if (!GetFirstTileAndCheckIfValid(&iterator_)) { 292 if (!GetFirstTileAndCheckIfValid(&iterator_)) {
306 ++(*this); 293 ++(*this);
307 return; 294 return;
308 } 295 }
309 // TODO(e_hakkinen): This is not needed as GetFirstTileAndCheckIfValid
310 // does the same checking.
311 if (current_tile_.tile()->content_rect().Intersects(pending_visible_rect_))
312 ++(*this);
313 } 296 }
314 297
315 TilingSetRasterQueueAll::SoonBorderTilingIterator& 298 TilingSetRasterQueueAll::SoonBorderTilingIterator&
316 TilingSetRasterQueueAll::SoonBorderTilingIterator:: 299 TilingSetRasterQueueAll::SoonBorderTilingIterator::
317 operator++() { 300 operator++() {
318 AdvanceToNextTile(&iterator_); 301 AdvanceToNextTile(&iterator_);
319 // TODO(e_hakkinen): This is not needed as GetFirstTileAndCheckIfValid called
320 // by AdvanceToNextTile does the same checking.
321 while (!done()) {
322 if (!current_tile_.tile()->content_rect().Intersects(pending_visible_rect_))
323 break;
324 AdvanceToNextTile(&iterator_);
325 }
326 return *this; 302 return *this;
327 } 303 }
328 304
329 // EventuallyTilingIterator. 305 // EventuallyTilingIterator.
330 TilingSetRasterQueueAll::EventuallyTilingIterator::EventuallyTilingIterator( 306 TilingSetRasterQueueAll::EventuallyTilingIterator::EventuallyTilingIterator(
331 PictureLayerTiling* tiling, 307 PictureLayerTiling* tiling,
332 TilingData* tiling_data) 308 TilingData* tiling_data)
333 : OnePriorityRectIterator(tiling, 309 : OnePriorityRectIterator(tiling,
334 tiling_data, 310 tiling_data,
335 PictureLayerTiling::EVENTUALLY_RECT), 311 PictureLayerTiling::EVENTUALLY_RECT) {
336 pending_visible_rect_(tiling->pending_visible_rect()) {
337 if (!tiling_->has_eventually_rect_tiles()) 312 if (!tiling_->has_eventually_rect_tiles())
338 return; 313 return;
339 iterator_ = TilingData::SpiralDifferenceIterator( 314 iterator_ = TilingData::SpiralDifferenceIterator(
340 tiling_data_, tiling_->current_eventually_rect(), 315 tiling_data_, tiling_->current_eventually_rect(),
341 tiling_->current_skewport_rect(), tiling_->current_soon_border_rect()); 316 tiling_->current_skewport_rect(), tiling_->current_soon_border_rect());
342 if (!iterator_) 317 if (!iterator_)
343 return; 318 return;
344 if (!GetFirstTileAndCheckIfValid(&iterator_)) { 319 if (!GetFirstTileAndCheckIfValid(&iterator_)) {
345 ++(*this); 320 ++(*this);
346 return; 321 return;
347 } 322 }
348 // TODO(e_hakkinen): This is not needed as GetFirstTileAndCheckIfValid
349 // does the same checking.
350 if (current_tile_.tile()->content_rect().Intersects(pending_visible_rect_))
351 ++(*this);
352 } 323 }
353 324
354 TilingSetRasterQueueAll::EventuallyTilingIterator& 325 TilingSetRasterQueueAll::EventuallyTilingIterator&
355 TilingSetRasterQueueAll::EventuallyTilingIterator:: 326 TilingSetRasterQueueAll::EventuallyTilingIterator::
356 operator++() { 327 operator++() {
357 AdvanceToNextTile(&iterator_); 328 AdvanceToNextTile(&iterator_);
358 // TODO(e_hakkinen): This is not needed as GetFirstTileAndCheckIfValid called
359 // by AdvanceToNextTile does the same checking.
360 while (!done()) {
361 if (!current_tile_.tile()->content_rect().Intersects(pending_visible_rect_))
362 break;
363 AdvanceToNextTile(&iterator_);
364 }
365 return *this; 329 return *this;
366 } 330 }
367 331
368 // TilingIterator 332 // TilingIterator
369 TilingSetRasterQueueAll::TilingIterator::TilingIterator() : tiling_(nullptr) { 333 TilingSetRasterQueueAll::TilingIterator::TilingIterator() : tiling_(nullptr) {
370 } 334 }
371 335
372 TilingSetRasterQueueAll::TilingIterator::TilingIterator( 336 TilingSetRasterQueueAll::TilingIterator::TilingIterator(
373 PictureLayerTiling* tiling, 337 PictureLayerTiling* tiling,
374 TilingData* tiling_data) 338 TilingData* tiling_data)
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
461 current_tile_ = PrioritizedTile(); 425 current_tile_ = PrioritizedTile();
462 return *this; 426 return *this;
463 } 427 }
464 current_tile_ = *eventually_iterator_; 428 current_tile_ = *eventually_iterator_;
465 break; 429 break;
466 } 430 }
467 return *this; 431 return *this;
468 } 432 }
469 433
470 } // namespace cc 434 } // namespace cc
OLDNEW
« no previous file with comments | « cc/tiles/tiling_set_raster_queue_all.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698