| Index: cc/layers/picture_layer_impl.cc
|
| diff --git a/cc/layers/picture_layer_impl.cc b/cc/layers/picture_layer_impl.cc
|
| index f3e99e23dbc1f4848bbf3a0d27a1e9949f537af9..8402298a03e19a680e6e08729996d06d9a71a74b 100644
|
| --- a/cc/layers/picture_layer_impl.cc
|
| +++ b/cc/layers/picture_layer_impl.cc
|
| @@ -99,7 +99,10 @@ void PictureLayerImpl::AppendQuads(QuadSink* quad_sink,
|
| quad_sink->UseSharedQuadState(CreateSharedQuadState());
|
| AppendDebugBorderQuad(quad_sink, shared_quad_state, append_quads_data);
|
|
|
| - if (!append_quads_data->allow_tile_draw_quads) {
|
| + bool use_ganesh = CanDrawDirectlyToBackbuffer() &&
|
| + layer_tree_impl()->settings().force_direct_layer_drawing;
|
| +
|
| + if (use_ganesh || !append_quads_data->allow_tile_draw_quads) {
|
| gfx::Rect geometry_rect = rect;
|
| gfx::Rect opaque_rect = contents_opaque() ? geometry_rect : gfx::Rect();
|
| gfx::Size texture_size = rect.size();
|
| @@ -116,6 +119,7 @@ void PictureLayerImpl::AppendQuads(QuadSink* quad_sink,
|
| false,
|
| quad_content_rect,
|
| contents_scale,
|
| + use_ganesh,
|
| pile_);
|
| if (quad_sink->Append(quad.PassAs<DrawQuad>(), append_quads_data))
|
| append_quads_data->num_missing_tiles++;
|
| @@ -249,6 +253,7 @@ void PictureLayerImpl::AppendQuads(QuadSink* quad_sink,
|
| drawing_info.contents_swizzled(),
|
| iter->content_rect(),
|
| iter->contents_scale(),
|
| + use_ganesh,
|
| pile_);
|
| quad_sink->Append(quad.PassAs<DrawQuad>(), append_quads_data);
|
| break;
|
| @@ -379,6 +384,19 @@ void PictureLayerImpl::CalculateContentsScale(
|
| ideal_device_scale_ = ideal_device_scale;
|
| ideal_source_scale_ = std::max(ideal_source_scale, min_source_scale);
|
|
|
| + if (CanDrawDirectlyToBackbuffer() &&
|
| + layer_tree_impl()->settings().force_direct_layer_drawing) {
|
| + if (tilings_)
|
| + tilings_->RemoveAllTilings();
|
| +
|
| + *contents_scale_x = ideal_contents_scale_;
|
| + *contents_scale_y = ideal_contents_scale_;
|
| + *content_bounds = gfx::ToCeiledSize(gfx::ScaleSize(bounds(),
|
| + ideal_contents_scale_,
|
| + ideal_contents_scale_));
|
| + return;
|
| + }
|
| +
|
| ManageTilings(animating_transform_to_screen);
|
|
|
| // The content scale and bounds for a PictureLayerImpl is somewhat fictitious.
|
|
|