| Index: cc/layers/picture_layer_impl.cc
|
| diff --git a/cc/layers/picture_layer_impl.cc b/cc/layers/picture_layer_impl.cc
|
| index c0344e2e7eb1ce4d8d60ab9dabaf5f8ccf275208..25998524b99c71a1e9f23b2ac22e2c730fb46dc6 100644
|
| --- a/cc/layers/picture_layer_impl.cc
|
| +++ b/cc/layers/picture_layer_impl.cc
|
| @@ -483,6 +483,9 @@ void PictureLayerImpl::UpdateTiles(const Occlusion& occlusion_in_content_space,
|
| was_screen_space_transform_animating_ =
|
| draw_properties().screen_space_transform_is_animating;
|
|
|
| + if (draw_transform_is_animating())
|
| + pile_->set_likely_to_be_used_for_transform_animation();
|
| +
|
| should_update_tile_priorities_ = true;
|
|
|
| UpdateTilePriorities(occlusion_in_content_space);
|
| @@ -790,7 +793,7 @@ void PictureLayerImpl::SyncTiling(
|
| const PictureLayerTiling* tiling) {
|
| if (!CanHaveTilingWithScale(tiling->contents_scale()))
|
| return;
|
| - tilings_->AddTiling(tiling->contents_scale());
|
| + tilings_->AddTiling(tiling->contents_scale(), bounds());
|
|
|
| // If this tree needs update draw properties, then the tiling will
|
| // get updated prior to drawing or activation. If this tree does not
|
| @@ -840,7 +843,7 @@ void PictureLayerImpl::DoPostCommitInitialization() {
|
| DCHECK(layer_tree_impl()->IsPendingTree());
|
|
|
| if (!tilings_)
|
| - tilings_.reset(new PictureLayerTilingSet(this, bounds()));
|
| + tilings_ = make_scoped_ptr(new PictureLayerTilingSet(this));
|
|
|
| DCHECK(!twin_layer_);
|
| twin_layer_ = static_cast<PictureLayerImpl*>(
|
| @@ -861,7 +864,7 @@ PictureLayerTiling* PictureLayerImpl::AddTiling(float contents_scale) {
|
| DCHECK(CanHaveTilingWithScale(contents_scale)) <<
|
| "contents_scale: " << contents_scale;
|
|
|
| - PictureLayerTiling* tiling = tilings_->AddTiling(contents_scale);
|
| + PictureLayerTiling* tiling = tilings_->AddTiling(contents_scale, bounds());
|
|
|
| DCHECK(pile_->HasRecordings());
|
|
|
| @@ -1239,19 +1242,7 @@ void PictureLayerImpl::SanityCheckTilingState() const {
|
| }
|
|
|
| bool PictureLayerImpl::ShouldAdjustRasterScaleDuringScaleAnimations() const {
|
| - if (!layer_tree_impl()->use_gpu_rasterization())
|
| - return false;
|
| -
|
| - // Re-rastering text at different scales using GPU rasterization causes
|
| - // texture uploads for glyphs at each scale (see crbug.com/366225). To
|
| - // workaround this performance issue, we don't re-rasterize layers with
|
| - // text during scale animations.
|
| - // TODO(ajuma): Remove this workaround once text can be efficiently
|
| - // re-rastered at different scales (e.g. by using distance-field fonts).
|
| - if (pile_->has_text())
|
| - return false;
|
| -
|
| - return true;
|
| + return layer_tree_impl()->use_gpu_rasterization();
|
| }
|
|
|
| float PictureLayerImpl::MaximumTilingContentsScale() const {
|
| @@ -1450,7 +1441,7 @@ PictureLayerImpl::LayerRasterTileIterator::LayerRasterTileIterator(
|
| PictureLayerTiling::TilingRasterTileIterator(tiling);
|
| }
|
|
|
| - if (tiling->resolution() == LOW_RESOLUTION) {
|
| + if (prioritize_low_res && tiling->resolution() == LOW_RESOLUTION) {
|
| iterators_[LOW_RES] =
|
| PictureLayerTiling::TilingRasterTileIterator(tiling);
|
| }
|
|
|