| Index: cc/layers/picture_layer_impl.cc
|
| diff --git a/cc/layers/picture_layer_impl.cc b/cc/layers/picture_layer_impl.cc
|
| index 56fcfecbfe559b8a5827426e681d925be025c026..b2373fcae8326558b47b9760dd256e075fc1ad3f 100644
|
| --- a/cc/layers/picture_layer_impl.cc
|
| +++ b/cc/layers/picture_layer_impl.cc
|
| @@ -874,9 +874,14 @@ void PictureLayerImpl::AddTilingsForRasterScale() {
|
| }
|
|
|
| bool PictureLayerImpl::ShouldAdjustRasterScale() const {
|
| - // TODO(vmpstr): We might want to adjust the raster scale once in a while.
|
| - if (is_directly_composited_image_)
|
| + if (is_directly_composited_image_) {
|
| + float max_scale = std::max(1.f, MinimumContentsScale());
|
| + if (raster_source_scale_ < std::min(ideal_source_scale_, max_scale))
|
| + return true;
|
| + if (raster_source_scale_ > 4 * ideal_source_scale_)
|
| + return true;
|
| return false;
|
| + }
|
|
|
| if (was_screen_space_transform_animating_ !=
|
| draw_properties().screen_space_transform_is_animating)
|
| @@ -956,11 +961,25 @@ void PictureLayerImpl::AddLowResolutionTilingIfNeeded() {
|
| }
|
|
|
| void PictureLayerImpl::RecalculateRasterScales() {
|
| - // TODO(vmpstr): We might want to adjust these once in a while.
|
| if (is_directly_composited_image_) {
|
| + if (!raster_source_scale_)
|
| + raster_source_scale_ = 1.f;
|
| +
|
| + float min_scale = MinimumContentsScale();
|
| + float max_scale = std::max(1.f, MinimumContentsScale());
|
| + float clamped_ideal_source_scale_ =
|
| + std::max(min_scale, std::min(ideal_source_scale_, max_scale));
|
| +
|
| + while (raster_source_scale_ < clamped_ideal_source_scale_)
|
| + raster_source_scale_ *= 2.f;
|
| + while (raster_source_scale_ > 4 * clamped_ideal_source_scale_)
|
| + raster_source_scale_ /= 2.f;
|
| +
|
| + raster_source_scale_ =
|
| + std::max(min_scale, std::min(raster_source_scale_, max_scale));
|
| +
|
| raster_page_scale_ = 1.f;
|
| raster_device_scale_ = 1.f;
|
| - raster_source_scale_ = std::max(1.f, MinimumContentsScale());
|
| raster_contents_scale_ = raster_source_scale_;
|
| low_res_raster_contents_scale_ = raster_contents_scale_;
|
| return;
|
| @@ -1195,15 +1214,6 @@ PictureLayerImpl::CreatePictureLayerTilingSet() {
|
| }
|
|
|
| void PictureLayerImpl::UpdateIdealScales() {
|
| - // TODO(vmpstr): We might want to adjust these once in a while.
|
| - if (is_directly_composited_image_) {
|
| - ideal_contents_scale_ = 1.f;
|
| - ideal_page_scale_ = 1.f;
|
| - ideal_device_scale_ = 1.f;
|
| - ideal_source_scale_ = 1.f;
|
| - return;
|
| - }
|
| -
|
| DCHECK(CanHaveTilings());
|
|
|
| float min_contents_scale = MinimumContentsScale();
|
|
|