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

Side by Side Diff: cc/layers/picture_layer_impl_unittest.cc

Issue 899313003: cc: Split ReleaseResources into Release and Recreate. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: review Created 5 years, 10 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 unified diff | Download patch
« no previous file with comments | « cc/layers/picture_layer_impl.cc ('k') | cc/trees/layer_tree_host_impl.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/layers/picture_layer_impl.h" 5 #include "cc/layers/picture_layer_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <set> 9 #include <set>
10 #include <utility> 10 #include <utility>
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
271 SetupDrawPropertiesAndUpdateTiles(active_layer_, 271 SetupDrawPropertiesAndUpdateTiles(active_layer_,
272 contents_scale, 272 contents_scale,
273 device_scale_factor, 273 device_scale_factor,
274 page_scale_factor, 274 page_scale_factor,
275 maximum_animation_contents_scale, 275 maximum_animation_contents_scale,
276 animating_transform); 276 animating_transform);
277 } 277 }
278 278
279 void ResetTilingsAndRasterScales() { 279 void ResetTilingsAndRasterScales() {
280 pending_layer_->ReleaseResources(); 280 pending_layer_->ReleaseResources();
281 EXPECT_FALSE(pending_layer_->tilings());
282 pending_layer_->RecreateResources();
283 EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings());
284
281 active_layer_->ReleaseResources(); 285 active_layer_->ReleaseResources();
282 if (pending_layer_) 286 EXPECT_FALSE(active_layer_->tilings());
283 EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings()); 287 active_layer_->RecreateResources();
284 if (active_layer_) 288 EXPECT_EQ(0u, active_layer_->tilings()->num_tilings());
285 EXPECT_EQ(0u, active_layer_->tilings()->num_tilings());
286 } 289 }
287 290
288 void AssertAllTilesRequired(PictureLayerTiling* tiling) { 291 void AssertAllTilesRequired(PictureLayerTiling* tiling) {
289 std::vector<Tile*> tiles = tiling->AllTilesForTesting(); 292 std::vector<Tile*> tiles = tiling->AllTilesForTesting();
290 for (size_t i = 0; i < tiles.size(); ++i) 293 for (size_t i = 0; i < tiles.size(); ++i)
291 EXPECT_TRUE(tiles[i]->required_for_activation()) << "i: " << i; 294 EXPECT_TRUE(tiles[i]->required_for_activation()) << "i: " << i;
292 EXPECT_GT(tiles.size(), 0u); 295 EXPECT_GT(tiles.size(), 0u);
293 } 296 }
294 297
295 void AssertNoTilesRequired(PictureLayerTiling* tiling) { 298 void AssertNoTilesRequired(PictureLayerTiling* tiling) {
(...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after
704 707
705 EXPECT_EQ(pending_layer_->tilings()->num_tilings(), 708 EXPECT_EQ(pending_layer_->tilings()->num_tilings(),
706 active_layer_->tilings()->num_tilings()); 709 active_layer_->tilings()->num_tilings());
707 710
708 const PictureLayerTilingSet* tilings = pending_layer_->tilings(); 711 const PictureLayerTilingSet* tilings = pending_layer_->tilings();
709 EXPECT_GT(tilings->num_tilings(), 0u); 712 EXPECT_GT(tilings->num_tilings(), 0u);
710 for (size_t i = 0; i < tilings->num_tilings(); ++i) 713 for (size_t i = 0; i < tilings->num_tilings(); ++i)
711 VerifyAllTilesExistAndHavePile(tilings->tiling_at(i), pending_pile.get()); 714 VerifyAllTilesExistAndHavePile(tilings->tiling_at(i), pending_pile.get());
712 } 715 }
713 716
714 TEST_F(PictureLayerImplTest, ManageTilingsCreatesTilings) { 717 TEST_F(PictureLayerImplTest, UpdateTilesCreatesTilings) {
715 gfx::Size tile_size(400, 400); 718 gfx::Size tile_size(400, 400);
716 gfx::Size layer_bounds(1300, 1900); 719 gfx::Size layer_bounds(1300, 1900);
717 720
718 scoped_refptr<FakePicturePileImpl> pending_pile = 721 scoped_refptr<FakePicturePileImpl> pending_pile =
719 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); 722 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds);
720 scoped_refptr<FakePicturePileImpl> active_pile = 723 scoped_refptr<FakePicturePileImpl> active_pile =
721 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); 724 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds);
722 725
723 SetupTrees(pending_pile, active_pile); 726 SetupTrees(pending_pile, active_pile);
724 727
725 float low_res_factor = host_impl_.settings().low_res_contents_scale_factor; 728 float low_res_factor = host_impl_.settings().low_res_contents_scale_factor;
726 EXPECT_LT(low_res_factor, 1.f); 729 EXPECT_LT(low_res_factor, 1.f);
727 730
728 active_layer_->ReleaseResources(); 731 active_layer_->ReleaseResources();
732 EXPECT_FALSE(active_layer_->tilings());
733 active_layer_->RecreateResources();
729 EXPECT_EQ(0u, active_layer_->tilings()->num_tilings()); 734 EXPECT_EQ(0u, active_layer_->tilings()->num_tilings());
730 735
731 SetupDrawPropertiesAndUpdateTiles(active_layer_, 736 SetupDrawPropertiesAndUpdateTiles(active_layer_,
732 6.f, // ideal contents scale 737 6.f, // ideal contents scale
733 3.f, // device scale 738 3.f, // device scale
734 2.f, // page scale 739 2.f, // page scale
735 1.f, // maximum animation scale 740 1.f, // maximum animation scale
736 false); 741 false);
737 ASSERT_EQ(2u, active_layer_->tilings()->num_tilings()); 742 ASSERT_EQ(2u, active_layer_->tilings()->num_tilings());
738 EXPECT_FLOAT_EQ(6.f, 743 EXPECT_FLOAT_EQ(6.f,
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
789 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); 794 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds);
790 scoped_refptr<FakePicturePileImpl> active_pile = 795 scoped_refptr<FakePicturePileImpl> active_pile =
791 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); 796 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds);
792 797
793 SetupTrees(pending_pile, active_pile); 798 SetupTrees(pending_pile, active_pile);
794 799
795 float low_res_factor = host_impl_.settings().low_res_contents_scale_factor; 800 float low_res_factor = host_impl_.settings().low_res_contents_scale_factor;
796 EXPECT_LT(low_res_factor, 1.f); 801 EXPECT_LT(low_res_factor, 1.f);
797 802
798 pending_layer_->ReleaseResources(); 803 pending_layer_->ReleaseResources();
804 EXPECT_FALSE(pending_layer_->tilings());
805 pending_layer_->RecreateResources();
799 EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings()); 806 EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings());
800 807
801 SetupDrawPropertiesAndUpdateTiles(pending_layer_, 808 SetupDrawPropertiesAndUpdateTiles(pending_layer_,
802 6.f, // ideal contents scale 809 6.f, // ideal contents scale
803 3.f, // device scale 810 3.f, // device scale
804 2.f, // page scale 811 2.f, // page scale
805 1.f, // maximum animation scale 812 1.f, // maximum animation scale
806 false); 813 false);
807 ASSERT_EQ(2u, pending_layer_->tilings()->num_tilings()); 814 ASSERT_EQ(2u, pending_layer_->tilings()->num_tilings());
808 EXPECT_FLOAT_EQ(6.f, 815 EXPECT_FLOAT_EQ(6.f,
(...skipping 510 matching lines...) Expand 10 before | Expand all | Expand 10 after
1319 // The mask resource exists. 1326 // The mask resource exists.
1320 ResourceProvider::ResourceId mask_resource_id; 1327 ResourceProvider::ResourceId mask_resource_id;
1321 gfx::Size mask_texture_size; 1328 gfx::Size mask_texture_size;
1322 active_mask->GetContentsResourceId(&mask_resource_id, &mask_texture_size); 1329 active_mask->GetContentsResourceId(&mask_resource_id, &mask_texture_size);
1323 EXPECT_NE(0u, mask_resource_id); 1330 EXPECT_NE(0u, mask_resource_id);
1324 EXPECT_EQ(active_mask->bounds(), mask_texture_size); 1331 EXPECT_EQ(active_mask->bounds(), mask_texture_size);
1325 1332
1326 // Drop resources and recreate them, still the same. 1333 // Drop resources and recreate them, still the same.
1327 pending_mask->ReleaseResources(); 1334 pending_mask->ReleaseResources();
1328 active_mask->ReleaseResources(); 1335 active_mask->ReleaseResources();
1336 pending_mask->RecreateResources();
1337 active_mask->RecreateResources();
1329 SetupDrawPropertiesAndUpdateTiles(active_mask, 1.f, 1.f, 1.f, 1.f, false); 1338 SetupDrawPropertiesAndUpdateTiles(active_mask, 1.f, 1.f, 1.f, 1.f, false);
1330 active_mask->HighResTiling()->CreateAllTilesForTesting(); 1339 active_mask->HighResTiling()->CreateAllTilesForTesting();
1331 EXPECT_EQ(1u, active_mask->HighResTiling()->AllTilesForTesting().size()); 1340 EXPECT_EQ(1u, active_mask->HighResTiling()->AllTilesForTesting().size());
1332 EXPECT_NE(0u, mask_resource_id); 1341 EXPECT_NE(0u, mask_resource_id);
1333 EXPECT_EQ(active_mask->bounds(), mask_texture_size); 1342 EXPECT_EQ(active_mask->bounds(), mask_texture_size);
1334 1343
1335 // Resize larger than the max texture size. 1344 // Resize larger than the max texture size.
1336 int max_texture_size = host_impl_.GetRendererCapabilities().max_texture_size; 1345 int max_texture_size = host_impl_.GetRendererCapabilities().max_texture_size;
1337 gfx::Size huge_bounds(max_texture_size + 1, 10); 1346 gfx::Size huge_bounds(max_texture_size + 1, 10);
1338 scoped_refptr<FakePicturePileImpl> huge_pile = 1347 scoped_refptr<FakePicturePileImpl> huge_pile =
(...skipping 23 matching lines...) Expand all
1362 // The mask resource exists. 1371 // The mask resource exists.
1363 active_mask->GetContentsResourceId(&mask_resource_id, &mask_texture_size); 1372 active_mask->GetContentsResourceId(&mask_resource_id, &mask_texture_size);
1364 EXPECT_NE(0u, mask_resource_id); 1373 EXPECT_NE(0u, mask_resource_id);
1365 gfx::Size expected_size = active_mask->bounds(); 1374 gfx::Size expected_size = active_mask->bounds();
1366 expected_size.SetToMin(gfx::Size(max_texture_size, max_texture_size)); 1375 expected_size.SetToMin(gfx::Size(max_texture_size, max_texture_size));
1367 EXPECT_EQ(expected_size, mask_texture_size); 1376 EXPECT_EQ(expected_size, mask_texture_size);
1368 1377
1369 // Drop resources and recreate them, still the same. 1378 // Drop resources and recreate them, still the same.
1370 pending_mask->ReleaseResources(); 1379 pending_mask->ReleaseResources();
1371 active_mask->ReleaseResources(); 1380 active_mask->ReleaseResources();
1381 pending_mask->RecreateResources();
1382 active_mask->RecreateResources();
1372 SetupDrawPropertiesAndUpdateTiles(active_mask, 1.f, 1.f, 1.f, 1.f, false); 1383 SetupDrawPropertiesAndUpdateTiles(active_mask, 1.f, 1.f, 1.f, 1.f, false);
1373 active_mask->HighResTiling()->CreateAllTilesForTesting(); 1384 active_mask->HighResTiling()->CreateAllTilesForTesting();
1374 EXPECT_EQ(1u, active_mask->HighResTiling()->AllTilesForTesting().size()); 1385 EXPECT_EQ(1u, active_mask->HighResTiling()->AllTilesForTesting().size());
1375 EXPECT_NE(0u, mask_resource_id); 1386 EXPECT_NE(0u, mask_resource_id);
1376 EXPECT_EQ(expected_size, mask_texture_size); 1387 EXPECT_EQ(expected_size, mask_texture_size);
1377 1388
1378 // Do another activate, the same holds. 1389 // Do another activate, the same holds.
1379 SetupPendingTree(huge_pile); 1390 SetupPendingTree(huge_pile);
1380 ActivateTree(); 1391 ActivateTree();
1381 EXPECT_EQ(1u, active_mask->HighResTiling()->AllTilesForTesting().size()); 1392 EXPECT_EQ(1u, active_mask->HighResTiling()->AllTilesForTesting().size());
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
1468 scoped_refptr<FakePicturePileImpl> pending_pile = 1479 scoped_refptr<FakePicturePileImpl> pending_pile =
1469 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); 1480 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds);
1470 scoped_refptr<FakePicturePileImpl> active_pile = 1481 scoped_refptr<FakePicturePileImpl> active_pile =
1471 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); 1482 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds);
1472 1483
1473 SetupTrees(pending_pile, active_pile); 1484 SetupTrees(pending_pile, active_pile);
1474 EXPECT_EQ(2u, pending_layer_->tilings()->num_tilings()); 1485 EXPECT_EQ(2u, pending_layer_->tilings()->num_tilings());
1475 1486
1476 // All tilings should be removed when losing output surface. 1487 // All tilings should be removed when losing output surface.
1477 active_layer_->ReleaseResources(); 1488 active_layer_->ReleaseResources();
1489 EXPECT_FALSE(active_layer_->tilings());
1490 active_layer_->RecreateResources();
1478 EXPECT_EQ(0u, active_layer_->tilings()->num_tilings()); 1491 EXPECT_EQ(0u, active_layer_->tilings()->num_tilings());
1479 pending_layer_->ReleaseResources(); 1492 pending_layer_->ReleaseResources();
1493 EXPECT_FALSE(pending_layer_->tilings());
1494 pending_layer_->RecreateResources();
1480 EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings()); 1495 EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings());
1481 1496
1482 // This should create new tilings. 1497 // This should create new tilings.
1483 SetupDrawPropertiesAndUpdateTiles(pending_layer_, 1498 SetupDrawPropertiesAndUpdateTiles(pending_layer_,
1484 1.f, // ideal contents scale 1499 1.f, // ideal contents scale
1485 1.f, // device scale 1500 1.f, // device scale
1486 1.f, // page scale 1501 1.f, // page scale
1487 1.f, // maximum animation scale 1502 1.f, // maximum animation scale
1488 false); 1503 false);
1489 EXPECT_EQ(2u, pending_layer_->tilings()->num_tilings()); 1504 EXPECT_EQ(2u, pending_layer_->tilings()->num_tilings());
(...skipping 2247 matching lines...) Expand 10 before | Expand all | Expand 10 after
3737 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); 3752 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds);
3738 scoped_refptr<FakePicturePileImpl> active_pile = 3753 scoped_refptr<FakePicturePileImpl> active_pile =
3739 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); 3754 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds);
3740 3755
3741 SetupTrees(pending_pile, active_pile); 3756 SetupTrees(pending_pile, active_pile);
3742 EXPECT_EQ(1u, pending_layer_->tilings()->num_tilings()); 3757 EXPECT_EQ(1u, pending_layer_->tilings()->num_tilings());
3743 EXPECT_EQ(1u, active_layer_->tilings()->num_tilings()); 3758 EXPECT_EQ(1u, active_layer_->tilings()->num_tilings());
3744 3759
3745 // All tilings should be removed when losing output surface. 3760 // All tilings should be removed when losing output surface.
3746 active_layer_->ReleaseResources(); 3761 active_layer_->ReleaseResources();
3762 EXPECT_FALSE(active_layer_->tilings());
3763 active_layer_->RecreateResources();
3747 EXPECT_EQ(0u, active_layer_->tilings()->num_tilings()); 3764 EXPECT_EQ(0u, active_layer_->tilings()->num_tilings());
3748 pending_layer_->ReleaseResources(); 3765 pending_layer_->ReleaseResources();
3766 EXPECT_FALSE(pending_layer_->tilings());
3767 pending_layer_->RecreateResources();
3749 EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings()); 3768 EXPECT_EQ(0u, pending_layer_->tilings()->num_tilings());
3750 3769
3751 // This should create new tilings. 3770 // This should create new tilings.
3752 SetupDrawPropertiesAndUpdateTiles(pending_layer_, 3771 SetupDrawPropertiesAndUpdateTiles(pending_layer_,
3753 1.3f, // ideal contents scale 3772 1.3f, // ideal contents scale
3754 2.7f, // device scale 3773 2.7f, // device scale
3755 3.2f, // page scale 3774 3.2f, // page scale
3756 1.f, // maximum animation scale 3775 1.f, // maximum animation scale
3757 false); 3776 false);
3758 EXPECT_EQ(1u, pending_layer_->tilings()->num_tilings()); 3777 EXPECT_EQ(1u, pending_layer_->tilings()->num_tilings());
(...skipping 1158 matching lines...) Expand 10 before | Expand all | Expand 10 after
4917 result = layer->CalculateTileSize(gfx::Size(447, 400)); 4936 result = layer->CalculateTileSize(gfx::Size(447, 400));
4918 EXPECT_EQ(result.width(), 448); 4937 EXPECT_EQ(result.width(), 448);
4919 EXPECT_EQ(result.height(), 448); 4938 EXPECT_EQ(result.height(), 448);
4920 result = layer->CalculateTileSize(gfx::Size(500, 499)); 4939 result = layer->CalculateTileSize(gfx::Size(500, 499));
4921 EXPECT_EQ(result.width(), 512); 4940 EXPECT_EQ(result.width(), 512);
4922 EXPECT_EQ(result.height(), 500 + 2); 4941 EXPECT_EQ(result.height(), 500 + 2);
4923 } 4942 }
4924 4943
4925 } // namespace 4944 } // namespace
4926 } // namespace cc 4945 } // namespace cc
OLDNEW
« no previous file with comments | « cc/layers/picture_layer_impl.cc ('k') | cc/trees/layer_tree_host_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698