OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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/picture_layer_tiling.h" | 5 #include "cc/resources/picture_layer_tiling.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <cmath> | 8 #include <cmath> |
9 #include <limits> | 9 #include <limits> |
10 | 10 |
(...skipping 463 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
474 DCHECK(eventually_rect.IsEmpty() || | 474 DCHECK(eventually_rect.IsEmpty() || |
475 gfx::Rect(tiling_size()).Contains(eventually_rect)) | 475 gfx::Rect(tiling_size()).Contains(eventually_rect)) |
476 << "tiling_size: " << tiling_size().ToString() | 476 << "tiling_size: " << tiling_size().ToString() |
477 << " eventually_rect: " << eventually_rect.ToString(); | 477 << " eventually_rect: " << eventually_rect.ToString(); |
478 | 478 |
479 SetLiveTilesRect(eventually_rect); | 479 SetLiveTilesRect(eventually_rect); |
480 | 480 |
481 last_impl_frame_time_in_seconds_ = current_frame_time_in_seconds; | 481 last_impl_frame_time_in_seconds_ = current_frame_time_in_seconds; |
482 last_visible_rect_in_content_space_ = visible_rect_in_content_space; | 482 last_visible_rect_in_content_space_ = visible_rect_in_content_space; |
483 | 483 |
484 current_visible_rect_in_content_space_ = visible_rect_in_content_space; | |
485 current_skewport_ = skewport; | |
486 current_eventually_rect_ = eventually_rect; | |
487 eviction_tiles_cache_valid_ = false; | 484 eviction_tiles_cache_valid_ = false; |
488 | 485 |
489 TilePriority now_priority(resolution_, TilePriority::NOW, 0); | 486 TilePriority now_priority(resolution_, TilePriority::NOW, 0); |
490 float content_to_screen_scale = | 487 float content_to_screen_scale = |
491 1.0f / (contents_scale_ * ideal_contents_scale); | 488 1.0f / (contents_scale_ * ideal_contents_scale); |
492 | 489 |
493 // Assign now priority to all visible tiles. | 490 // Assign now priority to all visible tiles. |
494 bool include_borders = true; | 491 bool include_borders = true; |
495 for (TilingData::Iterator iter( | 492 for (TilingData::Iterator iter( |
496 &tiling_data_, visible_rect_in_content_space, include_borders); | 493 &tiling_data_, visible_rect_in_content_space, include_borders); |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
553 | 550 |
554 float distance_to_visible = | 551 float distance_to_visible = |
555 visible_rect_in_content_space.ManhattanInternalDistance(tile_bounds) * | 552 visible_rect_in_content_space.ManhattanInternalDistance(tile_bounds) * |
556 content_to_screen_scale; | 553 content_to_screen_scale; |
557 TilePriority priority( | 554 TilePriority priority( |
558 resolution_, TilePriority::EVENTUALLY, distance_to_visible); | 555 resolution_, TilePriority::EVENTUALLY, distance_to_visible); |
559 tile->SetPriority(tree, priority); | 556 tile->SetPriority(tree, priority); |
560 } | 557 } |
561 | 558 |
562 // Upgrade the priority on border tiles to be SOON. | 559 // Upgrade the priority on border tiles to be SOON. |
563 current_soon_border_rect_ = visible_rect_in_content_space; | 560 gfx::Rect soon_border_rect = visible_rect_in_content_space; |
564 float border = kSoonBorderDistanceInScreenPixels / content_to_screen_scale; | 561 float border = kSoonBorderDistanceInScreenPixels / content_to_screen_scale; |
565 current_soon_border_rect_.Inset(-border, -border, -border, -border); | 562 soon_border_rect.Inset(-border, -border, -border, -border); |
566 for (TilingData::DifferenceIterator iter( | 563 for (TilingData::DifferenceIterator iter( |
567 &tiling_data_, current_soon_border_rect_, skewport); | 564 &tiling_data_, soon_border_rect, skewport); |
568 iter; | 565 iter; |
569 ++iter) { | 566 ++iter) { |
570 TileMap::iterator find = tiles_.find(iter.index()); | 567 TileMap::iterator find = tiles_.find(iter.index()); |
571 if (find == tiles_.end()) | 568 if (find == tiles_.end()) |
572 continue; | 569 continue; |
573 Tile* tile = find->second.get(); | 570 Tile* tile = find->second.get(); |
574 | 571 |
575 TilePriority priority(resolution_, | 572 TilePriority priority(resolution_, |
576 TilePriority::SOON, | 573 TilePriority::SOON, |
577 tile->priority(tree).distance_to_visible); | 574 tile->priority(tree).distance_to_visible); |
578 tile->SetPriority(tree, priority); | 575 tile->SetPriority(tree, priority); |
579 } | 576 } |
| 577 |
| 578 // Update iteration rects. |
| 579 current_visible_rect_ = visible_rect_in_content_space; |
| 580 current_skewport_rect_ = skewport; |
| 581 current_soon_border_rect_ = soon_border_rect; |
| 582 current_eventually_rect_ = eventually_rect; |
580 } | 583 } |
581 | 584 |
582 void PictureLayerTiling::SetLiveTilesRect( | 585 void PictureLayerTiling::SetLiveTilesRect( |
583 const gfx::Rect& new_live_tiles_rect) { | 586 const gfx::Rect& new_live_tiles_rect) { |
584 DCHECK(new_live_tiles_rect.IsEmpty() || | 587 DCHECK(new_live_tiles_rect.IsEmpty() || |
585 gfx::Rect(tiling_size()).Contains(new_live_tiles_rect)) | 588 gfx::Rect(tiling_size()).Contains(new_live_tiles_rect)) |
586 << "tiling_size: " << tiling_size().ToString() | 589 << "tiling_size: " << tiling_size().ToString() |
587 << " new_live_tiles_rect: " << new_live_tiles_rect.ToString(); | 590 << " new_live_tiles_rect: " << new_live_tiles_rect.ToString(); |
588 if (live_tiles_rect_ == new_live_tiles_rect) | 591 if (live_tiles_rect_ == new_live_tiles_rect) |
589 return; | 592 return; |
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
831 } | 834 } |
832 | 835 |
833 PictureLayerTiling::TilingRasterTileIterator::TilingRasterTileIterator() | 836 PictureLayerTiling::TilingRasterTileIterator::TilingRasterTileIterator() |
834 : tiling_(NULL), current_tile_(NULL) {} | 837 : tiling_(NULL), current_tile_(NULL) {} |
835 | 838 |
836 PictureLayerTiling::TilingRasterTileIterator::TilingRasterTileIterator( | 839 PictureLayerTiling::TilingRasterTileIterator::TilingRasterTileIterator( |
837 PictureLayerTiling* tiling, | 840 PictureLayerTiling* tiling, |
838 WhichTree tree) | 841 WhichTree tree) |
839 : tiling_(tiling), | 842 : tiling_(tiling), |
840 type_(TilePriority::NOW), | 843 type_(TilePriority::NOW), |
841 visible_rect_in_content_space_( | 844 visible_rect_in_content_space_(tiling_->current_visible_rect_), |
842 tiling_->current_visible_rect_in_content_space_), | 845 skewport_in_content_space_(tiling_->current_skewport_rect_), |
843 skewport_in_content_space_(tiling_->current_skewport_), | |
844 eventually_rect_in_content_space_(tiling_->current_eventually_rect_), | 846 eventually_rect_in_content_space_(tiling_->current_eventually_rect_), |
845 soon_border_rect_in_content_space_(tiling_->current_soon_border_rect_), | 847 soon_border_rect_in_content_space_(tiling_->current_soon_border_rect_), |
846 tree_(tree), | 848 tree_(tree), |
847 current_tile_(NULL), | 849 current_tile_(NULL), |
848 visible_iterator_(&tiling->tiling_data_, | 850 visible_iterator_(&tiling->tiling_data_, |
849 visible_rect_in_content_space_, | 851 visible_rect_in_content_space_, |
850 true /* include_borders */), | 852 true /* include_borders */), |
851 spiral_iterator_(&tiling->tiling_data_, | 853 spiral_iterator_(&tiling->tiling_data_, |
852 skewport_in_content_space_, | 854 skewport_in_content_space_, |
853 visible_rect_in_content_space_, | 855 visible_rect_in_content_space_, |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
979 DCHECK(*this); | 981 DCHECK(*this); |
980 do { | 982 do { |
981 ++tile_iterator_; | 983 ++tile_iterator_; |
982 } while (tile_iterator_ != tiling_->eviction_tiles_cache_.end() && | 984 } while (tile_iterator_ != tiling_->eviction_tiles_cache_.end() && |
983 (!(*tile_iterator_)->HasResources())); | 985 (!(*tile_iterator_)->HasResources())); |
984 | 986 |
985 return *this; | 987 return *this; |
986 } | 988 } |
987 | 989 |
988 } // namespace cc | 990 } // namespace cc |
OLD | NEW |