Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3306)

Unified Diff: cc/layers/picture_layer_impl_unittest.cc

Issue 678773002: cc: Always use invalidation on the pending tree when deciding to share (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: getpendinginvalidation: . Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/layers/picture_layer_impl.cc ('k') | cc/resources/picture_layer_tiling.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/layers/picture_layer_impl_unittest.cc
diff --git a/cc/layers/picture_layer_impl_unittest.cc b/cc/layers/picture_layer_impl_unittest.cc
index 3920779c3ff8d043ec0155a3f2ce02e1e4e4368e..b073f60daa44d185a6399547195f5758c46f205a 100644
--- a/cc/layers/picture_layer_impl_unittest.cc
+++ b/cc/layers/picture_layer_impl_unittest.cc
@@ -2026,6 +2026,66 @@ TEST_F(PictureLayerImplTest, ActivateUninitializedLayer) {
EXPECT_FALSE(active_layer_->needs_post_commit_initialization());
}
+TEST_F(PictureLayerImplTest, ShareTilesOnNextFrame) {
+ SetupDefaultTrees(gfx::Size(1500, 1500));
+
+ PictureLayerTiling* tiling = pending_layer_->AddTiling(1.f);
+ gfx::Rect first_invalidate = tiling->TilingDataForTesting().TileBounds(0, 0);
+ first_invalidate.Inset(tiling->TilingDataForTesting().border_texels(),
+ tiling->TilingDataForTesting().border_texels());
+ gfx::Rect second_invalidate = tiling->TilingDataForTesting().TileBounds(1, 1);
+ second_invalidate.Inset(tiling->TilingDataForTesting().border_texels(),
+ tiling->TilingDataForTesting().border_texels());
+
+ // Make a pending tree with an invalidated raster tile 0,0.
+ tiling->CreateAllTilesForTesting();
+ pending_layer_->set_invalidation(first_invalidate);
+
+ // Activate and make a pending tree with an invalidated raster tile 1,1.
+ ActivateTree();
+
+ host_impl_.CreatePendingTree();
+ pending_layer_ = static_cast<FakePictureLayerImpl*>(
+ host_impl_.pending_tree()->root_layer());
+ pending_layer_->set_invalidation(second_invalidate);
+
+ // TODO(danakj): Remove this when twins are set up better.
+ // https://codereview.chromium.org/676953003/
+ pending_layer_->DoPostCommitInitializationIfNeeded();
+
+ PictureLayerTiling* pending_tiling = pending_layer_->tilings()->tiling_at(0);
+ PictureLayerTiling* active_tiling = active_layer_->tilings()->tiling_at(0);
+
+ pending_tiling->CreateAllTilesForTesting();
+
+ // Tile 0,0 should be shared, but tile 1,1 should not be.
+ EXPECT_EQ(active_tiling->TileAt(0, 0), pending_tiling->TileAt(0, 0));
+ EXPECT_EQ(active_tiling->TileAt(1, 0), pending_tiling->TileAt(1, 0));
+ EXPECT_EQ(active_tiling->TileAt(0, 1), pending_tiling->TileAt(0, 1));
+ EXPECT_NE(active_tiling->TileAt(1, 1), pending_tiling->TileAt(1, 1));
+ EXPECT_TRUE(pending_tiling->TileAt(0, 0)->is_shared());
+ EXPECT_TRUE(pending_tiling->TileAt(1, 0)->is_shared());
+ EXPECT_TRUE(pending_tiling->TileAt(0, 1)->is_shared());
+ EXPECT_FALSE(pending_tiling->TileAt(1, 1)->is_shared());
+
+ // Drop the tiles on the active tree and recreate them. The same tiles
+ // should be shared or not.
+ active_tiling->ComputeTilePriorityRects(
+ ACTIVE_TREE, gfx::Rect(), 1.f, 1.0, Occlusion());
+ EXPECT_TRUE(active_tiling->AllTilesForTesting().empty());
+ active_tiling->CreateAllTilesForTesting();
+
+ // Tile 0,0 should be shared, but tile 1,1 should not be.
+ EXPECT_EQ(active_tiling->TileAt(0, 0), pending_tiling->TileAt(0, 0));
+ EXPECT_EQ(active_tiling->TileAt(1, 0), pending_tiling->TileAt(1, 0));
+ EXPECT_EQ(active_tiling->TileAt(0, 1), pending_tiling->TileAt(0, 1));
+ EXPECT_NE(active_tiling->TileAt(1, 1), pending_tiling->TileAt(1, 1));
+ EXPECT_TRUE(pending_tiling->TileAt(0, 0)->is_shared());
+ EXPECT_TRUE(pending_tiling->TileAt(1, 0)->is_shared());
+ EXPECT_TRUE(pending_tiling->TileAt(0, 1)->is_shared());
+ EXPECT_FALSE(pending_tiling->TileAt(1, 1)->is_shared());
+}
+
TEST_F(PictureLayerImplTest, ShareTilesOnSync) {
SetupDefaultTrees(gfx::Size(1500, 1500));
AddDefaultTilingsWithInvalidation(gfx::Rect());
« no previous file with comments | « cc/layers/picture_layer_impl.cc ('k') | cc/resources/picture_layer_tiling.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698