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. |