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 b8436756fc4762df4194493b3d602e274a8d1ab3..cefee9153e18322b1eb62dff6ecc4b6d7c0fe6f9 100644 |
--- a/cc/trees/layer_tree_host_common.cc |
+++ b/cc/trees/layer_tree_host_common.cc |
@@ -1091,6 +1091,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> |
@@ -1451,8 +1452,13 @@ 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 = false; |
+ if (globals.can_render_to_separate_surface) |
danakj
2013/09/24 14:47:04
{}
|
+ 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) && |
@@ -1941,6 +1947,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; |
@@ -1998,6 +2006,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; |