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/layers/picture_layer_impl.h" | 5 #include "cc/layers/picture_layer_impl.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <limits> | 8 #include <limits> |
9 #include <set> | 9 #include <set> |
10 | 10 |
(...skipping 582 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
593 LayerImpl::DidBecomeActive(); | 593 LayerImpl::DidBecomeActive(); |
594 // TODO(vmpstr): See if this can be removed in favour of calling it from LTHI | 594 // TODO(vmpstr): See if this can be removed in favour of calling it from LTHI |
595 layer_tree_impl()->DidModifyTilePriorities(); | 595 layer_tree_impl()->DidModifyTilePriorities(); |
596 } | 596 } |
597 | 597 |
598 void PictureLayerImpl::DidBeginTracing() { | 598 void PictureLayerImpl::DidBeginTracing() { |
599 raster_source_->DidBeginTracing(); | 599 raster_source_->DidBeginTracing(); |
600 } | 600 } |
601 | 601 |
602 void PictureLayerImpl::ReleaseResources() { | 602 void PictureLayerImpl::ReleaseResources() { |
| 603 // Recreate tilings with new settings, since some of those might change when |
| 604 // we release resources. If tilings_ is null, then leave it as null. |
603 if (tilings_) | 605 if (tilings_) |
604 RemoveAllTilings(); | 606 tilings_ = CreatePictureLayerTilingSet(); |
605 | |
606 ResetRasterScale(); | 607 ResetRasterScale(); |
607 | 608 |
608 // To avoid an edge case after lost context where the tree is up to date but | 609 // To avoid an edge case after lost context where the tree is up to date but |
609 // the tilings have not been managed, request an update draw properties | 610 // the tilings have not been managed, request an update draw properties |
610 // to force tilings to get managed. | 611 // to force tilings to get managed. |
611 layer_tree_impl()->set_needs_update_draw_properties(); | 612 layer_tree_impl()->set_needs_update_draw_properties(); |
612 } | 613 } |
613 | 614 |
614 skia::RefPtr<SkPicture> PictureLayerImpl::GetPicture() { | 615 skia::RefPtr<SkPicture> PictureLayerImpl::GetPicture() { |
615 return raster_source_->GetFlattenedPicture(); | 616 return raster_source_->GetFlattenedPicture(); |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
665 return nullptr; | 666 return nullptr; |
666 return recycled_twin->tilings_->FindTilingWithScale(tiling->contents_scale()); | 667 return recycled_twin->tilings_->FindTilingWithScale(tiling->contents_scale()); |
667 } | 668 } |
668 | 669 |
669 TilePriority::PriorityBin PictureLayerImpl::GetMaxTilePriorityBin() const { | 670 TilePriority::PriorityBin PictureLayerImpl::GetMaxTilePriorityBin() const { |
670 if (!HasValidTilePriorities()) | 671 if (!HasValidTilePriorities()) |
671 return TilePriority::EVENTUALLY; | 672 return TilePriority::EVENTUALLY; |
672 return TilePriority::NOW; | 673 return TilePriority::NOW; |
673 } | 674 } |
674 | 675 |
675 size_t PictureLayerImpl::GetMaxTilesForInterestArea() const { | |
676 return layer_tree_impl()->settings().max_tiles_for_interest_area; | |
677 } | |
678 | |
679 float PictureLayerImpl::GetSkewportTargetTimeInSeconds() const { | |
680 return layer_tree_impl()->use_gpu_rasterization() | |
681 ? 0.f | |
682 : layer_tree_impl()->settings().skewport_target_time_in_seconds; | |
683 } | |
684 | |
685 int PictureLayerImpl::GetSkewportExtrapolationLimitInContentPixels() const { | |
686 return layer_tree_impl() | |
687 ->settings() | |
688 .skewport_extrapolation_limit_in_content_pixels; | |
689 } | |
690 | |
691 bool PictureLayerImpl::RequiresHighResToDraw() const { | 676 bool PictureLayerImpl::RequiresHighResToDraw() const { |
692 return layer_tree_impl()->RequiresHighResToDraw(); | 677 return layer_tree_impl()->RequiresHighResToDraw(); |
693 } | 678 } |
694 | 679 |
695 gfx::Size PictureLayerImpl::CalculateTileSize( | 680 gfx::Size PictureLayerImpl::CalculateTileSize( |
696 const gfx::Size& content_bounds) const { | 681 const gfx::Size& content_bounds) const { |
697 int max_texture_size = | 682 int max_texture_size = |
698 layer_tree_impl()->resource_provider()->max_texture_size(); | 683 layer_tree_impl()->resource_provider()->max_texture_size(); |
699 | 684 |
700 if (is_mask_) { | 685 if (is_mask_) { |
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
856 | 841 |
857 *resource_id = draw_info.get_resource_id(); | 842 *resource_id = draw_info.get_resource_id(); |
858 *resource_size = iter.texture_size(); | 843 *resource_size = iter.texture_size(); |
859 } | 844 } |
860 | 845 |
861 void PictureLayerImpl::DoPostCommitInitialization() { | 846 void PictureLayerImpl::DoPostCommitInitialization() { |
862 DCHECK(needs_post_commit_initialization_); | 847 DCHECK(needs_post_commit_initialization_); |
863 DCHECK(layer_tree_impl()->IsPendingTree()); | 848 DCHECK(layer_tree_impl()->IsPendingTree()); |
864 | 849 |
865 if (!tilings_) | 850 if (!tilings_) |
866 tilings_ = PictureLayerTilingSet::Create(this); | 851 tilings_ = CreatePictureLayerTilingSet(); |
867 | 852 |
868 PictureLayerImpl* twin_layer = GetPendingOrActiveTwinLayer(); | 853 PictureLayerImpl* twin_layer = GetPendingOrActiveTwinLayer(); |
869 if (twin_layer) { | 854 if (twin_layer) { |
870 // If the twin has never been pushed to, do not sync from it. | 855 // If the twin has never been pushed to, do not sync from it. |
871 // This can happen if this function is called during activation. | 856 // This can happen if this function is called during activation. |
872 if (!twin_layer->needs_post_commit_initialization_) | 857 if (!twin_layer->needs_post_commit_initialization_) |
873 SyncFromActiveLayer(twin_layer); | 858 SyncFromActiveLayer(twin_layer); |
874 } | 859 } |
875 | 860 |
876 needs_post_commit_initialization_ = false; | 861 needs_post_commit_initialization_ = false; |
(...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1193 | 1178 |
1194 bool PictureLayerImpl::ShouldAdjustRasterScaleDuringScaleAnimations() const { | 1179 bool PictureLayerImpl::ShouldAdjustRasterScaleDuringScaleAnimations() const { |
1195 return layer_tree_impl()->use_gpu_rasterization(); | 1180 return layer_tree_impl()->use_gpu_rasterization(); |
1196 } | 1181 } |
1197 | 1182 |
1198 float PictureLayerImpl::MaximumTilingContentsScale() const { | 1183 float PictureLayerImpl::MaximumTilingContentsScale() const { |
1199 float max_contents_scale = tilings_->GetMaximumContentsScale(); | 1184 float max_contents_scale = tilings_->GetMaximumContentsScale(); |
1200 return std::max(max_contents_scale, MinimumContentsScale()); | 1185 return std::max(max_contents_scale, MinimumContentsScale()); |
1201 } | 1186 } |
1202 | 1187 |
| 1188 scoped_ptr<PictureLayerTilingSet> |
| 1189 PictureLayerImpl::CreatePictureLayerTilingSet() { |
| 1190 const LayerTreeSettings& settings = layer_tree_impl()->settings(); |
| 1191 return PictureLayerTilingSet::Create( |
| 1192 this, settings.max_tiles_for_interest_area, |
| 1193 layer_tree_impl()->use_gpu_rasterization() |
| 1194 ? 0.f |
| 1195 : settings.skewport_target_time_in_seconds, |
| 1196 settings.skewport_extrapolation_limit_in_content_pixels); |
| 1197 } |
| 1198 |
1203 void PictureLayerImpl::UpdateIdealScales() { | 1199 void PictureLayerImpl::UpdateIdealScales() { |
1204 DCHECK(CanHaveTilings()); | 1200 DCHECK(CanHaveTilings()); |
1205 | 1201 |
1206 float min_contents_scale = MinimumContentsScale(); | 1202 float min_contents_scale = MinimumContentsScale(); |
1207 DCHECK_GT(min_contents_scale, 0.f); | 1203 DCHECK_GT(min_contents_scale, 0.f); |
1208 float min_page_scale = layer_tree_impl()->min_page_scale_factor(); | 1204 float min_page_scale = layer_tree_impl()->min_page_scale_factor(); |
1209 DCHECK_GT(min_page_scale, 0.f); | 1205 DCHECK_GT(min_page_scale, 0.f); |
1210 float min_device_scale = 1.f; | 1206 float min_device_scale = 1.f; |
1211 float min_source_scale = | 1207 float min_source_scale = |
1212 min_contents_scale / min_page_scale / min_device_scale; | 1208 min_contents_scale / min_page_scale / min_device_scale; |
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1359 | 1355 |
1360 bool PictureLayerImpl::AllTilesRequiredForDrawAreReadyToDraw() const { | 1356 bool PictureLayerImpl::AllTilesRequiredForDrawAreReadyToDraw() const { |
1361 if (!layer_tree_impl()->IsActiveTree()) | 1357 if (!layer_tree_impl()->IsActiveTree()) |
1362 return true; | 1358 return true; |
1363 | 1359 |
1364 return AllTilesRequiredAreReadyToDraw( | 1360 return AllTilesRequiredAreReadyToDraw( |
1365 &PictureLayerTiling::IsTileRequiredForDrawIfVisible); | 1361 &PictureLayerTiling::IsTileRequiredForDrawIfVisible); |
1366 } | 1362 } |
1367 | 1363 |
1368 } // namespace cc | 1364 } // namespace cc |
OLD | NEW |