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

Side by Side Diff: cc/resources/tile_manager_unittest.cc

Issue 322443002: cc: Refactor how picture layers are exposed to the tile manager. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix tile manager perf tests Created 6 years, 6 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 | Annotate | Revision Log
« no previous file with comments | « cc/resources/tile_manager_perftest.cc ('k') | cc/test/fake_tile_manager_client.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/resources/tile.h" 5 #include "cc/resources/tile.h"
6 #include "cc/resources/tile_priority.h" 6 #include "cc/resources/tile_priority.h"
7 #include "cc/test/fake_impl_proxy.h" 7 #include "cc/test/fake_impl_proxy.h"
8 #include "cc/test/fake_layer_tree_host_impl.h" 8 #include "cc/test/fake_layer_tree_host_impl.h"
9 #include "cc/test/fake_output_surface.h" 9 #include "cc/test/fake_output_surface.h"
10 #include "cc/test/fake_output_surface_client.h" 10 #include "cc/test/fake_output_surface_client.h"
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 } 76 }
77 77
78 virtual void TearDown() OVERRIDE { 78 virtual void TearDown() OVERRIDE {
79 tile_manager_.reset(NULL); 79 tile_manager_.reset(NULL);
80 picture_pile_ = NULL; 80 picture_pile_ = NULL;
81 81
82 testing::Test::TearDown(); 82 testing::Test::TearDown();
83 } 83 }
84 84
85 // TileManagerClient implementation. 85 // TileManagerClient implementation.
86 virtual const std::vector<PictureLayerImpl*>& GetPictureLayers() OVERRIDE {
87 return picture_layers_;
88 }
86 virtual void NotifyReadyToActivate() OVERRIDE { ready_to_activate_ = true; } 89 virtual void NotifyReadyToActivate() OVERRIDE { ready_to_activate_ = true; }
87 virtual void NotifyTileStateChanged(const Tile* tile) OVERRIDE {} 90 virtual void NotifyTileStateChanged(const Tile* tile) OVERRIDE {}
88 91
89 TileVector CreateTilesWithSize(int count, 92 TileVector CreateTilesWithSize(int count,
90 TilePriority active_priority, 93 TilePriority active_priority,
91 TilePriority pending_priority, 94 TilePriority pending_priority,
92 const gfx::Size& tile_size) { 95 const gfx::Size& tile_size) {
93 TileVector tiles; 96 TileVector tiles;
94 for (int i = 0; i < count; ++i) { 97 for (int i = 0; i < count; ++i) {
95 scoped_refptr<Tile> tile = tile_manager_->CreateTile(picture_pile_.get(), 98 scoped_refptr<Tile> tile = tile_manager_->CreateTile(picture_pile_.get(),
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
151 scoped_ptr<FakeTileManager> tile_manager_; 154 scoped_ptr<FakeTileManager> tile_manager_;
152 scoped_refptr<FakePicturePileImpl> picture_pile_; 155 scoped_refptr<FakePicturePileImpl> picture_pile_;
153 FakeOutputSurfaceClient output_surface_client_; 156 FakeOutputSurfaceClient output_surface_client_;
154 scoped_ptr<FakeOutputSurface> output_surface_; 157 scoped_ptr<FakeOutputSurface> output_surface_;
155 scoped_ptr<SharedBitmapManager> shared_bitmap_manager_; 158 scoped_ptr<SharedBitmapManager> shared_bitmap_manager_;
156 scoped_ptr<ResourceProvider> resource_provider_; 159 scoped_ptr<ResourceProvider> resource_provider_;
157 scoped_ptr<ResourcePool> resource_pool_; 160 scoped_ptr<ResourcePool> resource_pool_;
158 TileMemoryLimitPolicy memory_limit_policy_; 161 TileMemoryLimitPolicy memory_limit_policy_;
159 int max_tiles_; 162 int max_tiles_;
160 bool ready_to_activate_; 163 bool ready_to_activate_;
164 std::vector<PictureLayerImpl*> picture_layers_;
161 }; 165 };
162 166
163 TEST_P(TileManagerTest, EnoughMemoryAllowAnything) { 167 TEST_P(TileManagerTest, EnoughMemoryAllowAnything) {
164 // A few tiles of each type of priority, with enough memory for all tiles. 168 // A few tiles of each type of priority, with enough memory for all tiles.
165 169
166 Initialize(10, ALLOW_ANYTHING, SMOOTHNESS_TAKES_PRIORITY); 170 Initialize(10, ALLOW_ANYTHING, SMOOTHNESS_TAKES_PRIORITY);
167 TileVector active_now = 171 TileVector active_now =
168 CreateTiles(3, TilePriorityForNowBin(), TilePriority()); 172 CreateTiles(3, TilePriorityForNowBin(), TilePriority());
169 TileVector pending_now = 173 TileVector pending_now =
170 CreateTiles(3, TilePriority(), TilePriorityForNowBin()); 174 CreateTiles(3, TilePriority(), TilePriorityForNowBin());
(...skipping 441 matching lines...) Expand 10 before | Expand all | Expand 10 after
612 // Allocated bytes should never be more than the memory limit. 616 // Allocated bytes should never be more than the memory limit.
613 EXPECT_LE(memory_allocated_bytes, global_state_.hard_memory_limit_in_bytes); 617 EXPECT_LE(memory_allocated_bytes, global_state_.hard_memory_limit_in_bytes);
614 } 618 }
615 619
616 // If true, the max tile limit should be applied as bytes; if false, 620 // If true, the max tile limit should be applied as bytes; if false,
617 // as num_resources_limit. 621 // as num_resources_limit.
618 INSTANTIATE_TEST_CASE_P(TileManagerTests, 622 INSTANTIATE_TEST_CASE_P(TileManagerTests,
619 TileManagerTest, 623 TileManagerTest,
620 ::testing::Values(true, false)); 624 ::testing::Values(true, false));
621 625
622 class TileManagerTileIteratorTest : public testing::Test, 626 class TileManagerTileIteratorTest : public testing::Test {
623 public TileManagerClient {
624 public: 627 public:
625 TileManagerTileIteratorTest() 628 TileManagerTileIteratorTest()
626 : memory_limit_policy_(ALLOW_ANYTHING), 629 : memory_limit_policy_(ALLOW_ANYTHING),
627 max_tiles_(10000), 630 max_tiles_(10000),
628 ready_to_activate_(false), 631 ready_to_activate_(false),
629 id_(7), 632 id_(7),
630 proxy_(base::MessageLoopProxy::current()), 633 proxy_(base::MessageLoopProxy::current()),
631 host_impl_(ImplSidePaintingSettings(), 634 host_impl_(ImplSidePaintingSettings(),
632 &proxy_, 635 &proxy_,
633 &shared_bitmap_manager_) {} 636 &shared_bitmap_manager_) {}
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
710 } 713 }
711 714
712 void CreateHighLowResAndSetAllTilesVisible() { 715 void CreateHighLowResAndSetAllTilesVisible() {
713 // Active layer must get updated first so pending layer can share from it. 716 // Active layer must get updated first so pending layer can share from it.
714 active_layer_->CreateDefaultTilingsAndTiles(); 717 active_layer_->CreateDefaultTilingsAndTiles();
715 active_layer_->SetAllTilesVisible(); 718 active_layer_->SetAllTilesVisible();
716 pending_layer_->CreateDefaultTilingsAndTiles(); 719 pending_layer_->CreateDefaultTilingsAndTiles();
717 pending_layer_->SetAllTilesVisible(); 720 pending_layer_->SetAllTilesVisible();
718 } 721 }
719 722
720 // TileManagerClient implementation.
721 virtual void NotifyReadyToActivate() OVERRIDE { ready_to_activate_ = true; }
722 virtual void NotifyTileStateChanged(const Tile* tile) OVERRIDE {}
723
724 TileManager* tile_manager() { return host_impl_.tile_manager(); } 723 TileManager* tile_manager() { return host_impl_.tile_manager(); }
725 724
726 protected: 725 protected:
727 GlobalStateThatImpactsTilePriority global_state_; 726 GlobalStateThatImpactsTilePriority global_state_;
728 727
729 TestSharedBitmapManager shared_bitmap_manager_; 728 TestSharedBitmapManager shared_bitmap_manager_;
730 TileMemoryLimitPolicy memory_limit_policy_; 729 TileMemoryLimitPolicy memory_limit_policy_;
731 int max_tiles_; 730 int max_tiles_;
732 bool ready_to_activate_; 731 bool ready_to_activate_;
733 int id_; 732 int id_;
734 FakeImplProxy proxy_; 733 FakeImplProxy proxy_;
735 FakeLayerTreeHostImpl host_impl_; 734 FakeLayerTreeHostImpl host_impl_;
736 FakePictureLayerImpl* pending_layer_; 735 FakePictureLayerImpl* pending_layer_;
737 FakePictureLayerImpl* active_layer_; 736 FakePictureLayerImpl* active_layer_;
738 }; 737 };
739 738
740 TEST_F(TileManagerTileIteratorTest, PairedPictureLayers) { 739 TEST_F(TileManagerTileIteratorTest, PairedPictureLayers) {
741 FakeImplProxy proxy; 740 host_impl_.CreatePendingTree();
742 TestSharedBitmapManager shared_bitmap_manager; 741 host_impl_.ActivatePendingTree();
743 FakeLayerTreeHostImpl host_impl(&proxy, &shared_bitmap_manager); 742 host_impl_.CreatePendingTree();
744 host_impl.CreatePendingTree();
745 host_impl.ActivatePendingTree();
746 host_impl.CreatePendingTree();
747 743
748 LayerTreeImpl* active_tree = host_impl.active_tree(); 744 LayerTreeImpl* active_tree = host_impl_.active_tree();
749 LayerTreeImpl* pending_tree = host_impl.pending_tree(); 745 LayerTreeImpl* pending_tree = host_impl_.pending_tree();
750 EXPECT_NE(active_tree, pending_tree); 746 EXPECT_NE(active_tree, pending_tree);
751 747
752 scoped_ptr<FakePictureLayerImpl> active_layer = 748 scoped_ptr<FakePictureLayerImpl> active_layer =
753 FakePictureLayerImpl::Create(active_tree, 10); 749 FakePictureLayerImpl::Create(active_tree, 10);
754 scoped_ptr<FakePictureLayerImpl> pending_layer = 750 scoped_ptr<FakePictureLayerImpl> pending_layer =
755 FakePictureLayerImpl::Create(pending_tree, 10); 751 FakePictureLayerImpl::Create(pending_tree, 10);
756 752
757 TileManager* tile_manager = TileManagerTileIteratorTest::tile_manager(); 753 TileManager* tile_manager = TileManagerTileIteratorTest::tile_manager();
758 EXPECT_TRUE(tile_manager); 754 EXPECT_TRUE(tile_manager);
759 755
760 tile_manager->RegisterPictureLayerImpl(active_layer.get());
761 tile_manager->RegisterPictureLayerImpl(pending_layer.get());
762
763 std::vector<TileManager::PairedPictureLayer> paired_layers; 756 std::vector<TileManager::PairedPictureLayer> paired_layers;
764 tile_manager->GetPairedPictureLayers(&paired_layers); 757 tile_manager->GetPairedPictureLayers(&paired_layers);
765 758
766 EXPECT_EQ(2u, paired_layers.size()); 759 EXPECT_EQ(2u, paired_layers.size());
767 if (paired_layers[0].active_layer) { 760 if (paired_layers[0].active_layer) {
768 EXPECT_EQ(active_layer.get(), paired_layers[0].active_layer); 761 EXPECT_EQ(active_layer.get(), paired_layers[0].active_layer);
769 EXPECT_EQ(NULL, paired_layers[0].pending_layer); 762 EXPECT_EQ(NULL, paired_layers[0].pending_layer);
770 } else { 763 } else {
771 EXPECT_EQ(pending_layer.get(), paired_layers[0].pending_layer); 764 EXPECT_EQ(pending_layer.get(), paired_layers[0].pending_layer);
772 EXPECT_EQ(NULL, paired_layers[0].active_layer); 765 EXPECT_EQ(NULL, paired_layers[0].active_layer);
773 } 766 }
774 767
775 if (paired_layers[1].active_layer) { 768 if (paired_layers[1].active_layer) {
776 EXPECT_EQ(active_layer.get(), paired_layers[1].active_layer); 769 EXPECT_EQ(active_layer.get(), paired_layers[1].active_layer);
777 EXPECT_EQ(NULL, paired_layers[1].pending_layer); 770 EXPECT_EQ(NULL, paired_layers[1].pending_layer);
778 } else { 771 } else {
779 EXPECT_EQ(pending_layer.get(), paired_layers[1].pending_layer); 772 EXPECT_EQ(pending_layer.get(), paired_layers[1].pending_layer);
780 EXPECT_EQ(NULL, paired_layers[1].active_layer); 773 EXPECT_EQ(NULL, paired_layers[1].active_layer);
781 } 774 }
782 775
783 active_layer->set_twin_layer(pending_layer.get()); 776 active_layer->set_twin_layer(pending_layer.get());
784 pending_layer->set_twin_layer(active_layer.get()); 777 pending_layer->set_twin_layer(active_layer.get());
785 778
786 tile_manager->GetPairedPictureLayers(&paired_layers); 779 tile_manager->GetPairedPictureLayers(&paired_layers);
787 EXPECT_EQ(1u, paired_layers.size()); 780 EXPECT_EQ(1u, paired_layers.size());
788 781
789 EXPECT_EQ(active_layer.get(), paired_layers[0].active_layer); 782 EXPECT_EQ(active_layer.get(), paired_layers[0].active_layer);
790 EXPECT_EQ(pending_layer.get(), paired_layers[0].pending_layer); 783 EXPECT_EQ(pending_layer.get(), paired_layers[0].pending_layer);
791
792 tile_manager->UnregisterPictureLayerImpl(active_layer.get());
793 tile_manager->UnregisterPictureLayerImpl(pending_layer.get());
794 } 784 }
795 785
796 TEST_F(TileManagerTileIteratorTest, RasterTileIterator) { 786 TEST_F(TileManagerTileIteratorTest, RasterTileIterator) {
797 SetupDefaultTrees(gfx::Size(1000, 1000)); 787 SetupDefaultTrees(gfx::Size(1000, 1000));
798 TileManager* tile_manager = TileManagerTileIteratorTest::tile_manager(); 788 TileManager* tile_manager = TileManagerTileIteratorTest::tile_manager();
799 EXPECT_TRUE(tile_manager); 789 EXPECT_TRUE(tile_manager);
800 790
801 active_layer_->CreateDefaultTilingsAndTiles(); 791 active_layer_->CreateDefaultTilingsAndTiles();
802 pending_layer_->CreateDefaultTilingsAndTiles(); 792 pending_layer_->CreateDefaultTilingsAndTiles();
803 793
(...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after
1111 1101
1112 last_tile = tile; 1102 last_tile = tile;
1113 new_content_tiles.insert(tile); 1103 new_content_tiles.insert(tile);
1114 } 1104 }
1115 1105
1116 EXPECT_EQ(tile_count, new_content_tiles.size()); 1106 EXPECT_EQ(tile_count, new_content_tiles.size());
1117 EXPECT_EQ(all_tiles, new_content_tiles); 1107 EXPECT_EQ(all_tiles, new_content_tiles);
1118 } 1108 }
1119 } // namespace 1109 } // namespace
1120 } // namespace cc 1110 } // namespace cc
OLDNEW
« no previous file with comments | « cc/resources/tile_manager_perftest.cc ('k') | cc/test/fake_tile_manager_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698