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 <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <algorithm> | 10 #include <algorithm> |
(...skipping 856 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
867 if (layer_tree_impl()->IsPendingTree()) { | 867 if (layer_tree_impl()->IsPendingTree()) { |
868 // On the pending tree, drop any tilings that are non-ideal since we don't | 868 // On the pending tree, drop any tilings that are non-ideal since we don't |
869 // need them to activate anyway. | 869 // need them to activate anyway. |
870 tilings_->RemoveNonIdealTilings(); | 870 tilings_->RemoveNonIdealTilings(); |
871 } | 871 } |
872 | 872 |
873 SanityCheckTilingState(); | 873 SanityCheckTilingState(); |
874 } | 874 } |
875 | 875 |
876 bool PictureLayerImpl::ShouldAdjustRasterScale() const { | 876 bool PictureLayerImpl::ShouldAdjustRasterScale() const { |
877 // TODO(vmpstr): We might want to adjust the raster scale once in a while. | 877 if (is_directly_composited_image_) { |
878 if (is_directly_composited_image_) | 878 float max_scale = std::max(1.f, MinimumContentsScale()); |
| 879 if (raster_source_scale_ < std::min(ideal_source_scale_, max_scale)) |
| 880 return true; |
| 881 if (raster_source_scale_ > 4 * ideal_source_scale_) |
| 882 return true; |
879 return false; | 883 return false; |
| 884 } |
880 | 885 |
881 if (was_screen_space_transform_animating_ != | 886 if (was_screen_space_transform_animating_ != |
882 draw_properties().screen_space_transform_is_animating) | 887 draw_properties().screen_space_transform_is_animating) |
883 return true; | 888 return true; |
884 | 889 |
885 if (draw_properties().screen_space_transform_is_animating && | 890 if (draw_properties().screen_space_transform_is_animating && |
886 raster_contents_scale_ != ideal_contents_scale_ && | 891 raster_contents_scale_ != ideal_contents_scale_ && |
887 ShouldAdjustRasterScaleDuringScaleAnimations()) | 892 ShouldAdjustRasterScaleDuringScaleAnimations()) |
888 return true; | 893 return true; |
889 | 894 |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
949 bool is_pinching = layer_tree_impl()->PinchGestureActive(); | 954 bool is_pinching = layer_tree_impl()->PinchGestureActive(); |
950 bool is_animating = draw_properties().screen_space_transform_is_animating; | 955 bool is_animating = draw_properties().screen_space_transform_is_animating; |
951 if (!is_pinching && !is_animating) { | 956 if (!is_pinching && !is_animating) { |
952 if (!low_res) | 957 if (!low_res) |
953 low_res = AddTiling(low_res_raster_contents_scale_); | 958 low_res = AddTiling(low_res_raster_contents_scale_); |
954 low_res->set_resolution(LOW_RESOLUTION); | 959 low_res->set_resolution(LOW_RESOLUTION); |
955 } | 960 } |
956 } | 961 } |
957 | 962 |
958 void PictureLayerImpl::RecalculateRasterScales() { | 963 void PictureLayerImpl::RecalculateRasterScales() { |
959 // TODO(vmpstr): We might want to adjust these once in a while. | |
960 if (is_directly_composited_image_) { | 964 if (is_directly_composited_image_) { |
| 965 if (!raster_source_scale_) |
| 966 raster_source_scale_ = 1.f; |
| 967 |
| 968 float min_scale = MinimumContentsScale(); |
| 969 float max_scale = std::max(1.f, MinimumContentsScale()); |
| 970 float clamped_ideal_source_scale_ = |
| 971 std::max(min_scale, std::min(ideal_source_scale_, max_scale)); |
| 972 |
| 973 while (raster_source_scale_ < clamped_ideal_source_scale_) |
| 974 raster_source_scale_ *= 2.f; |
| 975 while (raster_source_scale_ > 4 * clamped_ideal_source_scale_) |
| 976 raster_source_scale_ /= 2.f; |
| 977 |
| 978 raster_source_scale_ = |
| 979 std::max(min_scale, std::min(raster_source_scale_, max_scale)); |
| 980 |
961 raster_page_scale_ = 1.f; | 981 raster_page_scale_ = 1.f; |
962 raster_device_scale_ = 1.f; | 982 raster_device_scale_ = 1.f; |
963 raster_source_scale_ = std::max(1.f, MinimumContentsScale()); | |
964 raster_contents_scale_ = raster_source_scale_; | 983 raster_contents_scale_ = raster_source_scale_; |
965 low_res_raster_contents_scale_ = raster_contents_scale_; | 984 low_res_raster_contents_scale_ = raster_contents_scale_; |
966 return; | 985 return; |
967 } | 986 } |
968 | 987 |
969 float old_raster_contents_scale = raster_contents_scale_; | 988 float old_raster_contents_scale = raster_contents_scale_; |
970 float old_raster_page_scale = raster_page_scale_; | 989 float old_raster_page_scale = raster_page_scale_; |
971 | 990 |
972 raster_device_scale_ = ideal_device_scale_; | 991 raster_device_scale_ = ideal_device_scale_; |
973 raster_page_scale_ = ideal_page_scale_; | 992 raster_page_scale_ = ideal_page_scale_; |
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1188 const LayerTreeSettings& settings = layer_tree_impl()->settings(); | 1207 const LayerTreeSettings& settings = layer_tree_impl()->settings(); |
1189 return PictureLayerTilingSet::Create( | 1208 return PictureLayerTilingSet::Create( |
1190 GetTree(), this, settings.tiling_interest_area_padding, | 1209 GetTree(), this, settings.tiling_interest_area_padding, |
1191 layer_tree_impl()->use_gpu_rasterization() | 1210 layer_tree_impl()->use_gpu_rasterization() |
1192 ? settings.gpu_rasterization_skewport_target_time_in_seconds | 1211 ? settings.gpu_rasterization_skewport_target_time_in_seconds |
1193 : settings.skewport_target_time_in_seconds, | 1212 : settings.skewport_target_time_in_seconds, |
1194 settings.skewport_extrapolation_limit_in_screen_pixels); | 1213 settings.skewport_extrapolation_limit_in_screen_pixels); |
1195 } | 1214 } |
1196 | 1215 |
1197 void PictureLayerImpl::UpdateIdealScales() { | 1216 void PictureLayerImpl::UpdateIdealScales() { |
1198 // TODO(vmpstr): We might want to adjust these once in a while. | |
1199 if (is_directly_composited_image_) { | |
1200 ideal_contents_scale_ = 1.f; | |
1201 ideal_page_scale_ = 1.f; | |
1202 ideal_device_scale_ = 1.f; | |
1203 ideal_source_scale_ = 1.f; | |
1204 return; | |
1205 } | |
1206 | |
1207 DCHECK(CanHaveTilings()); | 1217 DCHECK(CanHaveTilings()); |
1208 | 1218 |
1209 float min_contents_scale = MinimumContentsScale(); | 1219 float min_contents_scale = MinimumContentsScale(); |
1210 DCHECK_GT(min_contents_scale, 0.f); | 1220 DCHECK_GT(min_contents_scale, 0.f); |
1211 | 1221 |
1212 ideal_page_scale_ = IsAffectedByPageScale() | 1222 ideal_page_scale_ = IsAffectedByPageScale() |
1213 ? layer_tree_impl()->current_page_scale_factor() | 1223 ? layer_tree_impl()->current_page_scale_factor() |
1214 : 1.f; | 1224 : 1.f; |
1215 ideal_device_scale_ = layer_tree_impl()->device_scale_factor(); | 1225 ideal_device_scale_ = layer_tree_impl()->device_scale_factor(); |
1216 ideal_contents_scale_ = std::max(GetIdealContentsScale(), min_contents_scale); | 1226 ideal_contents_scale_ = std::max(GetIdealContentsScale(), min_contents_scale); |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1291 bool PictureLayerImpl::IsOnActiveOrPendingTree() const { | 1301 bool PictureLayerImpl::IsOnActiveOrPendingTree() const { |
1292 return !layer_tree_impl()->IsRecycleTree(); | 1302 return !layer_tree_impl()->IsRecycleTree(); |
1293 } | 1303 } |
1294 | 1304 |
1295 bool PictureLayerImpl::HasValidTilePriorities() const { | 1305 bool PictureLayerImpl::HasValidTilePriorities() const { |
1296 return IsOnActiveOrPendingTree() && | 1306 return IsOnActiveOrPendingTree() && |
1297 is_drawn_render_surface_layer_list_member(); | 1307 is_drawn_render_surface_layer_list_member(); |
1298 } | 1308 } |
1299 | 1309 |
1300 } // namespace cc | 1310 } // namespace cc |
OLD | NEW |