| 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 8b55bbc7920d1d7b0b6f363de314ca9e3fba7aab..2ac9ef42fa731067545289fce3ed0cb012d1c1fa 100644
|
| --- a/cc/trees/layer_tree_host_common.cc
|
| +++ b/cc/trees/layer_tree_host_common.cc
|
| @@ -12,6 +12,7 @@
|
| #include "cc/layers/layer.h"
|
| #include "cc/layers/layer_impl.h"
|
| #include "cc/layers/layer_iterator.h"
|
| +#include "cc/layers/render_surface_draw_properties.h"
|
| #include "cc/layers/render_surface_impl.h"
|
| #include "cc/trees/draw_property_utils.h"
|
| #include "cc/trees/layer_tree_host.h"
|
| @@ -2268,146 +2269,105 @@ static bool ApproximatelyEqual(const gfx::Transform& a,
|
|
|
| void VerifyPropertyTreeValuesForSurface(RenderSurfaceImpl* render_surface,
|
| PropertyTrees* property_trees) {
|
| - const bool render_surface_draw_transforms_match =
|
| - ApproximatelyEqual(render_surface->draw_transform(),
|
| - DrawTransformOfRenderSurfaceFromPropertyTrees(
|
| - render_surface, property_trees->transform_tree));
|
| + RenderSurfaceDrawProperties draw_properties;
|
| + ComputeSurfaceDrawPropertiesUsingPropertyTrees(render_surface, property_trees,
|
| + &draw_properties);
|
| +
|
| + // content_rect has to be computed recursively, so is computed separately from
|
| + // other draw properties.
|
| + draw_properties.content_rect =
|
| + render_surface->content_rect_from_property_trees();
|
| +
|
| + const bool render_surface_draw_transforms_match = ApproximatelyEqual(
|
| + render_surface->draw_transform(), draw_properties.draw_transform);
|
| CHECK(render_surface_draw_transforms_match)
|
| << "expected: " << render_surface->draw_transform().ToString()
|
| - << " actual: "
|
| - << DrawTransformOfRenderSurfaceFromPropertyTrees(
|
| - render_surface, property_trees->transform_tree)
|
| - .ToString();
|
| + << " actual: " << draw_properties.draw_transform.ToString();
|
|
|
| const bool render_surface_screen_space_transform_match =
|
| ApproximatelyEqual(render_surface->screen_space_transform(),
|
| - ScreenSpaceTransformOfRenderSurfaceFromPropertyTrees(
|
| - render_surface, property_trees->transform_tree));
|
| + draw_properties.screen_space_transform);
|
| CHECK(render_surface_screen_space_transform_match)
|
| << "expected: " << render_surface->screen_space_transform().ToString()
|
| - << " actual: "
|
| - << ScreenSpaceTransformOfRenderSurfaceFromPropertyTrees(
|
| - render_surface, property_trees->transform_tree)
|
| - .ToString();
|
| + << " actual: " << draw_properties.screen_space_transform.ToString();
|
|
|
| const bool render_surface_replica_draw_transforms_match =
|
| ApproximatelyEqual(render_surface->replica_draw_transform(),
|
| - DrawTransformOfRenderSurfaceReplicaFromPropertyTrees(
|
| - render_surface, property_trees->transform_tree));
|
| + draw_properties.replica_draw_transform);
|
| CHECK(render_surface_replica_draw_transforms_match)
|
| << "expected: " << render_surface->replica_draw_transform().ToString()
|
| - << " actual: "
|
| - << DrawTransformOfRenderSurfaceReplicaFromPropertyTrees(
|
| - render_surface, property_trees->transform_tree)
|
| - .ToString();
|
| + << " actual: " << draw_properties.replica_draw_transform.ToString();
|
|
|
| const bool render_surface_replica_screen_space_transforms_match =
|
| - ApproximatelyEqual(
|
| - render_surface->replica_screen_space_transform(),
|
| - ScreenSpaceTransformOfRenderSurfaceReplicaFromPropertyTrees(
|
| - render_surface, property_trees->transform_tree));
|
| + ApproximatelyEqual(render_surface->replica_screen_space_transform(),
|
| + draw_properties.replica_screen_space_transform);
|
| CHECK(render_surface_replica_screen_space_transforms_match)
|
| << "expected: "
|
| << render_surface->replica_screen_space_transform().ToString()
|
| << " actual: "
|
| - << ScreenSpaceTransformOfRenderSurfaceReplicaFromPropertyTrees(
|
| - render_surface, property_trees->transform_tree)
|
| - .ToString();
|
| -
|
| - CHECK_EQ(render_surface->is_clipped(),
|
| - RenderSurfaceIsClippedFromPropertyTrees(render_surface,
|
| - property_trees->clip_tree));
|
| -
|
| - const bool render_surface_clip_rects_match =
|
| - ApproximatelyEqual(render_surface->clip_rect(),
|
| - ClipRectOfRenderSurfaceFromPropertyTrees(
|
| - render_surface, property_trees->clip_tree));
|
| + << draw_properties.replica_screen_space_transform.ToString();
|
| +
|
| + CHECK_EQ(render_surface->is_clipped(), draw_properties.is_clipped);
|
| +
|
| + const bool render_surface_clip_rects_match = ApproximatelyEqual(
|
| + render_surface->clip_rect(), draw_properties.clip_rect);
|
| CHECK(render_surface_clip_rects_match)
|
| - << "expected: " << render_surface->clip_rect().ToString() << " actual: "
|
| - << ClipRectOfRenderSurfaceFromPropertyTrees(render_surface,
|
| - property_trees->clip_tree)
|
| - .ToString();
|
| -
|
| - const bool render_surface_content_rects_match =
|
| - ApproximatelyEqual(render_surface->content_rect(),
|
| - render_surface->content_rect_from_property_trees());
|
| + << "expected: " << render_surface->clip_rect().ToString()
|
| + << " actual: " << draw_properties.clip_rect.ToString();
|
| +
|
| + CHECK_EQ(render_surface->draw_opacity(), draw_properties.draw_opacity);
|
| +
|
| + const bool render_surface_content_rects_match = ApproximatelyEqual(
|
| + render_surface->content_rect(), draw_properties.content_rect);
|
| CHECK(render_surface_content_rects_match)
|
| << "expected: " << render_surface->content_rect().ToString()
|
| - << " actual: "
|
| - << render_surface->content_rect_from_property_trees().ToString();
|
| -
|
| - CHECK_EQ(render_surface->draw_opacity(),
|
| - DrawOpacityOfRenderSurfaceFromPropertyTrees(
|
| - render_surface, property_trees->effect_tree));
|
| + << " actual: " << draw_properties.content_rect.ToString();
|
| }
|
|
|
| void VerifyPropertyTreeValuesForLayer(LayerImpl* current_layer,
|
| PropertyTrees* property_trees,
|
| bool layers_always_allowed_lcd_text,
|
| bool can_use_lcd_text) {
|
| - const bool visible_rects_match =
|
| - ApproximatelyEqual(current_layer->visible_layer_rect(),
|
| - current_layer->visible_rect_from_property_trees());
|
| + DrawProperties draw_properties;
|
| + ComputeLayerDrawPropertiesUsingPropertyTrees(
|
| + current_layer, property_trees, layers_always_allowed_lcd_text,
|
| + can_use_lcd_text, &draw_properties);
|
| +
|
| + const bool visible_rects_match = ApproximatelyEqual(
|
| + current_layer->visible_layer_rect(), draw_properties.visible_layer_rect);
|
| CHECK(visible_rects_match)
|
| << "expected: " << current_layer->visible_layer_rect().ToString()
|
| - << " actual: "
|
| - << current_layer->visible_rect_from_property_trees().ToString();
|
| + << " actual: " << draw_properties.visible_layer_rect.ToString();
|
|
|
| - const bool draw_transforms_match =
|
| - ApproximatelyEqual(current_layer->draw_transform(),
|
| - DrawTransformFromPropertyTrees(
|
| - current_layer, property_trees->transform_tree));
|
| + const bool draw_transforms_match = ApproximatelyEqual(
|
| + current_layer->draw_transform(), draw_properties.target_space_transform);
|
| CHECK(draw_transforms_match)
|
| << "expected: " << current_layer->draw_transform().ToString()
|
| - << " actual: "
|
| - << DrawTransformFromPropertyTrees(
|
| - current_layer, property_trees->transform_tree).ToString();
|
| -
|
| - const bool draw_opacities_match =
|
| - current_layer->draw_opacity() ==
|
| - DrawOpacityFromPropertyTrees(current_layer, property_trees->effect_tree);
|
| - CHECK(draw_opacities_match)
|
| - << "expected: " << current_layer->draw_opacity()
|
| - << " actual: " << DrawOpacityFromPropertyTrees(
|
| - current_layer, property_trees->effect_tree);
|
| -
|
| - const bool can_use_lcd_text_match =
|
| - CanUseLcdTextFromPropertyTrees(
|
| - current_layer, layers_always_allowed_lcd_text, can_use_lcd_text,
|
| - property_trees) == current_layer->can_use_lcd_text();
|
| - CHECK(can_use_lcd_text_match);
|
| + << " actual: " << draw_properties.target_space_transform.ToString();
|
|
|
| + CHECK_EQ(current_layer->draw_opacity(), draw_properties.opacity);
|
| + CHECK_EQ(current_layer->can_use_lcd_text(), draw_properties.can_use_lcd_text);
|
| CHECK_EQ(current_layer->screen_space_transform_is_animating(),
|
| - ScreenSpaceTransformIsAnimatingFromPropertyTrees(
|
| - current_layer, property_trees->transform_tree));
|
| + draw_properties.screen_space_transform_is_animating);
|
|
|
| const bool drawable_content_rects_match =
|
| ApproximatelyEqual(current_layer->drawable_content_rect(),
|
| - DrawableContentRectFromPropertyTrees(
|
| - current_layer, property_trees->transform_tree));
|
| + draw_properties.drawable_content_rect);
|
| CHECK(drawable_content_rects_match)
|
| << "expected: " << current_layer->drawable_content_rect().ToString()
|
| - << " actual: "
|
| - << DrawableContentRectFromPropertyTrees(current_layer,
|
| - property_trees->transform_tree)
|
| - .ToString();
|
| + << " actual: " << draw_properties.drawable_content_rect.ToString();
|
|
|
| - const bool clip_rects_match = ApproximatelyEqual(
|
| - current_layer->clip_rect(),
|
| - ClipRectFromPropertyTrees(current_layer, property_trees->transform_tree));
|
| + const bool clip_rects_match =
|
| + ApproximatelyEqual(current_layer->clip_rect(), draw_properties.clip_rect);
|
| CHECK(clip_rects_match) << "expected: "
|
| << current_layer->clip_rect().ToString()
|
| << " actual: "
|
| - << ClipRectFromPropertyTrees(
|
| - current_layer, property_trees->transform_tree)
|
| - .ToString();
|
| + << draw_properties.clip_rect.ToString();
|
|
|
| CHECK_EQ(current_layer->draw_properties().maximum_animation_contents_scale,
|
| - MaximumAnimationTargetScaleFromPropertyTrees(
|
| - current_layer, property_trees->transform_tree));
|
| + draw_properties.maximum_animation_contents_scale);
|
| CHECK_EQ(current_layer->draw_properties().starting_animation_contents_scale,
|
| - StartingAnimationScaleFromPropertyTrees(
|
| - current_layer, property_trees->transform_tree));
|
| + draw_properties.starting_animation_contents_scale);
|
| }
|
|
|
| void VerifyPropertyTreeValues(
|
| @@ -2582,10 +2542,9 @@ void CalculateRenderSurfaceLayerListInternal(
|
| // If the owning layer of a render surface draws content, the content
|
| // rect of the render surface is initialized to the drawable content
|
| // rect of the layer.
|
| - gfx::Rect content_rect =
|
| - layer->DrawsContent() ? DrawableContentRectFromPropertyTrees(
|
| - layer, property_trees->transform_tree)
|
| - : gfx::Rect();
|
| + gfx::Rect content_rect = layer->DrawsContent()
|
| + ? layer->drawable_content_rect()
|
| + : gfx::Rect();
|
| layer->render_surface()->SetAccumulatedContentRect(content_rect);
|
| }
|
| } else if (!layer_should_be_skipped &&
|
| @@ -2594,8 +2553,7 @@ void CalculateRenderSurfaceLayerListInternal(
|
| // content rect of the render surface it is drawing into.
|
| gfx::Rect surface_content_rect =
|
| layer->render_target()->render_surface()->accumulated_content_rect();
|
| - surface_content_rect.Union(DrawableContentRectFromPropertyTrees(
|
| - layer, property_trees->transform_tree));
|
| + surface_content_rect.Union(layer->drawable_content_rect());
|
| layer->render_target()->render_surface()->SetAccumulatedContentRect(
|
| surface_content_rect);
|
| }
|
| @@ -2634,9 +2592,7 @@ void CalculateRenderSurfaceLayerListInternal(
|
|
|
| if (verify_property_trees && render_to_separate_surface &&
|
| !IsRootLayer(layer)) {
|
| - if (!layer->replica_layer() &&
|
| - RenderSurfaceIsClippedFromPropertyTrees(layer->render_surface(),
|
| - property_trees->clip_tree)) {
|
| + if (!layer->replica_layer() && layer->render_surface()->is_clipped()) {
|
| // Here, we clip the render surface's content rect with its clip rect.
|
| // As the clip rect of render surface is in the surface's target space,
|
| // we first map the content rect into the target space, intersect it with
|
| @@ -2646,11 +2602,8 @@ void CalculateRenderSurfaceLayerListInternal(
|
|
|
| if (!surface_content_rect.IsEmpty()) {
|
| gfx::Rect surface_clip_rect = LayerTreeHostCommon::CalculateVisibleRect(
|
| - ClipRectOfRenderSurfaceFromPropertyTrees(layer->render_surface(),
|
| - property_trees->clip_tree),
|
| - surface_content_rect,
|
| - DrawTransformOfRenderSurfaceFromPropertyTrees(
|
| - layer->render_surface(), property_trees->transform_tree));
|
| + layer->render_surface()->clip_rect(), surface_content_rect,
|
| + layer->render_surface()->draw_transform());
|
| surface_content_rect.Intersect(surface_clip_rect);
|
| layer->render_surface()->SetAccumulatedContentRect(
|
| surface_content_rect);
|
| @@ -2665,8 +2618,8 @@ void CalculateRenderSurfaceLayerListInternal(
|
| ->render_target()
|
| ->render_surface()
|
| ->accumulated_content_rect();
|
| - surface_target_rect.Union(DrawableContentRectOfSurfaceFromPropertyTrees(
|
| - layer->render_surface(), property_trees->transform_tree));
|
| + surface_target_rect.Union(
|
| + gfx::ToEnclosedRect(layer->render_surface()->DrawableContentRect()));
|
| layer->parent()
|
| ->render_target()
|
| ->render_surface()
|
|
|