Index: cc/trees/layer_tree_host_common.cc |
diff --git a/cc/trees/layer_tree_host_common.cc b/cc/trees/layer_tree_host_common.cc |
index 3e70aeb38d24ba19239123b16c3b32a16d3cacfd..e12e272653ab7fa2ed335c41ed084711a0da16c0 100644 |
--- a/cc/trees/layer_tree_host_common.cc |
+++ b/cc/trees/layer_tree_host_common.cc |
@@ -1831,14 +1831,6 @@ static void CalculateDrawPropertiesInternal( |
data_for_children.full_hierarchy_matrix = |
data_from_ancestor.full_hierarchy_matrix; |
- // If the subtree will scale layer contents by the transform hierarchy, then |
- // we should scale things into the render surface by the transform hierarchy |
- // to take advantage of that. |
- gfx::Vector2dF render_surface_sublayer_scale = |
- globals.can_adjust_raster_scales |
- ? combined_transform_scales |
- : gfx::Vector2dF(layer_scale_factors, layer_scale_factors); |
- |
bool render_to_separate_surface = |
IsRootLayer(layer) || |
(globals.can_render_to_separate_surface && layer->render_surface()); |
@@ -1873,17 +1865,19 @@ static void CalculateDrawPropertiesInternal( |
// space which we do not want; so here we use the combined_transform |
// instead of the draw_transform. However, we do need to add a different |
// scale factor that accounts for the surface's pixel dimensions. |
- combined_transform.Scale(1.0 / render_surface_sublayer_scale.x(), |
- 1.0 / render_surface_sublayer_scale.y()); |
- render_surface->SetDrawTransform(combined_transform); |
+ // Remove the combined_transform scale from the draw transform. |
+ gfx::Transform draw_transform = combined_transform; |
+ draw_transform.Scale(1.0 / combined_transform_scales.x(), |
+ 1.0 / combined_transform_scales.y()); |
+ render_surface->SetDrawTransform(draw_transform); |
// The owning layer's transform was re-parented by the surface, so the |
// layer's new draw_transform only needs to scale the layer to surface |
// space. |
layer_draw_properties.target_space_transform.MakeIdentity(); |
- layer_draw_properties.target_space_transform. |
- Scale(render_surface_sublayer_scale.x() / layer->contents_scale_x(), |
- render_surface_sublayer_scale.y() / layer->contents_scale_y()); |
+ layer_draw_properties.target_space_transform.Scale( |
+ combined_transform_scales.x() / layer->contents_scale_x(), |
+ combined_transform_scales.y() / layer->contents_scale_y()); |
// Inside the surface's subtree, we scale everything to the owning layer's |
// scale. The sublayer matrix transforms layer rects into target surface |
@@ -1892,8 +1886,8 @@ static void CalculateDrawPropertiesInternal( |
// but we apply it explicitly to the owning layer and the remainder of the |
// subtree independently. |
DCHECK(data_for_children.parent_matrix.IsIdentity()); |
- data_for_children.parent_matrix.Scale(render_surface_sublayer_scale.x(), |
- render_surface_sublayer_scale.y()); |
+ data_for_children.parent_matrix.Scale(combined_transform_scales.x(), |
+ combined_transform_scales.y()); |
// Even if the |layer_is_drawn|, it only contributes to a drawn surface |
// when the |layer_is_visible|. |
@@ -2311,14 +2305,14 @@ static void CalculateDrawPropertiesInternal( |
// surface's subtree into layer space. |
gfx::Transform screen_space_transform = layer->screen_space_transform(); |
screen_space_transform.Scale( |
- layer->contents_scale_x() / render_surface_sublayer_scale.x(), |
- layer->contents_scale_y() / render_surface_sublayer_scale.y()); |
+ layer->contents_scale_x() / combined_transform_scales.x(), |
+ layer->contents_scale_y() / combined_transform_scales.y()); |
render_surface->SetScreenSpaceTransform(screen_space_transform); |
if (layer->replica_layer()) { |
gfx::Transform surface_origin_to_replica_origin_transform; |
surface_origin_to_replica_origin_transform.Scale( |
- render_surface_sublayer_scale.x(), render_surface_sublayer_scale.y()); |
+ combined_transform_scales.x(), combined_transform_scales.y()); |
surface_origin_to_replica_origin_transform.Translate( |
layer->replica_layer()->position().x() + |
layer->replica_layer()->transform_origin().x(), |
@@ -2330,8 +2324,8 @@ static void CalculateDrawPropertiesInternal( |
-layer->replica_layer()->transform_origin().x(), |
-layer->replica_layer()->transform_origin().y()); |
surface_origin_to_replica_origin_transform.Scale( |
- 1.0 / render_surface_sublayer_scale.x(), |
- 1.0 / render_surface_sublayer_scale.y()); |
+ 1.0 / combined_transform_scales.x(), |
+ 1.0 / combined_transform_scales.y()); |
// Compute the replica's "originTransform" that maps from the replica's |
// origin space to the target surface origin space. |