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 27090dac4a75df9ca9e3b21362883fa1efb8588e..c2b77bd0ff1dab5daca92c288d6f89e036c32f63 100644 |
--- a/cc/trees/layer_tree_host_common.cc |
+++ b/cc/trees/layer_tree_host_common.cc |
@@ -1088,6 +1088,7 @@ struct SubtreeGlobals { |
float page_scale_factor; |
LayerType* page_scale_application_layer; |
bool can_adjust_raster_scales; |
+ bool can_render_to_separate_surface; |
}; |
template<typename LayerType, typename RenderSurfaceType> |
@@ -1448,8 +1449,14 @@ static void CalculateDrawPropertiesInternal( |
? combined_transform_scales |
: gfx::Vector2dF(layer_scale_factors, layer_scale_factors); |
- if (SubtreeShouldRenderToSeparateSurface( |
- layer, combined_transform.Preserves2dAxisAlignment())) { |
+ bool render_to_separate_surface; |
+ if (globals.can_render_to_separate_surface) { |
+ render_to_separate_surface = SubtreeShouldRenderToSeparateSurface( |
+ layer, combined_transform.Preserves2dAxisAlignment()); |
+ } else { |
+ render_to_separate_surface = IsRootLayer(layer); |
+ } |
+ if (render_to_separate_surface) { |
// Check back-face visibility before continuing with this surface and its |
// subtree |
if (!layer->double_sided() && TransformToParentIsKnown(layer) && |
@@ -1939,6 +1946,8 @@ void LayerTreeHostCommon::CalculateDrawProperties( |
globals.device_scale_factor = inputs->device_scale_factor; |
globals.page_scale_factor = inputs->page_scale_factor; |
globals.page_scale_application_layer = inputs->page_scale_application_layer; |
+ globals.can_render_to_separate_surface = |
+ inputs->can_render_to_separate_surface; |
globals.can_adjust_raster_scales = inputs->can_adjust_raster_scales; |
DataForRecursion<Layer, RenderSurface> data_for_recursion; |
@@ -1996,6 +2005,8 @@ void LayerTreeHostCommon::CalculateDrawProperties( |
globals.device_scale_factor = inputs->device_scale_factor; |
globals.page_scale_factor = inputs->page_scale_factor; |
globals.page_scale_application_layer = inputs->page_scale_application_layer; |
+ globals.can_render_to_separate_surface = |
+ inputs->can_render_to_separate_surface; |
globals.can_adjust_raster_scales = inputs->can_adjust_raster_scales; |
DataForRecursion<LayerImpl, RenderSurfaceImpl> data_for_recursion; |