summaryrefslogtreecommitdiffstats
path: root/cc
diff options
context:
space:
mode:
authorsunxd <sunxd@chromium.org>2016-01-06 08:42:54 -0800
committerCommit bot <commit-bot@chromium.org>2016-01-06 16:44:09 +0000
commit42238faf73f0d108a6a926f3fddf35887df071a1 (patch)
tree29705e4455357349e73fe0ff1f77b73205b16e13 /cc
parent4b2b759006ad470f493a425345d6e6e261c943a1 (diff)
downloadchromium_src-42238faf73f0d108a6a926f3fddf35887df071a1.zip
chromium_src-42238faf73f0d108a6a926f3fddf35887df071a1.tar.gz
chromium_src-42238faf73f0d108a6a926f3fddf35887df071a1.tar.bz2
Revert of Determine a layer's IsAffectedByPageScale property without using Layer Tree (patchset #2 id:20001 of https://codereview.chromium.org/1544103002/ )
Reason for revert: Revert the CL to see if it causes an improvement on the waterfall. Related to Issue 573267: 10.3% regression in blink_perf.layout at 367076:367083. Original issue's description: > Determine a layer's IsAffectedByPageScale property without using Layer Tree. > > The property is retrieved from TransformTree; > Fix the order of updating the page scale layer and adding transform tree node; > Fix the problem that transform tree sequence number not correctly updated for mask layers; > Fix related cc unit tests where a property tree was not created. > > BUG=568777 > CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel > > Committed: https://crrev.com/73c0fa89da59c8ea5e0d86d1136d7c1a7e68e097 > Cr-Commit-Position: refs/heads/master@{#367083} BUG=568777,573267 Review URL: https://codereview.chromium.org/1565783002 Cr-Commit-Position: refs/heads/master@{#367837}
Diffstat (limited to 'cc')
-rw-r--r--cc/layers/heads_up_display_layer_impl_unittest.cc14
-rw-r--r--cc/layers/layer.cc5
-rw-r--r--cc/layers/layer_impl.cc7
-rw-r--r--cc/layers/layer_impl.h5
-rw-r--r--cc/layers/picture_image_layer_impl_unittest.cc28
-rw-r--r--cc/layers/picture_layer_impl_unittest.cc3
-rw-r--r--cc/trees/property_tree_builder.cc10
7 files changed, 29 insertions, 43 deletions
diff --git a/cc/layers/heads_up_display_layer_impl_unittest.cc b/cc/layers/heads_up_display_layer_impl_unittest.cc
index 1535787..e104c33 100644
--- a/cc/layers/heads_up_display_layer_impl_unittest.cc
+++ b/cc/layers/heads_up_display_layer_impl_unittest.cc
@@ -11,7 +11,6 @@
#include "cc/test/fake_output_surface.h"
#include "cc/test/test_shared_bitmap_manager.h"
#include "cc/test/test_task_graph_runner.h"
-#include "cc/trees/layer_tree_impl.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace cc {
@@ -47,19 +46,16 @@ TEST(HeadsUpDisplayLayerImplTest, ResourcelessSoftwareDrawAfterResourceLoss) {
HeadsUpDisplayLayerImpl::Create(host_impl.pending_tree(), 1);
layer->SetBounds(gfx::Size(100, 100));
- HeadsUpDisplayLayerImpl* layer_ptr = layer.get();
-
- host_impl.pending_tree()->SetRootLayer(std::move(layer));
- host_impl.pending_tree()->BuildPropertyTreesForTesting();
-
// Check regular hardware draw is ok.
- CheckDrawLayer(layer_ptr, host_impl.resource_provider(), DRAW_MODE_HARDWARE);
+ CheckDrawLayer(
+ layer.get(), host_impl.resource_provider(), DRAW_MODE_HARDWARE);
// Simulate a resource loss on transitioning to resourceless software mode.
- layer_ptr->ReleaseResources();
+ layer->ReleaseResources();
// Should skip resourceless software draw and not crash in UpdateHudTexture.
- CheckDrawLayer(layer_ptr, host_impl.resource_provider(),
+ CheckDrawLayer(layer.get(),
+ host_impl.resource_provider(),
DRAW_MODE_RESOURCELESS_SOFTWARE);
}
diff --git a/cc/layers/layer.cc b/cc/layers/layer.cc
index 19b8a95..4aaa673 100644
--- a/cc/layers/layer.cc
+++ b/cc/layers/layer.cc
@@ -1352,6 +1352,11 @@ void Layer::PushPropertiesTo(LayerImpl* layer) {
frame_timing_requests_dirty_ = false;
}
+ bool is_page_scale_layer = this == layer_tree_host()->page_scale_layer();
+ bool parent_affected =
+ layer->parent() && layer->parent()->IsAffectedByPageScale();
+ layer->SetIsAffectedByPageScale(is_page_scale_layer || parent_affected);
+
// Reset any state that should be cleared for the next update.
stacking_order_changed_ = false;
update_rect_ = gfx::Rect();
diff --git a/cc/layers/layer_impl.cc b/cc/layers/layer_impl.cc
index b590f71..3837bca 100644
--- a/cc/layers/layer_impl.cc
+++ b/cc/layers/layer_impl.cc
@@ -698,13 +698,6 @@ void LayerImpl::PushPropertiesTo(LayerImpl* layer) {
num_dependents_need_push_properties_ = 0;
}
-bool LayerImpl::IsAffectedByPageScale() const {
- TransformTree& transform_tree =
- layer_tree_impl()->property_trees()->transform_tree;
- return transform_tree.Node(transform_tree_index())
- ->data.in_subtree_of_page_scale_layer;
-}
-
gfx::Vector2dF LayerImpl::FixedContainerSizeDelta() const {
LayerImpl* scroll_clip_layer =
layer_tree_impl()->LayerById(scroll_clip_layer_id_);
diff --git a/cc/layers/layer_impl.h b/cc/layers/layer_impl.h
index baccc5d..42362c8 100644
--- a/cc/layers/layer_impl.h
+++ b/cc/layers/layer_impl.h
@@ -357,7 +357,10 @@ class CC_EXPORT LayerImpl : public LayerAnimationValueObserver,
return is_container_for_fixed_position_layers_;
}
- bool IsAffectedByPageScale() const;
+ bool IsAffectedByPageScale() const { return is_affected_by_page_scale_; }
+ void SetIsAffectedByPageScale(bool is_affected) {
+ is_affected_by_page_scale_ = is_affected;
+ }
gfx::Vector2dF FixedContainerSizeDelta() const;
diff --git a/cc/layers/picture_image_layer_impl_unittest.cc b/cc/layers/picture_image_layer_impl_unittest.cc
index 53b0061..92e6926 100644
--- a/cc/layers/picture_image_layer_impl_unittest.cc
+++ b/cc/layers/picture_image_layer_impl_unittest.cc
@@ -108,14 +108,10 @@ TEST_F(PictureImageLayerImplTest, CalculateContentsScale) {
scoped_ptr<TestablePictureImageLayerImpl> layer(CreateLayer(1, PENDING_TREE));
layer->SetDrawsContent(true);
- TestablePictureImageLayerImpl* layer_ptr = layer.get();
- host_impl_.pending_tree()->SetRootLayer(std::move(layer));
- host_impl_.pending_tree()->BuildPropertyTreesForTesting();
-
gfx::Rect viewport(100, 200);
- SetupDrawPropertiesAndUpdateTiles(layer_ptr, 2.f, 3.f, 4.f, 1.f, false,
- viewport);
- EXPECT_FLOAT_EQ(1.f, layer_ptr->MaximumTilingContentsScale());
+ SetupDrawPropertiesAndUpdateTiles(
+ layer.get(), 2.f, 3.f, 4.f, 1.f, false, viewport);
+ EXPECT_FLOAT_EQ(1.f, layer->MaximumTilingContentsScale());
}
TEST_F(PictureImageLayerImplTest, IgnoreIdealContentScale) {
@@ -125,10 +121,6 @@ TEST_F(PictureImageLayerImplTest, IgnoreIdealContentScale) {
gfx::Rect viewport(100, 200);
- TestablePictureImageLayerImpl* pending_layer_ptr = pending_layer.get();
- host_impl_.pending_tree()->SetRootLayer(std::move(pending_layer));
- host_impl_.pending_tree()->BuildPropertyTreesForTesting();
-
// Set PictureLayerImpl::ideal_contents_scale_ to 2.f which is not equal
// to the content scale used by PictureImageLayerImpl.
const float suggested_ideal_contents_scale = 2.f;
@@ -136,13 +128,17 @@ TEST_F(PictureImageLayerImplTest, IgnoreIdealContentScale) {
const float page_scale_factor = 4.f;
const float maximum_animation_contents_scale = 1.f;
const bool animating_transform_to_screen = false;
- SetupDrawPropertiesAndUpdateTiles(
- pending_layer_ptr, suggested_ideal_contents_scale, device_scale_factor,
- page_scale_factor, maximum_animation_contents_scale,
- animating_transform_to_screen, viewport);
- EXPECT_EQ(1.f, pending_layer_ptr->tilings()->tiling_at(0)->contents_scale());
+ SetupDrawPropertiesAndUpdateTiles(pending_layer.get(),
+ suggested_ideal_contents_scale,
+ device_scale_factor,
+ page_scale_factor,
+ maximum_animation_contents_scale,
+ animating_transform_to_screen,
+ viewport);
+ EXPECT_EQ(1.f, pending_layer->tilings()->tiling_at(0)->contents_scale());
// Push to active layer.
+ host_impl_.pending_tree()->SetRootLayer(std::move(pending_layer));
host_impl_.ActivateSyncTree();
TestablePictureImageLayerImpl* active_layer =
diff --git a/cc/layers/picture_layer_impl_unittest.cc b/cc/layers/picture_layer_impl_unittest.cc
index 10c95b4..badd37f 100644
--- a/cc/layers/picture_layer_impl_unittest.cc
+++ b/cc/layers/picture_layer_impl_unittest.cc
@@ -264,9 +264,6 @@ class PictureLayerImplTest : public testing::Test {
pending_root->AddChild(std::move(pending_layer));
pending_tree->SetRootLayer(std::move(pending_root));
- pending_tree->SetViewportLayersFromIds(
- Layer::INVALID_ID, pending_tree->root_layer()->id(), Layer::INVALID_ID,
- Layer::INVALID_ID);
pending_layer_ = static_cast<FakePictureLayerImpl*>(
host_impl_.pending_tree()->LayerById(id_));
diff --git a/cc/trees/property_tree_builder.cc b/cc/trees/property_tree_builder.cc
index 432aa6c..28721d4 100644
--- a/cc/trees/property_tree_builder.cc
+++ b/cc/trees/property_tree_builder.cc
@@ -291,9 +291,6 @@ bool AddTransformNodeIfNeeded(
node->data.scrolls = is_scrollable;
node->data.flattens_inherited_transform = data_for_children->should_flatten;
-
- if (layer == data_from_ancestor.page_scale_layer)
- data_for_children->in_subtree_of_page_scale_layer = true;
node->data.in_subtree_of_page_scale_layer =
data_for_children->in_subtree_of_page_scale_layer;
@@ -604,10 +601,6 @@ void BuildPropertyTreesInternal(
LayerType* layer,
const DataForRecursion<LayerType>& data_from_parent) {
layer->set_property_tree_sequence_number(data_from_parent.sequence_number);
- if (layer->mask_layer())
- layer->mask_layer()->set_property_tree_sequence_number(
- data_from_parent.sequence_number);
-
DataForRecursion<LayerType> data_for_children(data_from_parent);
bool created_render_surface =
@@ -625,6 +618,9 @@ void BuildPropertyTreesInternal(
AddClipNodeIfNeeded(data_from_parent, layer, created_render_surface,
created_transform_node, &data_for_children);
+ if (layer == data_from_parent.page_scale_layer)
+ data_for_children.in_subtree_of_page_scale_layer = true;
+
data_for_children.is_hidden =
layer->hide_layer_and_subtree() || data_from_parent.is_hidden;
layer->set_is_hidden_from_property_trees(data_for_children.is_hidden);