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

Side by Side Diff: cc/tiled_layer_unittest.cc

Issue 12095053: cc: Avoid expensive RenderingStats collection. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: nits Created 7 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 | Annotate | Revision Log
« no previous file with comments | « cc/tiled_layer.cc ('k') | cc/worker_pool.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 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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/tiled_layer.h" 5 #include "cc/tiled_layer.h"
6 6
7 #include "cc/bitmap_content_layer_updater.h" 7 #include "cc/bitmap_content_layer_updater.h"
8 #include "cc/layer_painter.h" 8 #include "cc/layer_painter.h"
9 #include "cc/overdraw_metrics.h" 9 #include "cc/overdraw_metrics.h"
10 #include "cc/prioritized_resource_manager.h" 10 #include "cc/prioritized_resource_manager.h"
11 #include "cc/rendering_stats.h"
12 #include "cc/resource_update_controller.h" 11 #include "cc/resource_update_controller.h"
13 #include "cc/single_thread_proxy.h" // For DebugScopedSetImplThread 12 #include "cc/single_thread_proxy.h" // For DebugScopedSetImplThread
14 #include "cc/test/animation_test_common.h" 13 #include "cc/test/animation_test_common.h"
15 #include "cc/test/fake_layer_tree_host_client.h" 14 #include "cc/test/fake_layer_tree_host_client.h"
16 #include "cc/test/fake_layer_tree_host_impl.h" 15 #include "cc/test/fake_layer_tree_host_impl.h"
17 #include "cc/test/fake_output_surface.h" 16 #include "cc/test/fake_output_surface.h"
18 #include "cc/test/fake_proxy.h" 17 #include "cc/test/fake_proxy.h"
19 #include "cc/test/geometry_test_utils.h" 18 #include "cc/test/geometry_test_utils.h"
20 #include "cc/test/tiled_layer_test_common.h" 19 #include "cc/test/tiled_layer_test_common.h"
21 #include "testing/gtest/include/gtest/gtest.h" 20 #include "testing/gtest/include/gtest/gtest.h"
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 m_queue = make_scoped_ptr(new ResourceUpdateQueue); 99 m_queue = make_scoped_ptr(new ResourceUpdateQueue);
101 } 100 }
102 void layerPushPropertiesTo(FakeTiledLayer* layer, FakeTiledLayerImpl* layerI mpl) 101 void layerPushPropertiesTo(FakeTiledLayer* layer, FakeTiledLayerImpl* layerI mpl)
103 { 102 {
104 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBloc ked(m_proxy); 103 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBloc ked(m_proxy);
105 layer->pushPropertiesTo(layerImpl); 104 layer->pushPropertiesTo(layerImpl);
106 } 105 }
107 void layerUpdate(FakeTiledLayer* layer, TestOcclusionTracker* occluded) 106 void layerUpdate(FakeTiledLayer* layer, TestOcclusionTracker* occluded)
108 { 107 {
109 DebugScopedSetMainThread mainThread(m_proxy); 108 DebugScopedSetMainThread mainThread(m_proxy);
110 layer->update(*m_queue.get(), occluded, m_stats); 109 layer->update(*m_queue.get(), occluded, NULL);
111 } 110 }
112 111
113 void calcDrawProps(const scoped_refptr<FakeTiledLayer>& layer1) 112 void calcDrawProps(const scoped_refptr<FakeTiledLayer>& layer1)
114 { 113 {
115 scoped_refptr<FakeTiledLayer> layer2; 114 scoped_refptr<FakeTiledLayer> layer2;
116 calcDrawProps(layer1, layer2); 115 calcDrawProps(layer1, layer2);
117 } 116 }
118 117
119 void calcDrawProps(const scoped_refptr<FakeTiledLayer>& layer1, 118 void calcDrawProps(const scoped_refptr<FakeTiledLayer>& layer1,
120 const scoped_refptr<FakeTiledLayer>& layer2) 119 const scoped_refptr<FakeTiledLayer>& layer2)
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 // Get textures 152 // Get textures
154 m_resourceManager->clearPriorities(); 153 m_resourceManager->clearPriorities();
155 if (layer1) 154 if (layer1)
156 layer1->setTexturePriorities(m_priorityCalculator); 155 layer1->setTexturePriorities(m_priorityCalculator);
157 if (layer2) 156 if (layer2)
158 layer2->setTexturePriorities(m_priorityCalculator); 157 layer2->setTexturePriorities(m_priorityCalculator);
159 m_resourceManager->prioritizeTextures(); 158 m_resourceManager->prioritizeTextures();
160 159
161 // Update content 160 // Update content
162 if (layer1) 161 if (layer1)
163 layer1->update(*m_queue.get(), m_occlusion, m_stats); 162 layer1->update(*m_queue.get(), m_occlusion, NULL);
164 if (layer2) 163 if (layer2)
165 layer2->update(*m_queue.get(), m_occlusion, m_stats); 164 layer2->update(*m_queue.get(), m_occlusion, NULL);
166 165
167 bool needsUpdate = false; 166 bool needsUpdate = false;
168 if (layer1) 167 if (layer1)
169 needsUpdate |= layer1->needsIdlePaint(); 168 needsUpdate |= layer1->needsIdlePaint();
170 if (layer2) 169 if (layer2)
171 needsUpdate |= layer2->needsIdlePaint(); 170 needsUpdate |= layer2->needsIdlePaint();
172 171
173 // Update textures and push. 172 // Update textures and push.
174 updateTextures(); 173 updateTextures();
175 if (layer1) 174 if (layer1)
176 layerPushPropertiesTo(layer1.get(), layerImpl1.get()); 175 layerPushPropertiesTo(layer1.get(), layerImpl1.get());
177 if (layer2) 176 if (layer2)
178 layerPushPropertiesTo(layer2.get(), layerImpl2.get()); 177 layerPushPropertiesTo(layer2.get(), layerImpl2.get());
179 178
180 return needsUpdate; 179 return needsUpdate;
181 } 180 }
182 181
183 public: 182 public:
184 Proxy* m_proxy; 183 Proxy* m_proxy;
185 LayerTreeSettings m_settings; 184 LayerTreeSettings m_settings;
186 scoped_ptr<OutputSurface> m_outputSurface; 185 scoped_ptr<OutputSurface> m_outputSurface;
187 scoped_ptr<ResourceProvider> m_resourceProvider; 186 scoped_ptr<ResourceProvider> m_resourceProvider;
188 scoped_ptr<ResourceUpdateQueue> m_queue; 187 scoped_ptr<ResourceUpdateQueue> m_queue;
189 RenderingStats m_stats;
190 PriorityCalculator m_priorityCalculator; 188 PriorityCalculator m_priorityCalculator;
191 FakeLayerImplTreeHostClient m_fakeLayerImplTreeHostClient; 189 FakeLayerImplTreeHostClient m_fakeLayerImplTreeHostClient;
192 scoped_ptr<LayerTreeHost> m_layerTreeHost; 190 scoped_ptr<LayerTreeHost> m_layerTreeHost;
193 scoped_ptr<FakeLayerTreeHostImpl> m_hostImpl; 191 scoped_ptr<FakeLayerTreeHostImpl> m_hostImpl;
194 scoped_ptr<PrioritizedResourceManager> m_resourceManager; 192 scoped_ptr<PrioritizedResourceManager> m_resourceManager;
195 TestOcclusionTracker* m_occlusion; 193 TestOcclusionTracker* m_occlusion;
196 }; 194 };
197 195
198 TEST_F(TiledLayerTest, pushDirtyTiles) 196 TEST_F(TiledLayerTest, pushDirtyTiles)
199 { 197 {
(...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after
576 layer->drawProperties().target_space_transform_is_animating = true; 574 layer->drawProperties().target_space_transform_is_animating = true;
577 layer->setBounds(contentBounds); 575 layer->setBounds(contentBounds);
578 layer->drawProperties().visible_content_rect = visibleRect; 576 layer->drawProperties().visible_content_rect = visibleRect;
579 layer->invalidateContentRect(contentRect); 577 layer->invalidateContentRect(contentRect);
580 layer->setLayerTreeHost(layerTreeHost.get()); 578 layer->setLayerTreeHost(layerTreeHost.get());
581 579
582 // The layer should paint it's entire contents on the first paint 580 // The layer should paint it's entire contents on the first paint
583 // if it is close to the viewport size and has the available memory. 581 // if it is close to the viewport size and has the available memory.
584 layer->setTexturePriorities(m_priorityCalculator); 582 layer->setTexturePriorities(m_priorityCalculator);
585 m_resourceManager->prioritizeTextures(); 583 m_resourceManager->prioritizeTextures();
586 layer->update(*m_queue.get(), 0, m_stats); 584 layer->update(*m_queue.get(), 0, NULL);
587 updateTextures(); 585 updateTextures();
588 layerPushPropertiesTo(layer.get(), layerImpl.get()); 586 layerPushPropertiesTo(layer.get(), layerImpl.get());
589 587
590 // We should have all the tiles for the small animated layer. 588 // We should have all the tiles for the small animated layer.
591 // We should still have the visible tiles when we didn't 589 // We should still have the visible tiles when we didn't
592 // have enough memory for all the tiles. 590 // have enough memory for all the tiles.
593 if (!runOutOfMemory[i]) { 591 if (!runOutOfMemory[i]) {
594 for (int i = 0; i < 5; ++i) { 592 for (int i = 0; i < 5; ++i) {
595 for (int j = 0; j < 5; ++j) 593 for (int j = 0; j < 5; ++j)
596 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(i, j)); 594 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(i, j));
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
733 layer->setBounds(layerBounds.size()); 731 layer->setBounds(layerBounds.size());
734 layer->setContentBounds(contentBounds.size()); 732 layer->setContentBounds(contentBounds.size());
735 layer->drawProperties().visible_content_rect = contentBounds; 733 layer->drawProperties().visible_content_rect = contentBounds;
736 734
737 // On first update, the updateRect includes all tiles, even beyond the bound aries of the layer. 735 // On first update, the updateRect includes all tiles, even beyond the bound aries of the layer.
738 // However, it should still be in layer space, not content space. 736 // However, it should still be in layer space, not content space.
739 layer->invalidateContentRect(contentBounds); 737 layer->invalidateContentRect(contentBounds);
740 738
741 layer->setTexturePriorities(m_priorityCalculator); 739 layer->setTexturePriorities(m_priorityCalculator);
742 m_resourceManager->prioritizeTextures(); 740 m_resourceManager->prioritizeTextures();
743 layer->update(*m_queue.get(), 0, m_stats); 741 layer->update(*m_queue.get(), 0, NULL);
744 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 300, 300 * 0.8), layer->updateRect()); 742 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 300, 300 * 0.8), layer->updateRect());
745 updateTextures(); 743 updateTextures();
746 744
747 // After the tiles are updated once, another invalidate only needs to update the bounds of the layer. 745 // After the tiles are updated once, another invalidate only needs to update the bounds of the layer.
748 layer->setTexturePriorities(m_priorityCalculator); 746 layer->setTexturePriorities(m_priorityCalculator);
749 m_resourceManager->prioritizeTextures(); 747 m_resourceManager->prioritizeTextures();
750 layer->invalidateContentRect(contentBounds); 748 layer->invalidateContentRect(contentBounds);
751 layer->update(*m_queue.get(), 0, m_stats); 749 layer->update(*m_queue.get(), 0, NULL);
752 EXPECT_FLOAT_RECT_EQ(gfx::RectF(layerBounds), layer->updateRect()); 750 EXPECT_FLOAT_RECT_EQ(gfx::RectF(layerBounds), layer->updateRect());
753 updateTextures(); 751 updateTextures();
754 752
755 // Partial re-paint should also be represented by the updateRect in layer sp ace, not content space. 753 // Partial re-paint should also be represented by the updateRect in layer sp ace, not content space.
756 gfx::Rect partialDamage(30, 100, 10, 10); 754 gfx::Rect partialDamage(30, 100, 10, 10);
757 layer->invalidateContentRect(partialDamage); 755 layer->invalidateContentRect(partialDamage);
758 layer->setTexturePriorities(m_priorityCalculator); 756 layer->setTexturePriorities(m_priorityCalculator);
759 m_resourceManager->prioritizeTextures(); 757 m_resourceManager->prioritizeTextures();
760 layer->update(*m_queue.get(), 0, m_stats); 758 layer->update(*m_queue.get(), 0, NULL);
761 EXPECT_FLOAT_RECT_EQ(gfx::RectF(45, 80, 15, 8), layer->updateRect()); 759 EXPECT_FLOAT_RECT_EQ(gfx::RectF(45, 80, 15, 8), layer->updateRect());
762 } 760 }
763 761
764 TEST_F(TiledLayerTest, verifyInvalidationWhenContentsScaleChanges) 762 TEST_F(TiledLayerTest, verifyInvalidationWhenContentsScaleChanges)
765 { 763 {
766 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get())); 764 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get()));
767 scoped_ptr<FakeTiledLayerImpl> layerImpl = make_scoped_ptr(new FakeTiledLaye rImpl(m_hostImpl->activeTree(), 1)); 765 scoped_ptr<FakeTiledLayerImpl> layerImpl = make_scoped_ptr(new FakeTiledLaye rImpl(m_hostImpl->activeTree(), 1));
768 766
769 // Create a layer with one tile. 767 // Create a layer with one tile.
770 layer->setBounds(gfx::Size(100, 100)); 768 layer->setBounds(gfx::Size(100, 100));
771 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 100, 100); 769 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 100, 100);
772 770
773 // Invalidate the entire layer. 771 // Invalidate the entire layer.
774 layer->setNeedsDisplay(); 772 layer->setNeedsDisplay();
775 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 100, 100), layer->lastNeedsDisplayRect ()); 773 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 100, 100), layer->lastNeedsDisplayRect ());
776 774
777 // Push the tiles to the impl side and check that there is exactly one. 775 // Push the tiles to the impl side and check that there is exactly one.
778 layer->setTexturePriorities(m_priorityCalculator); 776 layer->setTexturePriorities(m_priorityCalculator);
779 m_resourceManager->prioritizeTextures(); 777 m_resourceManager->prioritizeTextures();
780 layer->update(*m_queue.get(), 0, m_stats); 778 layer->update(*m_queue.get(), 0, NULL);
781 updateTextures(); 779 updateTextures();
782 layerPushPropertiesTo(layer.get(), layerImpl.get()); 780 layerPushPropertiesTo(layer.get(), layerImpl.get());
783 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 0)); 781 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 0));
784 EXPECT_FALSE(layerImpl->hasResourceIdForTileAt(0, 1)); 782 EXPECT_FALSE(layerImpl->hasResourceIdForTileAt(0, 1));
785 EXPECT_FALSE(layerImpl->hasResourceIdForTileAt(1, 0)); 783 EXPECT_FALSE(layerImpl->hasResourceIdForTileAt(1, 0));
786 EXPECT_FALSE(layerImpl->hasResourceIdForTileAt(1, 1)); 784 EXPECT_FALSE(layerImpl->hasResourceIdForTileAt(1, 1));
787 785
788 layer->setNeedsDisplayRect(gfx::Rect()); 786 layer->setNeedsDisplayRect(gfx::Rect());
789 EXPECT_FLOAT_RECT_EQ(gfx::RectF(), layer->lastNeedsDisplayRect()); 787 EXPECT_FLOAT_RECT_EQ(gfx::RectF(), layer->lastNeedsDisplayRect());
790 788
791 // Change the contents scale. 789 // Change the contents scale.
792 layer->updateContentsScale(2); 790 layer->updateContentsScale(2);
793 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 200, 200); 791 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 200, 200);
794 792
795 // The impl side should get 2x2 tiles now. 793 // The impl side should get 2x2 tiles now.
796 layer->setTexturePriorities(m_priorityCalculator); 794 layer->setTexturePriorities(m_priorityCalculator);
797 m_resourceManager->prioritizeTextures(); 795 m_resourceManager->prioritizeTextures();
798 layer->update(*m_queue.get(), 0, m_stats); 796 layer->update(*m_queue.get(), 0, NULL);
799 updateTextures(); 797 updateTextures();
800 layerPushPropertiesTo(layer.get(), layerImpl.get()); 798 layerPushPropertiesTo(layer.get(), layerImpl.get());
801 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 0)); 799 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 0));
802 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 1)); 800 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(0, 1));
803 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(1, 0)); 801 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(1, 0));
804 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(1, 1)); 802 EXPECT_TRUE(layerImpl->hasResourceIdForTileAt(1, 1));
805 803
806 // Verify that changing the contents scale caused invalidation, and 804 // Verify that changing the contents scale caused invalidation, and
807 // that the layer-space rectangle requiring painting is not scaled. 805 // that the layer-space rectangle requiring painting is not scaled.
808 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 100, 100), layer->lastNeedsDisplayRect ()); 806 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 100, 100), layer->lastNeedsDisplayRect ());
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
866 TEST_F(TiledLayerTest, resizeToSmaller) 864 TEST_F(TiledLayerTest, resizeToSmaller)
867 { 865 {
868 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get())); 866 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get()));
869 867
870 layer->setBounds(gfx::Size(700, 700)); 868 layer->setBounds(gfx::Size(700, 700));
871 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 700, 700); 869 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 700, 700);
872 layer->invalidateContentRect(gfx::Rect(0, 0, 700, 700)); 870 layer->invalidateContentRect(gfx::Rect(0, 0, 700, 700));
873 871
874 layer->setTexturePriorities(m_priorityCalculator); 872 layer->setTexturePriorities(m_priorityCalculator);
875 m_resourceManager->prioritizeTextures(); 873 m_resourceManager->prioritizeTextures();
876 layer->update(*m_queue.get(), 0, m_stats); 874 layer->update(*m_queue.get(), 0, NULL);
877 875
878 layer->setBounds(gfx::Size(200, 200)); 876 layer->setBounds(gfx::Size(200, 200));
879 layer->invalidateContentRect(gfx::Rect(0, 0, 200, 200)); 877 layer->invalidateContentRect(gfx::Rect(0, 0, 200, 200));
880 } 878 }
881 879
882 TEST_F(TiledLayerTest, hugeLayerUpdateCrash) 880 TEST_F(TiledLayerTest, hugeLayerUpdateCrash)
883 { 881 {
884 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get())); 882 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get()));
885 883
886 int size = 1 << 30; 884 int size = 1 << 30;
887 layer->setBounds(gfx::Size(size, size)); 885 layer->setBounds(gfx::Size(size, size));
888 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 700, 700); 886 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 700, 700);
889 layer->invalidateContentRect(gfx::Rect(0, 0, size, size)); 887 layer->invalidateContentRect(gfx::Rect(0, 0, size, size));
890 888
891 // Ensure no crash for bounds where size * size would overflow an int. 889 // Ensure no crash for bounds where size * size would overflow an int.
892 layer->setTexturePriorities(m_priorityCalculator); 890 layer->setTexturePriorities(m_priorityCalculator);
893 m_resourceManager->prioritizeTextures(); 891 m_resourceManager->prioritizeTextures();
894 layer->update(*m_queue.get(), 0, m_stats); 892 layer->update(*m_queue.get(), 0, NULL);
895 } 893 }
896 894
897 class TiledLayerPartialUpdateTest : public TiledLayerTest { 895 class TiledLayerPartialUpdateTest : public TiledLayerTest {
898 public: 896 public:
899 TiledLayerPartialUpdateTest() 897 TiledLayerPartialUpdateTest()
900 { 898 {
901 m_settings.maxPartialTextureUpdates = 4; 899 m_settings.maxPartialTextureUpdates = 4;
902 } 900 }
903 }; 901 };
904 902
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
1009 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get())); 1007 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get()));
1010 1008
1011 // The tile size is 100x100, so this invalidates and then paints two tiles. 1009 // The tile size is 100x100, so this invalidates and then paints two tiles.
1012 layer->setBounds(gfx::Size(100, 200)); 1010 layer->setBounds(gfx::Size(100, 200));
1013 layer->drawProperties().drawable_content_rect = gfx::Rect(0, 0, 100, 200); 1011 layer->drawProperties().drawable_content_rect = gfx::Rect(0, 0, 100, 200);
1014 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 100, 200); 1012 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 100, 200);
1015 layer->invalidateContentRect(gfx::Rect(0, 0, 100, 200)); 1013 layer->invalidateContentRect(gfx::Rect(0, 0, 100, 200));
1016 1014
1017 layer->setTexturePriorities(m_priorityCalculator); 1015 layer->setTexturePriorities(m_priorityCalculator);
1018 m_resourceManager->prioritizeTextures(); 1016 m_resourceManager->prioritizeTextures();
1019 layer->update(*m_queue.get(), 0, m_stats); 1017 layer->update(*m_queue.get(), 0, NULL);
1020 EXPECT_EQ(2, layer->fakeLayerUpdater()->updateCount()); 1018 EXPECT_EQ(2, layer->fakeLayerUpdater()->updateCount());
1021 } 1019 }
1022 1020
1023 TEST_F(TiledLayerTest, tilesPaintedWithOcclusion) 1021 TEST_F(TiledLayerTest, tilesPaintedWithOcclusion)
1024 { 1022 {
1025 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get())); 1023 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get()));
1026 TestOcclusionTracker occluded; 1024 TestOcclusionTracker occluded;
1027 m_occlusion = &occluded; 1025 m_occlusion = &occluded;
1028 1026
1029 // The tile size is 100x100. 1027 // The tile size is 100x100.
1030 1028
1031 m_layerTreeHost->setViewportSize(gfx::Size(600, 600), gfx::Size(600, 600)); 1029 m_layerTreeHost->setViewportSize(gfx::Size(600, 600), gfx::Size(600, 600));
1032 layer->setBounds(gfx::Size(600, 600)); 1030 layer->setBounds(gfx::Size(600, 600));
1033 calcDrawProps(layer); 1031 calcDrawProps(layer);
1034 1032
1035 occluded.setOcclusion(gfx::Rect(200, 200, 300, 100)); 1033 occluded.setOcclusion(gfx::Rect(200, 200, 300, 100));
1036 layer->drawProperties().drawable_content_rect = gfx::Rect(gfx::Point(), laye r->contentBounds()); 1034 layer->drawProperties().drawable_content_rect = gfx::Rect(gfx::Point(), laye r->contentBounds());
1037 layer->drawProperties().visible_content_rect = gfx::Rect(gfx::Point(), layer ->contentBounds()); 1035 layer->drawProperties().visible_content_rect = gfx::Rect(gfx::Point(), layer ->contentBounds());
1038 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600)); 1036 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600));
1039 1037
1040 layer->setTexturePriorities(m_priorityCalculator); 1038 layer->setTexturePriorities(m_priorityCalculator);
1041 m_resourceManager->prioritizeTextures(); 1039 m_resourceManager->prioritizeTextures();
1042 layer->update(*m_queue.get(), &occluded, m_stats); 1040 layer->update(*m_queue.get(), &occluded, NULL);
1043 EXPECT_EQ(36-3, layer->fakeLayerUpdater()->updateCount()); 1041 EXPECT_EQ(36-3, layer->fakeLayerUpdater()->updateCount());
1044 1042
1045 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); 1043 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1);
1046 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 330000, 1); 1044 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 330000, 1);
1047 EXPECT_EQ(3, occluded.overdrawMetrics().tilesCulledForUpload()); 1045 EXPECT_EQ(3, occluded.overdrawMetrics().tilesCulledForUpload());
1048 1046
1049 layer->fakeLayerUpdater()->clearUpdateCount(); 1047 layer->fakeLayerUpdater()->clearUpdateCount();
1050 layer->setTexturePriorities(m_priorityCalculator); 1048 layer->setTexturePriorities(m_priorityCalculator);
1051 m_resourceManager->prioritizeTextures(); 1049 m_resourceManager->prioritizeTextures();
1052 1050
1053 occluded.setOcclusion(gfx::Rect(250, 200, 300, 100)); 1051 occluded.setOcclusion(gfx::Rect(250, 200, 300, 100));
1054 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600)); 1052 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600));
1055 layer->update(*m_queue.get(), &occluded, m_stats); 1053 layer->update(*m_queue.get(), &occluded, NULL);
1056 EXPECT_EQ(36-2, layer->fakeLayerUpdater()->updateCount()); 1054 EXPECT_EQ(36-2, layer->fakeLayerUpdater()->updateCount());
1057 1055
1058 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); 1056 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1);
1059 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 330000 + 340000, 1); 1057 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 330000 + 340000, 1);
1060 EXPECT_EQ(3 + 2, occluded.overdrawMetrics().tilesCulledForUpload()); 1058 EXPECT_EQ(3 + 2, occluded.overdrawMetrics().tilesCulledForUpload());
1061 1059
1062 layer->fakeLayerUpdater()->clearUpdateCount(); 1060 layer->fakeLayerUpdater()->clearUpdateCount();
1063 layer->setTexturePriorities(m_priorityCalculator); 1061 layer->setTexturePriorities(m_priorityCalculator);
1064 m_resourceManager->prioritizeTextures(); 1062 m_resourceManager->prioritizeTextures();
1065 1063
1066 occluded.setOcclusion(gfx::Rect(250, 250, 300, 100)); 1064 occluded.setOcclusion(gfx::Rect(250, 250, 300, 100));
1067 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600)); 1065 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600));
1068 layer->update(*m_queue.get(), &occluded, m_stats); 1066 layer->update(*m_queue.get(), &occluded, NULL);
1069 EXPECT_EQ(36, layer->fakeLayerUpdater()->updateCount()); 1067 EXPECT_EQ(36, layer->fakeLayerUpdater()->updateCount());
1070 1068
1071 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); 1069 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1);
1072 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 330000 + 340000 + 360000, 1); 1070 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 330000 + 340000 + 360000, 1);
1073 EXPECT_EQ(3 + 2, occluded.overdrawMetrics().tilesCulledForUpload()); 1071 EXPECT_EQ(3 + 2, occluded.overdrawMetrics().tilesCulledForUpload());
1074 } 1072 }
1075 1073
1076 TEST_F(TiledLayerTest, tilesPaintedWithOcclusionAndVisiblityConstraints) 1074 TEST_F(TiledLayerTest, tilesPaintedWithOcclusionAndVisiblityConstraints)
1077 { 1075 {
1078 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get())); 1076 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get()));
1079 TestOcclusionTracker occluded; 1077 TestOcclusionTracker occluded;
1080 m_occlusion = &occluded; 1078 m_occlusion = &occluded;
1081 1079
1082 // The tile size is 100x100. 1080 // The tile size is 100x100.
1083 1081
1084 m_layerTreeHost->setViewportSize(gfx::Size(600, 600), gfx::Size(600, 600)); 1082 m_layerTreeHost->setViewportSize(gfx::Size(600, 600), gfx::Size(600, 600));
1085 layer->setBounds(gfx::Size(600, 600)); 1083 layer->setBounds(gfx::Size(600, 600));
1086 calcDrawProps(layer); 1084 calcDrawProps(layer);
1087 1085
1088 // The partially occluded tiles (by the 150 occlusion height) are visible be yond the occlusion, so not culled. 1086 // The partially occluded tiles (by the 150 occlusion height) are visible be yond the occlusion, so not culled.
1089 occluded.setOcclusion(gfx::Rect(200, 200, 300, 150)); 1087 occluded.setOcclusion(gfx::Rect(200, 200, 300, 150));
1090 layer->drawProperties().drawable_content_rect = gfx::Rect(0, 0, 600, 360); 1088 layer->drawProperties().drawable_content_rect = gfx::Rect(0, 0, 600, 360);
1091 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 600, 360); 1089 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 600, 360);
1092 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600)); 1090 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600));
1093 1091
1094 layer->setTexturePriorities(m_priorityCalculator); 1092 layer->setTexturePriorities(m_priorityCalculator);
1095 m_resourceManager->prioritizeTextures(); 1093 m_resourceManager->prioritizeTextures();
1096 layer->update(*m_queue.get(), &occluded, m_stats); 1094 layer->update(*m_queue.get(), &occluded, NULL);
1097 EXPECT_EQ(24-3, layer->fakeLayerUpdater()->updateCount()); 1095 EXPECT_EQ(24-3, layer->fakeLayerUpdater()->updateCount());
1098 1096
1099 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); 1097 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1);
1100 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 210000, 1); 1098 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 210000, 1);
1101 EXPECT_EQ(3, occluded.overdrawMetrics().tilesCulledForUpload()); 1099 EXPECT_EQ(3, occluded.overdrawMetrics().tilesCulledForUpload());
1102 1100
1103 layer->fakeLayerUpdater()->clearUpdateCount(); 1101 layer->fakeLayerUpdater()->clearUpdateCount();
1104 1102
1105 // Now the visible region stops at the edge of the occlusion so the partly v isible tiles become fully occluded. 1103 // Now the visible region stops at the edge of the occlusion so the partly v isible tiles become fully occluded.
1106 occluded.setOcclusion(gfx::Rect(200, 200, 300, 150)); 1104 occluded.setOcclusion(gfx::Rect(200, 200, 300, 150));
1107 layer->drawProperties().drawable_content_rect = gfx::Rect(0, 0, 600, 350); 1105 layer->drawProperties().drawable_content_rect = gfx::Rect(0, 0, 600, 350);
1108 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 600, 350); 1106 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 600, 350);
1109 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600)); 1107 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600));
1110 layer->setTexturePriorities(m_priorityCalculator); 1108 layer->setTexturePriorities(m_priorityCalculator);
1111 m_resourceManager->prioritizeTextures(); 1109 m_resourceManager->prioritizeTextures();
1112 layer->update(*m_queue.get(), &occluded, m_stats); 1110 layer->update(*m_queue.get(), &occluded, NULL);
1113 EXPECT_EQ(24-6, layer->fakeLayerUpdater()->updateCount()); 1111 EXPECT_EQ(24-6, layer->fakeLayerUpdater()->updateCount());
1114 1112
1115 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); 1113 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1);
1116 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 210000 + 180000, 1); 1114 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 210000 + 180000, 1);
1117 EXPECT_EQ(3 + 6, occluded.overdrawMetrics().tilesCulledForUpload()); 1115 EXPECT_EQ(3 + 6, occluded.overdrawMetrics().tilesCulledForUpload());
1118 1116
1119 layer->fakeLayerUpdater()->clearUpdateCount(); 1117 layer->fakeLayerUpdater()->clearUpdateCount();
1120 1118
1121 // Now the visible region is even smaller than the occlusion, it should have the same result. 1119 // Now the visible region is even smaller than the occlusion, it should have the same result.
1122 occluded.setOcclusion(gfx::Rect(200, 200, 300, 150)); 1120 occluded.setOcclusion(gfx::Rect(200, 200, 300, 150));
1123 layer->drawProperties().drawable_content_rect = gfx::Rect(0, 0, 600, 340); 1121 layer->drawProperties().drawable_content_rect = gfx::Rect(0, 0, 600, 340);
1124 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 600, 340); 1122 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 600, 340);
1125 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600)); 1123 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600));
1126 layer->setTexturePriorities(m_priorityCalculator); 1124 layer->setTexturePriorities(m_priorityCalculator);
1127 m_resourceManager->prioritizeTextures(); 1125 m_resourceManager->prioritizeTextures();
1128 layer->update(*m_queue.get(), &occluded, m_stats); 1126 layer->update(*m_queue.get(), &occluded, NULL);
1129 EXPECT_EQ(24-6, layer->fakeLayerUpdater()->updateCount()); 1127 EXPECT_EQ(24-6, layer->fakeLayerUpdater()->updateCount());
1130 1128
1131 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); 1129 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1);
1132 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 210000 + 180000 + 180000, 1); 1130 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 210000 + 180000 + 180000, 1);
1133 EXPECT_EQ(3 + 6 + 6, occluded.overdrawMetrics().tilesCulledForUpload()); 1131 EXPECT_EQ(3 + 6 + 6, occluded.overdrawMetrics().tilesCulledForUpload());
1134 1132
1135 } 1133 }
1136 1134
1137 TEST_F(TiledLayerTest, tilesNotPaintedWithoutInvalidation) 1135 TEST_F(TiledLayerTest, tilesNotPaintedWithoutInvalidation)
1138 { 1136 {
1139 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get())); 1137 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get()));
1140 TestOcclusionTracker occluded; 1138 TestOcclusionTracker occluded;
1141 m_occlusion = &occluded; 1139 m_occlusion = &occluded;
1142 1140
1143 // The tile size is 100x100. 1141 // The tile size is 100x100.
1144 1142
1145 m_layerTreeHost->setViewportSize(gfx::Size(600, 600), gfx::Size(600, 600)); 1143 m_layerTreeHost->setViewportSize(gfx::Size(600, 600), gfx::Size(600, 600));
1146 layer->setBounds(gfx::Size(600, 600)); 1144 layer->setBounds(gfx::Size(600, 600));
1147 calcDrawProps(layer); 1145 calcDrawProps(layer);
1148 1146
1149 occluded.setOcclusion(gfx::Rect(200, 200, 300, 100)); 1147 occluded.setOcclusion(gfx::Rect(200, 200, 300, 100));
1150 layer->drawProperties().drawable_content_rect = gfx::Rect(0, 0, 600, 600); 1148 layer->drawProperties().drawable_content_rect = gfx::Rect(0, 0, 600, 600);
1151 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 600, 600); 1149 layer->drawProperties().visible_content_rect = gfx::Rect(0, 0, 600, 600);
1152 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600)); 1150 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600));
1153 layer->setTexturePriorities(m_priorityCalculator); 1151 layer->setTexturePriorities(m_priorityCalculator);
1154 m_resourceManager->prioritizeTextures(); 1152 m_resourceManager->prioritizeTextures();
1155 layer->update(*m_queue.get(), &occluded, m_stats); 1153 layer->update(*m_queue.get(), &occluded, NULL);
1156 EXPECT_EQ(36-3, layer->fakeLayerUpdater()->updateCount()); 1154 EXPECT_EQ(36-3, layer->fakeLayerUpdater()->updateCount());
1157 { 1155 {
1158 updateTextures(); 1156 updateTextures();
1159 } 1157 }
1160 1158
1161 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); 1159 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1);
1162 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 330000, 1); 1160 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 330000, 1);
1163 EXPECT_EQ(3, occluded.overdrawMetrics().tilesCulledForUpload()); 1161 EXPECT_EQ(3, occluded.overdrawMetrics().tilesCulledForUpload());
1164 1162
1165 layer->fakeLayerUpdater()->clearUpdateCount(); 1163 layer->fakeLayerUpdater()->clearUpdateCount();
1166 layer->setTexturePriorities(m_priorityCalculator); 1164 layer->setTexturePriorities(m_priorityCalculator);
1167 m_resourceManager->prioritizeTextures(); 1165 m_resourceManager->prioritizeTextures();
1168 1166
1169 // Repaint without marking it dirty. The 3 culled tiles will be pre-painted now. 1167 // Repaint without marking it dirty. The 3 culled tiles will be pre-painted now.
1170 layer->update(*m_queue.get(), &occluded, m_stats); 1168 layer->update(*m_queue.get(), &occluded, NULL);
1171 EXPECT_EQ(3, layer->fakeLayerUpdater()->updateCount()); 1169 EXPECT_EQ(3, layer->fakeLayerUpdater()->updateCount());
1172 1170
1173 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); 1171 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1);
1174 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 330000, 1); 1172 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 330000, 1);
1175 EXPECT_EQ(6, occluded.overdrawMetrics().tilesCulledForUpload()); 1173 EXPECT_EQ(6, occluded.overdrawMetrics().tilesCulledForUpload());
1176 } 1174 }
1177 1175
1178 TEST_F(TiledLayerTest, tilesPaintedWithOcclusionAndTransforms) 1176 TEST_F(TiledLayerTest, tilesPaintedWithOcclusionAndTransforms)
1179 { 1177 {
1180 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get())); 1178 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get()));
(...skipping 11 matching lines...) Expand all
1192 screenTransform.Scale(0.5, 0.5); 1190 screenTransform.Scale(0.5, 0.5);
1193 layer->drawProperties().screen_space_transform = screenTransform; 1191 layer->drawProperties().screen_space_transform = screenTransform;
1194 layer->drawProperties().target_space_transform = screenTransform; 1192 layer->drawProperties().target_space_transform = screenTransform;
1195 1193
1196 occluded.setOcclusion(gfx::Rect(100, 100, 150, 50)); 1194 occluded.setOcclusion(gfx::Rect(100, 100, 150, 50));
1197 layer->drawProperties().drawable_content_rect = gfx::Rect(gfx::Point(), laye r->contentBounds()); 1195 layer->drawProperties().drawable_content_rect = gfx::Rect(gfx::Point(), laye r->contentBounds());
1198 layer->drawProperties().visible_content_rect = gfx::Rect(gfx::Point(), layer ->contentBounds()); 1196 layer->drawProperties().visible_content_rect = gfx::Rect(gfx::Point(), layer ->contentBounds());
1199 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600)); 1197 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600));
1200 layer->setTexturePriorities(m_priorityCalculator); 1198 layer->setTexturePriorities(m_priorityCalculator);
1201 m_resourceManager->prioritizeTextures(); 1199 m_resourceManager->prioritizeTextures();
1202 layer->update(*m_queue.get(), &occluded, m_stats); 1200 layer->update(*m_queue.get(), &occluded, NULL);
1203 EXPECT_EQ(36-3, layer->fakeLayerUpdater()->updateCount()); 1201 EXPECT_EQ(36-3, layer->fakeLayerUpdater()->updateCount());
1204 1202
1205 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); 1203 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1);
1206 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 330000, 1); 1204 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 330000, 1);
1207 EXPECT_EQ(3, occluded.overdrawMetrics().tilesCulledForUpload()); 1205 EXPECT_EQ(3, occluded.overdrawMetrics().tilesCulledForUpload());
1208 } 1206 }
1209 1207
1210 TEST_F(TiledLayerTest, tilesPaintedWithOcclusionAndScaling) 1208 TEST_F(TiledLayerTest, tilesPaintedWithOcclusionAndScaling)
1211 { 1209 {
1212 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get())); 1210 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get()));
(...skipping 15 matching lines...) Expand all
1228 drawTransform.Scale(invScaleFactor, invScaleFactor); 1226 drawTransform.Scale(invScaleFactor, invScaleFactor);
1229 layer->drawProperties().target_space_transform = drawTransform; 1227 layer->drawProperties().target_space_transform = drawTransform;
1230 layer->drawProperties().screen_space_transform = drawTransform; 1228 layer->drawProperties().screen_space_transform = drawTransform;
1231 1229
1232 occluded.setOcclusion(gfx::Rect(200, 200, 300, 100)); 1230 occluded.setOcclusion(gfx::Rect(200, 200, 300, 100));
1233 layer->drawProperties().drawable_content_rect = gfx::Rect(gfx::Point(), laye r->bounds()); 1231 layer->drawProperties().drawable_content_rect = gfx::Rect(gfx::Point(), laye r->bounds());
1234 layer->drawProperties().visible_content_rect = gfx::Rect(gfx::Point(), layer ->contentBounds()); 1232 layer->drawProperties().visible_content_rect = gfx::Rect(gfx::Point(), layer ->contentBounds());
1235 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600)); 1233 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600));
1236 layer->setTexturePriorities(m_priorityCalculator); 1234 layer->setTexturePriorities(m_priorityCalculator);
1237 m_resourceManager->prioritizeTextures(); 1235 m_resourceManager->prioritizeTextures();
1238 layer->update(*m_queue.get(), &occluded, m_stats); 1236 layer->update(*m_queue.get(), &occluded, NULL);
1239 // The content is half the size of the layer (so the number of tiles is fewe r). 1237 // The content is half the size of the layer (so the number of tiles is fewe r).
1240 // In this case, the content is 300x300, and since the tile size is 100, the 1238 // In this case, the content is 300x300, and since the tile size is 100, the
1241 // number of tiles 3x3. 1239 // number of tiles 3x3.
1242 EXPECT_EQ(9, layer->fakeLayerUpdater()->updateCount()); 1240 EXPECT_EQ(9, layer->fakeLayerUpdater()->updateCount());
1243 1241
1244 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); 1242 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1);
1245 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 90000, 1 ); 1243 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 90000, 1 );
1246 EXPECT_EQ(0, occluded.overdrawMetrics().tilesCulledForUpload()); 1244 EXPECT_EQ(0, occluded.overdrawMetrics().tilesCulledForUpload());
1247 1245
1248 layer->fakeLayerUpdater()->clearUpdateCount(); 1246 layer->fakeLayerUpdater()->clearUpdateCount();
1249 1247
1250 // This makes sure the painting works when the content space is scaled to 1248 // This makes sure the painting works when the content space is scaled to
1251 // a different layer space. In this case the occluded region catches the 1249 // a different layer space. In this case the occluded region catches the
1252 // blown up tiles. 1250 // blown up tiles.
1253 occluded.setOcclusion(gfx::Rect(200, 200, 300, 200)); 1251 occluded.setOcclusion(gfx::Rect(200, 200, 300, 200));
1254 layer->drawProperties().drawable_content_rect = gfx::Rect(gfx::Point(), laye r->bounds()); 1252 layer->drawProperties().drawable_content_rect = gfx::Rect(gfx::Point(), laye r->bounds());
1255 layer->drawProperties().visible_content_rect = gfx::Rect(gfx::Point(), layer ->contentBounds()); 1253 layer->drawProperties().visible_content_rect = gfx::Rect(gfx::Point(), layer ->contentBounds());
1256 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600)); 1254 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600));
1257 layer->setTexturePriorities(m_priorityCalculator); 1255 layer->setTexturePriorities(m_priorityCalculator);
1258 m_resourceManager->prioritizeTextures(); 1256 m_resourceManager->prioritizeTextures();
1259 layer->update(*m_queue.get(), &occluded, m_stats); 1257 layer->update(*m_queue.get(), &occluded, NULL);
1260 EXPECT_EQ(9-1, layer->fakeLayerUpdater()->updateCount()); 1258 EXPECT_EQ(9-1, layer->fakeLayerUpdater()->updateCount());
1261 1259
1262 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); 1260 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1);
1263 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 90000 + 80000, 1); 1261 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 90000 + 80000, 1);
1264 EXPECT_EQ(1, occluded.overdrawMetrics().tilesCulledForUpload()); 1262 EXPECT_EQ(1, occluded.overdrawMetrics().tilesCulledForUpload());
1265 1263
1266 layer->fakeLayerUpdater()->clearUpdateCount(); 1264 layer->fakeLayerUpdater()->clearUpdateCount();
1267 1265
1268 // This makes sure content scaling and transforms work together. 1266 // This makes sure content scaling and transforms work together.
1269 gfx::Transform screenTransform; 1267 gfx::Transform screenTransform;
1270 screenTransform.Scale(0.5, 0.5); 1268 screenTransform.Scale(0.5, 0.5);
1271 layer->drawProperties().screen_space_transform = screenTransform; 1269 layer->drawProperties().screen_space_transform = screenTransform;
1272 layer->drawProperties().target_space_transform = screenTransform; 1270 layer->drawProperties().target_space_transform = screenTransform;
1273 1271
1274 occluded.setOcclusion(gfx::Rect(100, 100, 150, 100)); 1272 occluded.setOcclusion(gfx::Rect(100, 100, 150, 100));
1275 1273
1276 gfx::Rect layerBoundsRect(gfx::Point(), layer->bounds()); 1274 gfx::Rect layerBoundsRect(gfx::Point(), layer->bounds());
1277 layer->drawProperties().drawable_content_rect = gfx::ToEnclosingRect(gfx::Sc aleRect(layerBoundsRect, 0.5)); 1275 layer->drawProperties().drawable_content_rect = gfx::ToEnclosingRect(gfx::Sc aleRect(layerBoundsRect, 0.5));
1278 layer->drawProperties().visible_content_rect = gfx::Rect(gfx::Point(), layer ->contentBounds()); 1276 layer->drawProperties().visible_content_rect = gfx::Rect(gfx::Point(), layer ->contentBounds());
1279 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600)); 1277 layer->invalidateContentRect(gfx::Rect(0, 0, 600, 600));
1280 layer->setTexturePriorities(m_priorityCalculator); 1278 layer->setTexturePriorities(m_priorityCalculator);
1281 m_resourceManager->prioritizeTextures(); 1279 m_resourceManager->prioritizeTextures();
1282 layer->update(*m_queue.get(), &occluded, m_stats); 1280 layer->update(*m_queue.get(), &occluded, NULL);
1283 EXPECT_EQ(9-1, layer->fakeLayerUpdater()->updateCount()); 1281 EXPECT_EQ(9-1, layer->fakeLayerUpdater()->updateCount());
1284 1282
1285 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); 1283 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1);
1286 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 90000 + 80000 + 80000, 1); 1284 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 90000 + 80000 + 80000, 1);
1287 EXPECT_EQ(1 + 1, occluded.overdrawMetrics().tilesCulledForUpload()); 1285 EXPECT_EQ(1 + 1, occluded.overdrawMetrics().tilesCulledForUpload());
1288 } 1286 }
1289 1287
1290 TEST_F(TiledLayerTest, visibleContentOpaqueRegion) 1288 TEST_F(TiledLayerTest, visibleContentOpaqueRegion)
1291 { 1289 {
1292 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get())); 1290 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( m_resourceManager.get()));
(...skipping 11 matching lines...) Expand all
1304 layer->drawProperties().drawable_content_rect = visibleBounds; 1302 layer->drawProperties().drawable_content_rect = visibleBounds;
1305 layer->drawProperties().visible_content_rect = visibleBounds; 1303 layer->drawProperties().visible_content_rect = visibleBounds;
1306 layer->drawProperties().opacity = 1; 1304 layer->drawProperties().opacity = 1;
1307 1305
1308 layer->setTexturePriorities(m_priorityCalculator); 1306 layer->setTexturePriorities(m_priorityCalculator);
1309 m_resourceManager->prioritizeTextures(); 1307 m_resourceManager->prioritizeTextures();
1310 1308
1311 // If the layer doesn't paint opaque content, then the visibleContentOpaqueR egion should be empty. 1309 // If the layer doesn't paint opaque content, then the visibleContentOpaqueR egion should be empty.
1312 layer->fakeLayerUpdater()->setOpaquePaintRect(gfx::Rect()); 1310 layer->fakeLayerUpdater()->setOpaquePaintRect(gfx::Rect());
1313 layer->invalidateContentRect(contentBounds); 1311 layer->invalidateContentRect(contentBounds);
1314 layer->update(*m_queue.get(), &occluded, m_stats); 1312 layer->update(*m_queue.get(), &occluded, NULL);
1315 opaqueContents = layer->visibleContentOpaqueRegion(); 1313 opaqueContents = layer->visibleContentOpaqueRegion();
1316 EXPECT_TRUE(opaqueContents.IsEmpty()); 1314 EXPECT_TRUE(opaqueContents.IsEmpty());
1317 1315
1318 EXPECT_NEAR(occluded.overdrawMetrics().pixelsPainted(), 20000, 1); 1316 EXPECT_NEAR(occluded.overdrawMetrics().pixelsPainted(), 20000, 1);
1319 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); 1317 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1);
1320 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 20000, 1 ); 1318 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 20000, 1 );
1321 EXPECT_EQ(0, occluded.overdrawMetrics().tilesCulledForUpload()); 1319 EXPECT_EQ(0, occluded.overdrawMetrics().tilesCulledForUpload());
1322 1320
1323 // visibleContentOpaqueRegion should match the visible part of what is paint ed opaque. 1321 // visibleContentOpaqueRegion should match the visible part of what is paint ed opaque.
1324 opaquePaintRect = gfx::Rect(10, 10, 90, 190); 1322 opaquePaintRect = gfx::Rect(10, 10, 90, 190);
1325 layer->fakeLayerUpdater()->setOpaquePaintRect(opaquePaintRect); 1323 layer->fakeLayerUpdater()->setOpaquePaintRect(opaquePaintRect);
1326 layer->invalidateContentRect(contentBounds); 1324 layer->invalidateContentRect(contentBounds);
1327 layer->update(*m_queue.get(), &occluded, m_stats); 1325 layer->update(*m_queue.get(), &occluded, NULL);
1328 updateTextures(); 1326 updateTextures();
1329 opaqueContents = layer->visibleContentOpaqueRegion(); 1327 opaqueContents = layer->visibleContentOpaqueRegion();
1330 EXPECT_EQ(gfx::IntersectRects(opaquePaintRect, visibleBounds).ToString(), op aqueContents.ToString()); 1328 EXPECT_EQ(gfx::IntersectRects(opaquePaintRect, visibleBounds).ToString(), op aqueContents.ToString());
1331 1329
1332 EXPECT_NEAR(occluded.overdrawMetrics().pixelsPainted(), 20000 * 2, 1); 1330 EXPECT_NEAR(occluded.overdrawMetrics().pixelsPainted(), 20000 * 2, 1);
1333 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 17100, 1); 1331 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 17100, 1);
1334 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 20000 + 20000 - 17100, 1); 1332 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 20000 + 20000 - 17100, 1);
1335 EXPECT_EQ(0, occluded.overdrawMetrics().tilesCulledForUpload()); 1333 EXPECT_EQ(0, occluded.overdrawMetrics().tilesCulledForUpload());
1336 1334
1337 // If we paint again without invalidating, the same stuff should be opaque. 1335 // If we paint again without invalidating, the same stuff should be opaque.
1338 layer->fakeLayerUpdater()->setOpaquePaintRect(gfx::Rect()); 1336 layer->fakeLayerUpdater()->setOpaquePaintRect(gfx::Rect());
1339 layer->update(*m_queue.get(), &occluded, m_stats); 1337 layer->update(*m_queue.get(), &occluded, NULL);
1340 updateTextures(); 1338 updateTextures();
1341 opaqueContents = layer->visibleContentOpaqueRegion(); 1339 opaqueContents = layer->visibleContentOpaqueRegion();
1342 EXPECT_EQ(gfx::IntersectRects(opaquePaintRect, visibleBounds).ToString(), op aqueContents.ToString()); 1340 EXPECT_EQ(gfx::IntersectRects(opaquePaintRect, visibleBounds).ToString(), op aqueContents.ToString());
1343 1341
1344 EXPECT_NEAR(occluded.overdrawMetrics().pixelsPainted(), 20000 * 2, 1); 1342 EXPECT_NEAR(occluded.overdrawMetrics().pixelsPainted(), 20000 * 2, 1);
1345 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 17100, 1); 1343 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 17100, 1);
1346 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 20000 + 20000 - 17100, 1); 1344 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 20000 + 20000 - 17100, 1);
1347 EXPECT_EQ(0, occluded.overdrawMetrics().tilesCulledForUpload()); 1345 EXPECT_EQ(0, occluded.overdrawMetrics().tilesCulledForUpload());
1348 1346
1349 // If we repaint a non-opaque part of the tile, then it shouldn't lose its o paque-ness. And other tiles should 1347 // If we repaint a non-opaque part of the tile, then it shouldn't lose its o paque-ness. And other tiles should
1350 // not be affected. 1348 // not be affected.
1351 layer->fakeLayerUpdater()->setOpaquePaintRect(gfx::Rect()); 1349 layer->fakeLayerUpdater()->setOpaquePaintRect(gfx::Rect());
1352 layer->invalidateContentRect(gfx::Rect(0, 0, 1, 1)); 1350 layer->invalidateContentRect(gfx::Rect(0, 0, 1, 1));
1353 layer->update(*m_queue.get(), &occluded, m_stats); 1351 layer->update(*m_queue.get(), &occluded, NULL);
1354 updateTextures(); 1352 updateTextures();
1355 opaqueContents = layer->visibleContentOpaqueRegion(); 1353 opaqueContents = layer->visibleContentOpaqueRegion();
1356 EXPECT_EQ(gfx::IntersectRects(opaquePaintRect, visibleBounds).ToString(), op aqueContents.ToString()); 1354 EXPECT_EQ(gfx::IntersectRects(opaquePaintRect, visibleBounds).ToString(), op aqueContents.ToString());
1357 1355
1358 EXPECT_NEAR(occluded.overdrawMetrics().pixelsPainted(), 20000 * 2 + 1, 1); 1356 EXPECT_NEAR(occluded.overdrawMetrics().pixelsPainted(), 20000 * 2 + 1, 1);
1359 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 17100, 1); 1357 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 17100, 1);
1360 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 20000 + 20000 - 17100 + 1, 1); 1358 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 20000 + 20000 - 17100 + 1, 1);
1361 EXPECT_EQ(0, occluded.overdrawMetrics().tilesCulledForUpload()); 1359 EXPECT_EQ(0, occluded.overdrawMetrics().tilesCulledForUpload());
1362 1360
1363 // If we repaint an opaque part of the tile, then it should lose its opaque- ness. But other tiles should still 1361 // If we repaint an opaque part of the tile, then it should lose its opaque- ness. But other tiles should still
1364 // not be affected. 1362 // not be affected.
1365 layer->fakeLayerUpdater()->setOpaquePaintRect(gfx::Rect()); 1363 layer->fakeLayerUpdater()->setOpaquePaintRect(gfx::Rect());
1366 layer->invalidateContentRect(gfx::Rect(10, 10, 1, 1)); 1364 layer->invalidateContentRect(gfx::Rect(10, 10, 1, 1));
1367 layer->update(*m_queue.get(), &occluded, m_stats); 1365 layer->update(*m_queue.get(), &occluded, NULL);
1368 updateTextures(); 1366 updateTextures();
1369 opaqueContents = layer->visibleContentOpaqueRegion(); 1367 opaqueContents = layer->visibleContentOpaqueRegion();
1370 EXPECT_EQ(gfx::IntersectRects(gfx::Rect(10, 100, 90, 100), visibleBounds).To String(), opaqueContents.ToString()); 1368 EXPECT_EQ(gfx::IntersectRects(gfx::Rect(10, 100, 90, 100), visibleBounds).To String(), opaqueContents.ToString());
1371 1369
1372 EXPECT_NEAR(occluded.overdrawMetrics().pixelsPainted(), 20000 * 2 + 1 + 1, 1); 1370 EXPECT_NEAR(occluded.overdrawMetrics().pixelsPainted(), 20000 * 2 + 1 + 1, 1);
1373 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 17100, 1); 1371 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 17100, 1);
1374 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 20000 + 20000 - 17100 + 1 + 1, 1); 1372 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 20000 + 20000 - 17100 + 1 + 1, 1);
1375 EXPECT_EQ(0, occluded.overdrawMetrics().tilesCulledForUpload()); 1373 EXPECT_EQ(0, occluded.overdrawMetrics().tilesCulledForUpload());
1376 } 1374 }
1377 1375
(...skipping 14 matching lines...) Expand all
1392 layer->drawProperties().drawable_content_rect = visibleBounds; 1390 layer->drawProperties().drawable_content_rect = visibleBounds;
1393 layer->drawProperties().visible_content_rect = visibleBounds; 1391 layer->drawProperties().visible_content_rect = visibleBounds;
1394 layer->drawProperties().opacity = 1; 1392 layer->drawProperties().opacity = 1;
1395 1393
1396 layer->setTexturePriorities(m_priorityCalculator); 1394 layer->setTexturePriorities(m_priorityCalculator);
1397 m_resourceManager->prioritizeTextures(); 1395 m_resourceManager->prioritizeTextures();
1398 1396
1399 // Invalidates and paints the whole layer. 1397 // Invalidates and paints the whole layer.
1400 layer->fakeLayerUpdater()->setOpaquePaintRect(gfx::Rect()); 1398 layer->fakeLayerUpdater()->setOpaquePaintRect(gfx::Rect());
1401 layer->invalidateContentRect(contentBounds); 1399 layer->invalidateContentRect(contentBounds);
1402 layer->update(*m_queue.get(), &occluded, m_stats); 1400 layer->update(*m_queue.get(), &occluded, NULL);
1403 updateTextures(); 1401 updateTextures();
1404 opaqueContents = layer->visibleContentOpaqueRegion(); 1402 opaqueContents = layer->visibleContentOpaqueRegion();
1405 EXPECT_TRUE(opaqueContents.IsEmpty()); 1403 EXPECT_TRUE(opaqueContents.IsEmpty());
1406 1404
1407 EXPECT_NEAR(occluded.overdrawMetrics().pixelsPainted(), 30000, 1); 1405 EXPECT_NEAR(occluded.overdrawMetrics().pixelsPainted(), 30000, 1);
1408 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); 1406 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1);
1409 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 30000, 1 ); 1407 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 30000, 1 );
1410 EXPECT_EQ(0, occluded.overdrawMetrics().tilesCulledForUpload()); 1408 EXPECT_EQ(0, occluded.overdrawMetrics().tilesCulledForUpload());
1411 1409
1412 // Invalidates an area on the top and bottom tile, which will cause us to pa int the tile in the middle, 1410 // Invalidates an area on the top and bottom tile, which will cause us to pa int the tile in the middle,
1413 // even though it is not dirty and will not be uploaded. 1411 // even though it is not dirty and will not be uploaded.
1414 layer->fakeLayerUpdater()->setOpaquePaintRect(gfx::Rect()); 1412 layer->fakeLayerUpdater()->setOpaquePaintRect(gfx::Rect());
1415 layer->invalidateContentRect(gfx::Rect(0, 0, 1, 1)); 1413 layer->invalidateContentRect(gfx::Rect(0, 0, 1, 1));
1416 layer->invalidateContentRect(gfx::Rect(50, 200, 10, 10)); 1414 layer->invalidateContentRect(gfx::Rect(50, 200, 10, 10));
1417 layer->update(*m_queue.get(), &occluded, m_stats); 1415 layer->update(*m_queue.get(), &occluded, NULL);
1418 updateTextures(); 1416 updateTextures();
1419 opaqueContents = layer->visibleContentOpaqueRegion(); 1417 opaqueContents = layer->visibleContentOpaqueRegion();
1420 EXPECT_TRUE(opaqueContents.IsEmpty()); 1418 EXPECT_TRUE(opaqueContents.IsEmpty());
1421 1419
1422 // The middle tile was painted even though not invalidated. 1420 // The middle tile was painted even though not invalidated.
1423 EXPECT_NEAR(occluded.overdrawMetrics().pixelsPainted(), 30000 + 60 * 210, 1) ; 1421 EXPECT_NEAR(occluded.overdrawMetrics().pixelsPainted(), 30000 + 60 * 210, 1) ;
1424 // The pixels uploaded will not include the non-invalidated tile in the midd le. 1422 // The pixels uploaded will not include the non-invalidated tile in the midd le.
1425 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1); 1423 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedOpaque(), 0, 1);
1426 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 30000 + 1 + 100, 1); 1424 EXPECT_NEAR(occluded.overdrawMetrics().pixelsUploadedTranslucent(), 30000 + 1 + 100, 1);
1427 EXPECT_EQ(0, occluded.overdrawMetrics().tilesCulledForUpload()); 1425 EXPECT_EQ(0, occluded.overdrawMetrics().tilesCulledForUpload());
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
1625 1623
1626 gfx::Rect contentRect(0, 0, 45, 47); 1624 gfx::Rect contentRect(0, 0, 45, 47);
1627 EXPECT_EQ(contentRect.size(), layer->contentBounds()); 1625 EXPECT_EQ(contentRect.size(), layer->contentBounds());
1628 layer->drawProperties().visible_content_rect = contentRect; 1626 layer->drawProperties().visible_content_rect = contentRect;
1629 layer->drawProperties().drawable_content_rect = contentRect; 1627 layer->drawProperties().drawable_content_rect = contentRect;
1630 1628
1631 layer->setTexturePriorities(m_priorityCalculator); 1629 layer->setTexturePriorities(m_priorityCalculator);
1632 m_resourceManager->prioritizeTextures(); 1630 m_resourceManager->prioritizeTextures();
1633 1631
1634 // Update the whole tile. 1632 // Update the whole tile.
1635 layer->update(*m_queue.get(), 0, m_stats); 1633 layer->update(*m_queue.get(), 0, NULL);
1636 layer->trackingLayerPainter()->resetPaintedRect(); 1634 layer->trackingLayerPainter()->resetPaintedRect();
1637 1635
1638 EXPECT_RECT_EQ(gfx::Rect(), layer->trackingLayerPainter()->paintedRect()); 1636 EXPECT_RECT_EQ(gfx::Rect(), layer->trackingLayerPainter()->paintedRect());
1639 updateTextures(); 1637 updateTextures();
1640 1638
1641 // Invalidate the entire layer in content space. When painting, the rect giv en to webkit should match the layer's bounds. 1639 // Invalidate the entire layer in content space. When painting, the rect giv en to webkit should match the layer's bounds.
1642 layer->invalidateContentRect(contentRect); 1640 layer->invalidateContentRect(contentRect);
1643 layer->update(*m_queue.get(), 0, m_stats); 1641 layer->update(*m_queue.get(), 0, NULL);
1644 1642
1645 EXPECT_RECT_EQ(layerRect, layer->trackingLayerPainter()->paintedRect()); 1643 EXPECT_RECT_EQ(layerRect, layer->trackingLayerPainter()->paintedRect());
1646 } 1644 }
1647 1645
1648 TEST_F(TiledLayerTest, nonIntegerContentsScaleIsNotDistortedDuringInvalidation) 1646 TEST_F(TiledLayerTest, nonIntegerContentsScaleIsNotDistortedDuringInvalidation)
1649 { 1647 {
1650 scoped_refptr<UpdateTrackingTiledLayer> layer = make_scoped_refptr(new Updat eTrackingTiledLayer(m_resourceManager.get())); 1648 scoped_refptr<UpdateTrackingTiledLayer> layer = make_scoped_refptr(new Updat eTrackingTiledLayer(m_resourceManager.get()));
1651 1649
1652 gfx::Rect layerRect(0, 0, 30, 31); 1650 gfx::Rect layerRect(0, 0, 30, 31);
1653 layer->setPosition(layerRect.origin()); 1651 layer->setPosition(layerRect.origin());
1654 layer->setBounds(layerRect.size()); 1652 layer->setBounds(layerRect.size());
1655 layer->updateContentsScale(1.3f); 1653 layer->updateContentsScale(1.3f);
1656 1654
1657 gfx::Rect contentRect(gfx::Point(), layer->contentBounds()); 1655 gfx::Rect contentRect(gfx::Point(), layer->contentBounds());
1658 layer->drawProperties().visible_content_rect = contentRect; 1656 layer->drawProperties().visible_content_rect = contentRect;
1659 layer->drawProperties().drawable_content_rect = contentRect; 1657 layer->drawProperties().drawable_content_rect = contentRect;
1660 1658
1661 layer->setTexturePriorities(m_priorityCalculator); 1659 layer->setTexturePriorities(m_priorityCalculator);
1662 m_resourceManager->prioritizeTextures(); 1660 m_resourceManager->prioritizeTextures();
1663 1661
1664 // Update the whole tile. 1662 // Update the whole tile.
1665 layer->update(*m_queue.get(), 0, m_stats); 1663 layer->update(*m_queue.get(), 0, NULL);
1666 layer->trackingLayerPainter()->resetPaintedRect(); 1664 layer->trackingLayerPainter()->resetPaintedRect();
1667 1665
1668 EXPECT_RECT_EQ(gfx::Rect(), layer->trackingLayerPainter()->paintedRect()); 1666 EXPECT_RECT_EQ(gfx::Rect(), layer->trackingLayerPainter()->paintedRect());
1669 updateTextures(); 1667 updateTextures();
1670 1668
1671 // Invalidate the entire layer in layer space. When painting, the rect given to webkit should match the layer's bounds. 1669 // Invalidate the entire layer in layer space. When painting, the rect given to webkit should match the layer's bounds.
1672 layer->setNeedsDisplayRect(layerRect); 1670 layer->setNeedsDisplayRect(layerRect);
1673 layer->update(*m_queue.get(), 0, m_stats); 1671 layer->update(*m_queue.get(), 0, NULL);
1674 1672
1675 EXPECT_RECT_EQ(layerRect, layer->trackingLayerPainter()->paintedRect()); 1673 EXPECT_RECT_EQ(layerRect, layer->trackingLayerPainter()->paintedRect());
1676 } 1674 }
1677 1675
1678 } // namespace 1676 } // namespace
1679 } // namespace cc 1677 } // namespace cc
OLDNEW
« no previous file with comments | « cc/tiled_layer.cc ('k') | cc/worker_pool.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698