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

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

Issue 12426024: cc: Switch RenderingStats collection in Layer::Update() to RenderingStatsInstrumentation (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 7 years, 9 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
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/layers/tiled_layer.h" 5 #include "cc/layers/tiled_layer.h"
6 6
7 #include "cc/debug/overdraw_metrics.h" 7 #include "cc/debug/overdraw_metrics.h"
8 #include "cc/resources/bitmap_content_layer_updater.h" 8 #include "cc/resources/bitmap_content_layer_updater.h"
9 #include "cc/resources/layer_painter.h" 9 #include "cc/resources/layer_painter.h"
10 #include "cc/resources/prioritized_resource_manager.h" 10 #include "cc/resources/prioritized_resource_manager.h"
11 #include "cc/resources/resource_update_controller.h" 11 #include "cc/resources/resource_update_controller.h"
12 #include "cc/test/animation_test_common.h" 12 #include "cc/test/animation_test_common.h"
13 #include "cc/test/fake_layer_tree_host_client.h" 13 #include "cc/test/fake_layer_tree_host_client.h"
14 #include "cc/test/fake_layer_tree_host_impl.h" 14 #include "cc/test/fake_layer_tree_host_impl.h"
15 #include "cc/test/fake_output_surface.h" 15 #include "cc/test/fake_output_surface.h"
16 #include "cc/test/fake_proxy.h" 16 #include "cc/test/fake_proxy.h"
17 #include "cc/test/fake_rendering_stats_instrumentation.h"
17 #include "cc/test/geometry_test_utils.h" 18 #include "cc/test/geometry_test_utils.h"
18 #include "cc/test/tiled_layer_test_common.h" 19 #include "cc/test/tiled_layer_test_common.h"
19 #include "cc/trees/single_thread_proxy.h" // For DebugScopedSetImplThread 20 #include "cc/trees/single_thread_proxy.h" // For DebugScopedSetImplThread
20 #include "testing/gtest/include/gtest/gtest.h" 21 #include "testing/gtest/include/gtest/gtest.h"
21 #include "ui/gfx/rect_conversions.h" 22 #include "ui/gfx/rect_conversions.h"
22 #include "ui/gfx/transform.h" 23 #include "ui/gfx/transform.h"
23 24
24 namespace cc { 25 namespace cc {
25 namespace { 26 namespace {
26 27
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 m_queue = make_scoped_ptr(new ResourceUpdateQueue); 101 m_queue = make_scoped_ptr(new ResourceUpdateQueue);
101 } 102 }
102 void layerPushPropertiesTo(FakeTiledLayer* layer, FakeTiledLayerImpl* layerI mpl) 103 void layerPushPropertiesTo(FakeTiledLayer* layer, FakeTiledLayerImpl* layerI mpl)
103 { 104 {
104 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBloc ked(proxy_); 105 DebugScopedSetImplThreadAndMainThreadBlocked implThreadAndMainThreadBloc ked(proxy_);
105 layer->PushPropertiesTo(layerImpl); 106 layer->PushPropertiesTo(layerImpl);
106 } 107 }
107 void layerUpdate(FakeTiledLayer* layer, TestOcclusionTracker* occluded) 108 void layerUpdate(FakeTiledLayer* layer, TestOcclusionTracker* occluded)
108 { 109 {
109 DebugScopedSetMainThread mainThread(proxy_); 110 DebugScopedSetMainThread mainThread(proxy_);
110 layer->Update(m_queue.get(), occluded, NULL); 111 layer->Update(m_queue.get(), occluded);
111 } 112 }
112 113
113 void calcDrawProps(const scoped_refptr<FakeTiledLayer>& layer1) 114 void calcDrawProps(const scoped_refptr<FakeTiledLayer>& layer1)
114 { 115 {
115 scoped_refptr<FakeTiledLayer> layer2; 116 scoped_refptr<FakeTiledLayer> layer2;
116 calcDrawProps(layer1, layer2); 117 calcDrawProps(layer1, layer2);
117 } 118 }
118 119
119 void calcDrawProps(const scoped_refptr<FakeTiledLayer>& layer1, 120 void calcDrawProps(const scoped_refptr<FakeTiledLayer>& layer1,
120 const scoped_refptr<FakeTiledLayer>& layer2) 121 const scoped_refptr<FakeTiledLayer>& layer2)
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 // Get textures 154 // Get textures
154 resource_manager_->ClearPriorities(); 155 resource_manager_->ClearPriorities();
155 if (layer1) 156 if (layer1)
156 layer1->SetTexturePriorities(m_priorityCalculator); 157 layer1->SetTexturePriorities(m_priorityCalculator);
157 if (layer2) 158 if (layer2)
158 layer2->SetTexturePriorities(m_priorityCalculator); 159 layer2->SetTexturePriorities(m_priorityCalculator);
159 resource_manager_->PrioritizeTextures(); 160 resource_manager_->PrioritizeTextures();
160 161
161 // Update content 162 // Update content
162 if (layer1) 163 if (layer1)
163 layer1->Update(m_queue.get(), m_occlusion, NULL); 164 layer1->Update(m_queue.get(), m_occlusion);
164 if (layer2) 165 if (layer2)
165 layer2->Update(m_queue.get(), m_occlusion, NULL); 166 layer2->Update(m_queue.get(), m_occlusion);
166 167
167 bool needsUpdate = false; 168 bool needsUpdate = false;
168 if (layer1) 169 if (layer1)
169 needsUpdate |= layer1->NeedsIdlePaint(); 170 needsUpdate |= layer1->NeedsIdlePaint();
170 if (layer2) 171 if (layer2)
171 needsUpdate |= layer2->NeedsIdlePaint(); 172 needsUpdate |= layer2->NeedsIdlePaint();
172 173
173 // Update textures and push. 174 // Update textures and push.
174 updateTextures(); 175 updateTextures();
175 if (layer1) 176 if (layer1)
(...skipping 391 matching lines...) Expand 10 before | Expand all | Expand 10 after
567 568
568 // Pretend the layer is animating. 569 // Pretend the layer is animating.
569 layer->draw_properties().target_space_transform_is_animating = true; 570 layer->draw_properties().target_space_transform_is_animating = true;
570 layer->draw_properties().visible_content_rect = visibleRect; 571 layer->draw_properties().visible_content_rect = visibleRect;
571 layer->SetLayerTreeHost(layer_tree_host_.get()); 572 layer->SetLayerTreeHost(layer_tree_host_.get());
572 573
573 // The layer should paint its entire contents on the first paint 574 // The layer should paint its entire contents on the first paint
574 // if it is close to the viewport size and has the available memory. 575 // if it is close to the viewport size and has the available memory.
575 layer->SetTexturePriorities(m_priorityCalculator); 576 layer->SetTexturePriorities(m_priorityCalculator);
576 resource_manager_->PrioritizeTextures(); 577 resource_manager_->PrioritizeTextures();
577 layer->Update(m_queue.get(), 0, NULL); 578 layer->Update(m_queue.get(), 0);
578 updateTextures(); 579 updateTextures();
579 layerPushPropertiesTo(layer.get(), layerImpl.get()); 580 layerPushPropertiesTo(layer.get(), layerImpl.get());
580 581
581 // We should have all the tiles for the small animated layer. 582 // We should have all the tiles for the small animated layer.
582 // We should still have the visible tiles when we didn't 583 // We should still have the visible tiles when we didn't
583 // have enough memory for all the tiles. 584 // have enough memory for all the tiles.
584 if (!runOutOfMemory[i]) { 585 if (!runOutOfMemory[i]) {
585 for (int i = 0; i < 5; ++i) { 586 for (int i = 0; i < 5; ++i) {
586 for (int j = 0; j < 5; ++j) 587 for (int j = 0; j < 5; ++j)
587 EXPECT_TRUE(layerImpl->HasResourceIdForTileAt(i, j)); 588 EXPECT_TRUE(layerImpl->HasResourceIdForTileAt(i, j));
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
724 layer->SetBounds(layerBounds.size()); 725 layer->SetBounds(layerBounds.size());
725 layer->SetContentBounds(contentBounds.size()); 726 layer->SetContentBounds(contentBounds.size());
726 layer->draw_properties().visible_content_rect = contentBounds; 727 layer->draw_properties().visible_content_rect = contentBounds;
727 728
728 // On first update, the updateRect includes all tiles, even beyond the bound aries of the layer. 729 // On first update, the updateRect includes all tiles, even beyond the bound aries of the layer.
729 // However, it should still be in layer space, not content space. 730 // However, it should still be in layer space, not content space.
730 layer->InvalidateContentRect(contentBounds); 731 layer->InvalidateContentRect(contentBounds);
731 732
732 layer->SetTexturePriorities(m_priorityCalculator); 733 layer->SetTexturePriorities(m_priorityCalculator);
733 resource_manager_->PrioritizeTextures(); 734 resource_manager_->PrioritizeTextures();
734 layer->Update(m_queue.get(), 0, NULL); 735 layer->Update(m_queue.get(), 0);
735 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 300, 300 * 0.8), layer->update_rect()) ; 736 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 300, 300 * 0.8), layer->update_rect()) ;
736 updateTextures(); 737 updateTextures();
737 738
738 // After the tiles are updated once, another invalidate only needs to update the bounds of the layer. 739 // After the tiles are updated once, another invalidate only needs to update the bounds of the layer.
739 layer->SetTexturePriorities(m_priorityCalculator); 740 layer->SetTexturePriorities(m_priorityCalculator);
740 resource_manager_->PrioritizeTextures(); 741 resource_manager_->PrioritizeTextures();
741 layer->InvalidateContentRect(contentBounds); 742 layer->InvalidateContentRect(contentBounds);
742 layer->Update(m_queue.get(), 0, NULL); 743 layer->Update(m_queue.get(), 0);
743 EXPECT_FLOAT_RECT_EQ(gfx::RectF(layerBounds), layer->update_rect()); 744 EXPECT_FLOAT_RECT_EQ(gfx::RectF(layerBounds), layer->update_rect());
744 updateTextures(); 745 updateTextures();
745 746
746 // Partial re-paint should also be represented by the updateRect in layer sp ace, not content space. 747 // Partial re-paint should also be represented by the updateRect in layer sp ace, not content space.
747 gfx::Rect partialDamage(30, 100, 10, 10); 748 gfx::Rect partialDamage(30, 100, 10, 10);
748 layer->InvalidateContentRect(partialDamage); 749 layer->InvalidateContentRect(partialDamage);
749 layer->SetTexturePriorities(m_priorityCalculator); 750 layer->SetTexturePriorities(m_priorityCalculator);
750 resource_manager_->PrioritizeTextures(); 751 resource_manager_->PrioritizeTextures();
751 layer->Update(m_queue.get(), 0, NULL); 752 layer->Update(m_queue.get(), 0);
752 EXPECT_FLOAT_RECT_EQ(gfx::RectF(45, 80, 15, 8), layer->update_rect()); 753 EXPECT_FLOAT_RECT_EQ(gfx::RectF(45, 80, 15, 8), layer->update_rect());
753 } 754 }
754 755
755 TEST_F(TiledLayerTest, verifyInvalidationWhenContentsScaleChanges) 756 TEST_F(TiledLayerTest, verifyInvalidationWhenContentsScaleChanges)
756 { 757 {
757 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( resource_manager_.get())); 758 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( resource_manager_.get()));
758 scoped_ptr<FakeTiledLayerImpl> layerImpl = make_scoped_ptr(new FakeTiledLaye rImpl(m_hostImpl->active_tree(), 1)); 759 scoped_ptr<FakeTiledLayerImpl> layerImpl = make_scoped_ptr(new FakeTiledLaye rImpl(m_hostImpl->active_tree(), 1));
759 760
760 // Create a layer with one tile. 761 // Create a layer with one tile.
761 layer->SetBounds(gfx::Size(100, 100)); 762 layer->SetBounds(gfx::Size(100, 100));
762 calcDrawProps(layer); 763 calcDrawProps(layer);
763 layer->draw_properties().visible_content_rect = gfx::Rect(0, 0, 100, 100); 764 layer->draw_properties().visible_content_rect = gfx::Rect(0, 0, 100, 100);
764 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 100, 100), layer->last_needs_display_r ect()); 765 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 100, 100), layer->last_needs_display_r ect());
765 766
766 // Push the tiles to the impl side and check that there is exactly one. 767 // Push the tiles to the impl side and check that there is exactly one.
767 layer->SetTexturePriorities(m_priorityCalculator); 768 layer->SetTexturePriorities(m_priorityCalculator);
768 resource_manager_->PrioritizeTextures(); 769 resource_manager_->PrioritizeTextures();
769 layer->Update(m_queue.get(), 0, NULL); 770 layer->Update(m_queue.get(), 0);
770 updateTextures(); 771 updateTextures();
771 layerPushPropertiesTo(layer.get(), layerImpl.get()); 772 layerPushPropertiesTo(layer.get(), layerImpl.get());
772 EXPECT_TRUE(layerImpl->HasResourceIdForTileAt(0, 0)); 773 EXPECT_TRUE(layerImpl->HasResourceIdForTileAt(0, 0));
773 EXPECT_FALSE(layerImpl->HasResourceIdForTileAt(0, 1)); 774 EXPECT_FALSE(layerImpl->HasResourceIdForTileAt(0, 1));
774 EXPECT_FALSE(layerImpl->HasResourceIdForTileAt(1, 0)); 775 EXPECT_FALSE(layerImpl->HasResourceIdForTileAt(1, 0));
775 EXPECT_FALSE(layerImpl->HasResourceIdForTileAt(1, 1)); 776 EXPECT_FALSE(layerImpl->HasResourceIdForTileAt(1, 1));
776 777
777 layer->SetNeedsDisplayRect(gfx::Rect()); 778 layer->SetNeedsDisplayRect(gfx::Rect());
778 EXPECT_FLOAT_RECT_EQ(gfx::RectF(), layer->last_needs_display_rect()); 779 EXPECT_FLOAT_RECT_EQ(gfx::RectF(), layer->last_needs_display_rect());
779 780
780 // Change the contents scale. 781 // Change the contents scale.
781 layer->UpdateContentsScale(2); 782 layer->UpdateContentsScale(2);
782 layer->draw_properties().visible_content_rect = gfx::Rect(0, 0, 200, 200); 783 layer->draw_properties().visible_content_rect = gfx::Rect(0, 0, 200, 200);
783 784
784 // The impl side should get 2x2 tiles now. 785 // The impl side should get 2x2 tiles now.
785 layer->SetTexturePriorities(m_priorityCalculator); 786 layer->SetTexturePriorities(m_priorityCalculator);
786 resource_manager_->PrioritizeTextures(); 787 resource_manager_->PrioritizeTextures();
787 layer->Update(m_queue.get(), 0, NULL); 788 layer->Update(m_queue.get(), 0);
788 updateTextures(); 789 updateTextures();
789 layerPushPropertiesTo(layer.get(), layerImpl.get()); 790 layerPushPropertiesTo(layer.get(), layerImpl.get());
790 EXPECT_TRUE(layerImpl->HasResourceIdForTileAt(0, 0)); 791 EXPECT_TRUE(layerImpl->HasResourceIdForTileAt(0, 0));
791 EXPECT_TRUE(layerImpl->HasResourceIdForTileAt(0, 1)); 792 EXPECT_TRUE(layerImpl->HasResourceIdForTileAt(0, 1));
792 EXPECT_TRUE(layerImpl->HasResourceIdForTileAt(1, 0)); 793 EXPECT_TRUE(layerImpl->HasResourceIdForTileAt(1, 0));
793 EXPECT_TRUE(layerImpl->HasResourceIdForTileAt(1, 1)); 794 EXPECT_TRUE(layerImpl->HasResourceIdForTileAt(1, 1));
794 795
795 // Verify that changing the contents scale caused invalidation, and 796 // Verify that changing the contents scale caused invalidation, and
796 // that the layer-space rectangle requiring painting is not scaled. 797 // that the layer-space rectangle requiring painting is not scaled.
797 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 100, 100), layer->last_needs_display_r ect()); 798 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 100, 100), layer->last_needs_display_r ect());
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
855 TEST_F(TiledLayerTest, resizeToSmaller) 856 TEST_F(TiledLayerTest, resizeToSmaller)
856 { 857 {
857 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( resource_manager_.get())); 858 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( resource_manager_.get()));
858 859
859 layer->SetBounds(gfx::Size(700, 700)); 860 layer->SetBounds(gfx::Size(700, 700));
860 layer->draw_properties().visible_content_rect = gfx::Rect(0, 0, 700, 700); 861 layer->draw_properties().visible_content_rect = gfx::Rect(0, 0, 700, 700);
861 layer->InvalidateContentRect(gfx::Rect(0, 0, 700, 700)); 862 layer->InvalidateContentRect(gfx::Rect(0, 0, 700, 700));
862 863
863 layer->SetTexturePriorities(m_priorityCalculator); 864 layer->SetTexturePriorities(m_priorityCalculator);
864 resource_manager_->PrioritizeTextures(); 865 resource_manager_->PrioritizeTextures();
865 layer->Update(m_queue.get(), 0, NULL); 866 layer->Update(m_queue.get(), 0);
866 867
867 layer->SetBounds(gfx::Size(200, 200)); 868 layer->SetBounds(gfx::Size(200, 200));
868 layer->InvalidateContentRect(gfx::Rect(0, 0, 200, 200)); 869 layer->InvalidateContentRect(gfx::Rect(0, 0, 200, 200));
869 } 870 }
870 871
871 TEST_F(TiledLayerTest, hugeLayerUpdateCrash) 872 TEST_F(TiledLayerTest, hugeLayerUpdateCrash)
872 { 873 {
873 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( resource_manager_.get())); 874 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( resource_manager_.get()));
874 875
875 int size = 1 << 30; 876 int size = 1 << 30;
876 layer->SetBounds(gfx::Size(size, size)); 877 layer->SetBounds(gfx::Size(size, size));
877 layer->draw_properties().visible_content_rect = gfx::Rect(0, 0, 700, 700); 878 layer->draw_properties().visible_content_rect = gfx::Rect(0, 0, 700, 700);
878 layer->InvalidateContentRect(gfx::Rect(0, 0, size, size)); 879 layer->InvalidateContentRect(gfx::Rect(0, 0, size, size));
879 880
880 // Ensure no crash for bounds where size * size would overflow an int. 881 // Ensure no crash for bounds where size * size would overflow an int.
881 layer->SetTexturePriorities(m_priorityCalculator); 882 layer->SetTexturePriorities(m_priorityCalculator);
882 resource_manager_->PrioritizeTextures(); 883 resource_manager_->PrioritizeTextures();
883 layer->Update(m_queue.get(), 0, NULL); 884 layer->Update(m_queue.get(), 0);
884 } 885 }
885 886
886 class TiledLayerPartialUpdateTest : public TiledLayerTest { 887 class TiledLayerPartialUpdateTest : public TiledLayerTest {
887 public: 888 public:
888 TiledLayerPartialUpdateTest() 889 TiledLayerPartialUpdateTest()
889 { 890 {
890 m_settings.max_partial_texture_updates = 4; 891 m_settings.max_partial_texture_updates = 4;
891 } 892 }
892 }; 893 };
893 894
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
996 TEST_F(TiledLayerTest, tilesPaintedWithoutOcclusion) 997 TEST_F(TiledLayerTest, tilesPaintedWithoutOcclusion)
997 { 998 {
998 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( resource_manager_.get())); 999 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( resource_manager_.get()));
999 1000
1000 // The tile size is 100x100, so this invalidates and then paints two tiles. 1001 // The tile size is 100x100, so this invalidates and then paints two tiles.
1001 layer->SetBounds(gfx::Size(100, 200)); 1002 layer->SetBounds(gfx::Size(100, 200));
1002 calcDrawProps(layer); 1003 calcDrawProps(layer);
1003 1004
1004 layer->SetTexturePriorities(m_priorityCalculator); 1005 layer->SetTexturePriorities(m_priorityCalculator);
1005 resource_manager_->PrioritizeTextures(); 1006 resource_manager_->PrioritizeTextures();
1006 layer->Update(m_queue.get(), 0, NULL); 1007 layer->Update(m_queue.get(), 0);
1007 EXPECT_EQ(2, layer->fake_layer_updater()->update_count()); 1008 EXPECT_EQ(2, layer->fake_layer_updater()->update_count());
1008 } 1009 }
1009 1010
1010 TEST_F(TiledLayerTest, tilesPaintedWithOcclusion) 1011 TEST_F(TiledLayerTest, tilesPaintedWithOcclusion)
1011 { 1012 {
1012 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( resource_manager_.get())); 1013 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( resource_manager_.get()));
1013 TestOcclusionTracker occluded; 1014 TestOcclusionTracker occluded;
1014 m_occlusion = &occluded; 1015 m_occlusion = &occluded;
1015 1016
1016 // The tile size is 100x100. 1017 // The tile size is 100x100.
1017 1018
1018 layer_tree_host_->SetViewportSize(gfx::Size(600, 600), gfx::Size(600, 600)); 1019 layer_tree_host_->SetViewportSize(gfx::Size(600, 600), gfx::Size(600, 600));
1019 layer->SetBounds(gfx::Size(600, 600)); 1020 layer->SetBounds(gfx::Size(600, 600));
1020 calcDrawProps(layer); 1021 calcDrawProps(layer);
1021 1022
1022 occluded.setOcclusion(gfx::Rect(200, 200, 300, 100)); 1023 occluded.setOcclusion(gfx::Rect(200, 200, 300, 100));
1023 layer->draw_properties().drawable_content_rect = gfx::Rect(gfx::Point(), lay er->content_bounds()); 1024 layer->draw_properties().drawable_content_rect = gfx::Rect(gfx::Point(), lay er->content_bounds());
1024 layer->draw_properties().visible_content_rect = gfx::Rect(gfx::Point(), laye r->content_bounds()); 1025 layer->draw_properties().visible_content_rect = gfx::Rect(gfx::Point(), laye r->content_bounds());
1025 layer->InvalidateContentRect(gfx::Rect(0, 0, 600, 600)); 1026 layer->InvalidateContentRect(gfx::Rect(0, 0, 600, 600));
1026 1027
1027 layer->SetTexturePriorities(m_priorityCalculator); 1028 layer->SetTexturePriorities(m_priorityCalculator);
1028 resource_manager_->PrioritizeTextures(); 1029 resource_manager_->PrioritizeTextures();
1029 layer->Update(m_queue.get(), &occluded, NULL); 1030 layer->Update(m_queue.get(), &occluded);
1030 EXPECT_EQ(36-3, layer->fake_layer_updater()->update_count()); 1031 EXPECT_EQ(36-3, layer->fake_layer_updater()->update_count());
1031 1032
1032 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_opaque(), 0, 1); 1033 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_opaque(), 0, 1);
1033 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_translucent(), 3300 00, 1); 1034 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_translucent(), 3300 00, 1);
1034 EXPECT_EQ(3, occluded.overdraw_metrics()->tiles_culled_for_upload()); 1035 EXPECT_EQ(3, occluded.overdraw_metrics()->tiles_culled_for_upload());
1035 1036
1036 layer->fake_layer_updater()->ClearUpdateCount(); 1037 layer->fake_layer_updater()->ClearUpdateCount();
1037 layer->SetTexturePriorities(m_priorityCalculator); 1038 layer->SetTexturePriorities(m_priorityCalculator);
1038 resource_manager_->PrioritizeTextures(); 1039 resource_manager_->PrioritizeTextures();
1039 1040
1040 occluded.setOcclusion(gfx::Rect(250, 200, 300, 100)); 1041 occluded.setOcclusion(gfx::Rect(250, 200, 300, 100));
1041 layer->InvalidateContentRect(gfx::Rect(0, 0, 600, 600)); 1042 layer->InvalidateContentRect(gfx::Rect(0, 0, 600, 600));
1042 layer->Update(m_queue.get(), &occluded, NULL); 1043 layer->Update(m_queue.get(), &occluded);
1043 EXPECT_EQ(36-2, layer->fake_layer_updater()->update_count()); 1044 EXPECT_EQ(36-2, layer->fake_layer_updater()->update_count());
1044 1045
1045 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_opaque(), 0, 1); 1046 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_opaque(), 0, 1);
1046 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_translucent(), 3300 00 + 340000, 1); 1047 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_translucent(), 3300 00 + 340000, 1);
1047 EXPECT_EQ(3 + 2, occluded.overdraw_metrics()->tiles_culled_for_upload()); 1048 EXPECT_EQ(3 + 2, occluded.overdraw_metrics()->tiles_culled_for_upload());
1048 1049
1049 layer->fake_layer_updater()->ClearUpdateCount(); 1050 layer->fake_layer_updater()->ClearUpdateCount();
1050 layer->SetTexturePriorities(m_priorityCalculator); 1051 layer->SetTexturePriorities(m_priorityCalculator);
1051 resource_manager_->PrioritizeTextures(); 1052 resource_manager_->PrioritizeTextures();
1052 1053
1053 occluded.setOcclusion(gfx::Rect(250, 250, 300, 100)); 1054 occluded.setOcclusion(gfx::Rect(250, 250, 300, 100));
1054 layer->InvalidateContentRect(gfx::Rect(0, 0, 600, 600)); 1055 layer->InvalidateContentRect(gfx::Rect(0, 0, 600, 600));
1055 layer->Update(m_queue.get(), &occluded, NULL); 1056 layer->Update(m_queue.get(), &occluded);
1056 EXPECT_EQ(36, layer->fake_layer_updater()->update_count()); 1057 EXPECT_EQ(36, layer->fake_layer_updater()->update_count());
1057 1058
1058 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_opaque(), 0, 1); 1059 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_opaque(), 0, 1);
1059 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_translucent(), 3300 00 + 340000 + 360000, 1); 1060 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_translucent(), 3300 00 + 340000 + 360000, 1);
1060 EXPECT_EQ(3 + 2, occluded.overdraw_metrics()->tiles_culled_for_upload()); 1061 EXPECT_EQ(3 + 2, occluded.overdraw_metrics()->tiles_culled_for_upload());
1061 } 1062 }
1062 1063
1063 TEST_F(TiledLayerTest, tilesPaintedWithOcclusionAndVisiblityConstraints) 1064 TEST_F(TiledLayerTest, tilesPaintedWithOcclusionAndVisiblityConstraints)
1064 { 1065 {
1065 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( resource_manager_.get())); 1066 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( resource_manager_.get()));
1066 TestOcclusionTracker occluded; 1067 TestOcclusionTracker occluded;
1067 m_occlusion = &occluded; 1068 m_occlusion = &occluded;
1068 1069
1069 // The tile size is 100x100. 1070 // The tile size is 100x100.
1070 1071
1071 layer_tree_host_->SetViewportSize(gfx::Size(600, 600), gfx::Size(600, 600)); 1072 layer_tree_host_->SetViewportSize(gfx::Size(600, 600), gfx::Size(600, 600));
1072 layer->SetBounds(gfx::Size(600, 600)); 1073 layer->SetBounds(gfx::Size(600, 600));
1073 calcDrawProps(layer); 1074 calcDrawProps(layer);
1074 1075
1075 // The partially occluded tiles (by the 150 occlusion height) are visible be yond the occlusion, so not culled. 1076 // The partially occluded tiles (by the 150 occlusion height) are visible be yond the occlusion, so not culled.
1076 occluded.setOcclusion(gfx::Rect(200, 200, 300, 150)); 1077 occluded.setOcclusion(gfx::Rect(200, 200, 300, 150));
1077 layer->draw_properties().drawable_content_rect = gfx::Rect(0, 0, 600, 360); 1078 layer->draw_properties().drawable_content_rect = gfx::Rect(0, 0, 600, 360);
1078 layer->draw_properties().visible_content_rect = gfx::Rect(0, 0, 600, 360); 1079 layer->draw_properties().visible_content_rect = gfx::Rect(0, 0, 600, 360);
1079 layer->InvalidateContentRect(gfx::Rect(0, 0, 600, 600)); 1080 layer->InvalidateContentRect(gfx::Rect(0, 0, 600, 600));
1080 1081
1081 layer->SetTexturePriorities(m_priorityCalculator); 1082 layer->SetTexturePriorities(m_priorityCalculator);
1082 resource_manager_->PrioritizeTextures(); 1083 resource_manager_->PrioritizeTextures();
1083 layer->Update(m_queue.get(), &occluded, NULL); 1084 layer->Update(m_queue.get(), &occluded);
1084 EXPECT_EQ(24-3, layer->fake_layer_updater()->update_count()); 1085 EXPECT_EQ(24-3, layer->fake_layer_updater()->update_count());
1085 1086
1086 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_opaque(), 0, 1); 1087 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_opaque(), 0, 1);
1087 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_translucent(), 2100 00, 1); 1088 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_translucent(), 2100 00, 1);
1088 EXPECT_EQ(3, occluded.overdraw_metrics()->tiles_culled_for_upload()); 1089 EXPECT_EQ(3, occluded.overdraw_metrics()->tiles_culled_for_upload());
1089 1090
1090 layer->fake_layer_updater()->ClearUpdateCount(); 1091 layer->fake_layer_updater()->ClearUpdateCount();
1091 1092
1092 // Now the visible region stops at the edge of the occlusion so the partly v isible tiles become fully occluded. 1093 // Now the visible region stops at the edge of the occlusion so the partly v isible tiles become fully occluded.
1093 occluded.setOcclusion(gfx::Rect(200, 200, 300, 150)); 1094 occluded.setOcclusion(gfx::Rect(200, 200, 300, 150));
1094 layer->draw_properties().drawable_content_rect = gfx::Rect(0, 0, 600, 350); 1095 layer->draw_properties().drawable_content_rect = gfx::Rect(0, 0, 600, 350);
1095 layer->draw_properties().visible_content_rect = gfx::Rect(0, 0, 600, 350); 1096 layer->draw_properties().visible_content_rect = gfx::Rect(0, 0, 600, 350);
1096 layer->InvalidateContentRect(gfx::Rect(0, 0, 600, 600)); 1097 layer->InvalidateContentRect(gfx::Rect(0, 0, 600, 600));
1097 layer->SetTexturePriorities(m_priorityCalculator); 1098 layer->SetTexturePriorities(m_priorityCalculator);
1098 resource_manager_->PrioritizeTextures(); 1099 resource_manager_->PrioritizeTextures();
1099 layer->Update(m_queue.get(), &occluded, NULL); 1100 layer->Update(m_queue.get(), &occluded);
1100 EXPECT_EQ(24-6, layer->fake_layer_updater()->update_count()); 1101 EXPECT_EQ(24-6, layer->fake_layer_updater()->update_count());
1101 1102
1102 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_opaque(), 0, 1); 1103 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_opaque(), 0, 1);
1103 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_translucent(), 2100 00 + 180000, 1); 1104 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_translucent(), 2100 00 + 180000, 1);
1104 EXPECT_EQ(3 + 6, occluded.overdraw_metrics()->tiles_culled_for_upload()); 1105 EXPECT_EQ(3 + 6, occluded.overdraw_metrics()->tiles_culled_for_upload());
1105 1106
1106 layer->fake_layer_updater()->ClearUpdateCount(); 1107 layer->fake_layer_updater()->ClearUpdateCount();
1107 1108
1108 // Now the visible region is even smaller than the occlusion, it should have the same result. 1109 // Now the visible region is even smaller than the occlusion, it should have the same result.
1109 occluded.setOcclusion(gfx::Rect(200, 200, 300, 150)); 1110 occluded.setOcclusion(gfx::Rect(200, 200, 300, 150));
1110 layer->draw_properties().drawable_content_rect = gfx::Rect(0, 0, 600, 340); 1111 layer->draw_properties().drawable_content_rect = gfx::Rect(0, 0, 600, 340);
1111 layer->draw_properties().visible_content_rect = gfx::Rect(0, 0, 600, 340); 1112 layer->draw_properties().visible_content_rect = gfx::Rect(0, 0, 600, 340);
1112 layer->InvalidateContentRect(gfx::Rect(0, 0, 600, 600)); 1113 layer->InvalidateContentRect(gfx::Rect(0, 0, 600, 600));
1113 layer->SetTexturePriorities(m_priorityCalculator); 1114 layer->SetTexturePriorities(m_priorityCalculator);
1114 resource_manager_->PrioritizeTextures(); 1115 resource_manager_->PrioritizeTextures();
1115 layer->Update(m_queue.get(), &occluded, NULL); 1116 layer->Update(m_queue.get(), &occluded);
1116 EXPECT_EQ(24-6, layer->fake_layer_updater()->update_count()); 1117 EXPECT_EQ(24-6, layer->fake_layer_updater()->update_count());
1117 1118
1118 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_opaque(), 0, 1); 1119 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_opaque(), 0, 1);
1119 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_translucent(), 2100 00 + 180000 + 180000, 1); 1120 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_translucent(), 2100 00 + 180000 + 180000, 1);
1120 EXPECT_EQ(3 + 6 + 6, occluded.overdraw_metrics()->tiles_culled_for_upload()) ; 1121 EXPECT_EQ(3 + 6 + 6, occluded.overdraw_metrics()->tiles_culled_for_upload()) ;
1121 1122
1122 } 1123 }
1123 1124
1124 TEST_F(TiledLayerTest, tilesNotPaintedWithoutInvalidation) 1125 TEST_F(TiledLayerTest, tilesNotPaintedWithoutInvalidation)
1125 { 1126 {
1126 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( resource_manager_.get())); 1127 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( resource_manager_.get()));
1127 TestOcclusionTracker occluded; 1128 TestOcclusionTracker occluded;
1128 m_occlusion = &occluded; 1129 m_occlusion = &occluded;
1129 1130
1130 // The tile size is 100x100. 1131 // The tile size is 100x100.
1131 1132
1132 layer_tree_host_->SetViewportSize(gfx::Size(600, 600), gfx::Size(600, 600)); 1133 layer_tree_host_->SetViewportSize(gfx::Size(600, 600), gfx::Size(600, 600));
1133 layer->SetBounds(gfx::Size(600, 600)); 1134 layer->SetBounds(gfx::Size(600, 600));
1134 calcDrawProps(layer); 1135 calcDrawProps(layer);
1135 1136
1136 occluded.setOcclusion(gfx::Rect(200, 200, 300, 100)); 1137 occluded.setOcclusion(gfx::Rect(200, 200, 300, 100));
1137 layer->draw_properties().drawable_content_rect = gfx::Rect(0, 0, 600, 600); 1138 layer->draw_properties().drawable_content_rect = gfx::Rect(0, 0, 600, 600);
1138 layer->draw_properties().visible_content_rect = gfx::Rect(0, 0, 600, 600); 1139 layer->draw_properties().visible_content_rect = gfx::Rect(0, 0, 600, 600);
1139 layer->InvalidateContentRect(gfx::Rect(0, 0, 600, 600)); 1140 layer->InvalidateContentRect(gfx::Rect(0, 0, 600, 600));
1140 layer->SetTexturePriorities(m_priorityCalculator); 1141 layer->SetTexturePriorities(m_priorityCalculator);
1141 resource_manager_->PrioritizeTextures(); 1142 resource_manager_->PrioritizeTextures();
1142 layer->Update(m_queue.get(), &occluded, NULL); 1143 layer->Update(m_queue.get(), &occluded);
1143 EXPECT_EQ(36-3, layer->fake_layer_updater()->update_count()); 1144 EXPECT_EQ(36-3, layer->fake_layer_updater()->update_count());
1144 { 1145 {
1145 updateTextures(); 1146 updateTextures();
1146 } 1147 }
1147 1148
1148 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_opaque(), 0, 1); 1149 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_opaque(), 0, 1);
1149 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_translucent(), 3300 00, 1); 1150 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_translucent(), 3300 00, 1);
1150 EXPECT_EQ(3, occluded.overdraw_metrics()->tiles_culled_for_upload()); 1151 EXPECT_EQ(3, occluded.overdraw_metrics()->tiles_culled_for_upload());
1151 1152
1152 layer->fake_layer_updater()->ClearUpdateCount(); 1153 layer->fake_layer_updater()->ClearUpdateCount();
1153 layer->SetTexturePriorities(m_priorityCalculator); 1154 layer->SetTexturePriorities(m_priorityCalculator);
1154 resource_manager_->PrioritizeTextures(); 1155 resource_manager_->PrioritizeTextures();
1155 1156
1156 // Repaint without marking it dirty. The 3 culled tiles will be pre-painted now. 1157 // Repaint without marking it dirty. The 3 culled tiles will be pre-painted now.
1157 layer->Update(m_queue.get(), &occluded, NULL); 1158 layer->Update(m_queue.get(), &occluded);
1158 EXPECT_EQ(3, layer->fake_layer_updater()->update_count()); 1159 EXPECT_EQ(3, layer->fake_layer_updater()->update_count());
1159 1160
1160 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_opaque(), 0, 1); 1161 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_opaque(), 0, 1);
1161 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_translucent(), 3300 00, 1); 1162 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_translucent(), 3300 00, 1);
1162 EXPECT_EQ(6, occluded.overdraw_metrics()->tiles_culled_for_upload()); 1163 EXPECT_EQ(6, occluded.overdraw_metrics()->tiles_culled_for_upload());
1163 } 1164 }
1164 1165
1165 TEST_F(TiledLayerTest, tilesPaintedWithOcclusionAndTransforms) 1166 TEST_F(TiledLayerTest, tilesPaintedWithOcclusionAndTransforms)
1166 { 1167 {
1167 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( resource_manager_.get())); 1168 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( resource_manager_.get()));
(...skipping 11 matching lines...) Expand all
1179 screenTransform.Scale(0.5, 0.5); 1180 screenTransform.Scale(0.5, 0.5);
1180 layer->draw_properties().screen_space_transform = screenTransform; 1181 layer->draw_properties().screen_space_transform = screenTransform;
1181 layer->draw_properties().target_space_transform = screenTransform; 1182 layer->draw_properties().target_space_transform = screenTransform;
1182 1183
1183 occluded.setOcclusion(gfx::Rect(100, 100, 150, 50)); 1184 occluded.setOcclusion(gfx::Rect(100, 100, 150, 50));
1184 layer->draw_properties().drawable_content_rect = gfx::Rect(gfx::Point(), lay er->content_bounds()); 1185 layer->draw_properties().drawable_content_rect = gfx::Rect(gfx::Point(), lay er->content_bounds());
1185 layer->draw_properties().visible_content_rect = gfx::Rect(gfx::Point(), laye r->content_bounds()); 1186 layer->draw_properties().visible_content_rect = gfx::Rect(gfx::Point(), laye r->content_bounds());
1186 layer->InvalidateContentRect(gfx::Rect(0, 0, 600, 600)); 1187 layer->InvalidateContentRect(gfx::Rect(0, 0, 600, 600));
1187 layer->SetTexturePriorities(m_priorityCalculator); 1188 layer->SetTexturePriorities(m_priorityCalculator);
1188 resource_manager_->PrioritizeTextures(); 1189 resource_manager_->PrioritizeTextures();
1189 layer->Update(m_queue.get(), &occluded, NULL); 1190 layer->Update(m_queue.get(), &occluded);
1190 EXPECT_EQ(36-3, layer->fake_layer_updater()->update_count()); 1191 EXPECT_EQ(36-3, layer->fake_layer_updater()->update_count());
1191 1192
1192 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_opaque(), 0, 1); 1193 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_opaque(), 0, 1);
1193 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_translucent(), 3300 00, 1); 1194 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_translucent(), 3300 00, 1);
1194 EXPECT_EQ(3, occluded.overdraw_metrics()->tiles_culled_for_upload()); 1195 EXPECT_EQ(3, occluded.overdraw_metrics()->tiles_culled_for_upload());
1195 } 1196 }
1196 1197
1197 TEST_F(TiledLayerTest, tilesPaintedWithOcclusionAndScaling) 1198 TEST_F(TiledLayerTest, tilesPaintedWithOcclusionAndScaling)
1198 { 1199 {
1199 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( resource_manager_.get())); 1200 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( resource_manager_.get()));
(...skipping 15 matching lines...) Expand all
1215 drawTransform.Scale(invScaleFactor, invScaleFactor); 1216 drawTransform.Scale(invScaleFactor, invScaleFactor);
1216 layer->draw_properties().target_space_transform = drawTransform; 1217 layer->draw_properties().target_space_transform = drawTransform;
1217 layer->draw_properties().screen_space_transform = drawTransform; 1218 layer->draw_properties().screen_space_transform = drawTransform;
1218 1219
1219 occluded.setOcclusion(gfx::Rect(200, 200, 300, 100)); 1220 occluded.setOcclusion(gfx::Rect(200, 200, 300, 100));
1220 layer->draw_properties().drawable_content_rect = gfx::Rect(gfx::Point(), lay er->bounds()); 1221 layer->draw_properties().drawable_content_rect = gfx::Rect(gfx::Point(), lay er->bounds());
1221 layer->draw_properties().visible_content_rect = gfx::Rect(gfx::Point(), laye r->content_bounds()); 1222 layer->draw_properties().visible_content_rect = gfx::Rect(gfx::Point(), laye r->content_bounds());
1222 layer->InvalidateContentRect(gfx::Rect(0, 0, 600, 600)); 1223 layer->InvalidateContentRect(gfx::Rect(0, 0, 600, 600));
1223 layer->SetTexturePriorities(m_priorityCalculator); 1224 layer->SetTexturePriorities(m_priorityCalculator);
1224 resource_manager_->PrioritizeTextures(); 1225 resource_manager_->PrioritizeTextures();
1225 layer->Update(m_queue.get(), &occluded, NULL); 1226 layer->Update(m_queue.get(), &occluded);
1226 // The content is half the size of the layer (so the number of tiles is fewe r). 1227 // The content is half the size of the layer (so the number of tiles is fewe r).
1227 // In this case, the content is 300x300, and since the tile size is 100, the 1228 // In this case, the content is 300x300, and since the tile size is 100, the
1228 // number of tiles 3x3. 1229 // number of tiles 3x3.
1229 EXPECT_EQ(9, layer->fake_layer_updater()->update_count()); 1230 EXPECT_EQ(9, layer->fake_layer_updater()->update_count());
1230 1231
1231 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_opaque(), 0, 1); 1232 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_opaque(), 0, 1);
1232 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_translucent(), 9000 0, 1); 1233 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_translucent(), 9000 0, 1);
1233 EXPECT_EQ(0, occluded.overdraw_metrics()->tiles_culled_for_upload()); 1234 EXPECT_EQ(0, occluded.overdraw_metrics()->tiles_culled_for_upload());
1234 1235
1235 layer->fake_layer_updater()->ClearUpdateCount(); 1236 layer->fake_layer_updater()->ClearUpdateCount();
1236 1237
1237 // This makes sure the painting works when the content space is scaled to 1238 // This makes sure the painting works when the content space is scaled to
1238 // a different layer space. In this case the occluded region catches the 1239 // a different layer space. In this case the occluded region catches the
1239 // blown up tiles. 1240 // blown up tiles.
1240 occluded.setOcclusion(gfx::Rect(200, 200, 300, 200)); 1241 occluded.setOcclusion(gfx::Rect(200, 200, 300, 200));
1241 layer->draw_properties().drawable_content_rect = gfx::Rect(gfx::Point(), lay er->bounds()); 1242 layer->draw_properties().drawable_content_rect = gfx::Rect(gfx::Point(), lay er->bounds());
1242 layer->draw_properties().visible_content_rect = gfx::Rect(gfx::Point(), laye r->content_bounds()); 1243 layer->draw_properties().visible_content_rect = gfx::Rect(gfx::Point(), laye r->content_bounds());
1243 layer->InvalidateContentRect(gfx::Rect(0, 0, 600, 600)); 1244 layer->InvalidateContentRect(gfx::Rect(0, 0, 600, 600));
1244 layer->SetTexturePriorities(m_priorityCalculator); 1245 layer->SetTexturePriorities(m_priorityCalculator);
1245 resource_manager_->PrioritizeTextures(); 1246 resource_manager_->PrioritizeTextures();
1246 layer->Update(m_queue.get(), &occluded, NULL); 1247 layer->Update(m_queue.get(), &occluded);
1247 EXPECT_EQ(9-1, layer->fake_layer_updater()->update_count()); 1248 EXPECT_EQ(9-1, layer->fake_layer_updater()->update_count());
1248 1249
1249 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_opaque(), 0, 1); 1250 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_opaque(), 0, 1);
1250 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_translucent(), 9000 0 + 80000, 1); 1251 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_translucent(), 9000 0 + 80000, 1);
1251 EXPECT_EQ(1, occluded.overdraw_metrics()->tiles_culled_for_upload()); 1252 EXPECT_EQ(1, occluded.overdraw_metrics()->tiles_culled_for_upload());
1252 1253
1253 layer->fake_layer_updater()->ClearUpdateCount(); 1254 layer->fake_layer_updater()->ClearUpdateCount();
1254 1255
1255 // This makes sure content scaling and transforms work together. 1256 // This makes sure content scaling and transforms work together.
1256 gfx::Transform screenTransform; 1257 gfx::Transform screenTransform;
1257 screenTransform.Scale(0.5, 0.5); 1258 screenTransform.Scale(0.5, 0.5);
1258 layer->draw_properties().screen_space_transform = screenTransform; 1259 layer->draw_properties().screen_space_transform = screenTransform;
1259 layer->draw_properties().target_space_transform = screenTransform; 1260 layer->draw_properties().target_space_transform = screenTransform;
1260 1261
1261 occluded.setOcclusion(gfx::Rect(100, 100, 150, 100)); 1262 occluded.setOcclusion(gfx::Rect(100, 100, 150, 100));
1262 1263
1263 gfx::Rect layerBoundsRect(gfx::Point(), layer->bounds()); 1264 gfx::Rect layerBoundsRect(gfx::Point(), layer->bounds());
1264 layer->draw_properties().drawable_content_rect = gfx::ToEnclosingRect(gfx::S caleRect(layerBoundsRect, 0.5)); 1265 layer->draw_properties().drawable_content_rect = gfx::ToEnclosingRect(gfx::S caleRect(layerBoundsRect, 0.5));
1265 layer->draw_properties().visible_content_rect = gfx::Rect(gfx::Point(), laye r->content_bounds()); 1266 layer->draw_properties().visible_content_rect = gfx::Rect(gfx::Point(), laye r->content_bounds());
1266 layer->InvalidateContentRect(gfx::Rect(0, 0, 600, 600)); 1267 layer->InvalidateContentRect(gfx::Rect(0, 0, 600, 600));
1267 layer->SetTexturePriorities(m_priorityCalculator); 1268 layer->SetTexturePriorities(m_priorityCalculator);
1268 resource_manager_->PrioritizeTextures(); 1269 resource_manager_->PrioritizeTextures();
1269 layer->Update(m_queue.get(), &occluded, NULL); 1270 layer->Update(m_queue.get(), &occluded);
1270 EXPECT_EQ(9-1, layer->fake_layer_updater()->update_count()); 1271 EXPECT_EQ(9-1, layer->fake_layer_updater()->update_count());
1271 1272
1272 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_opaque(), 0, 1); 1273 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_opaque(), 0, 1);
1273 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_translucent(), 9000 0 + 80000 + 80000, 1); 1274 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_translucent(), 9000 0 + 80000 + 80000, 1);
1274 EXPECT_EQ(1 + 1, occluded.overdraw_metrics()->tiles_culled_for_upload()); 1275 EXPECT_EQ(1 + 1, occluded.overdraw_metrics()->tiles_culled_for_upload());
1275 } 1276 }
1276 1277
1277 TEST_F(TiledLayerTest, visibleContentOpaqueRegion) 1278 TEST_F(TiledLayerTest, visibleContentOpaqueRegion)
1278 { 1279 {
1279 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( resource_manager_.get())); 1280 scoped_refptr<FakeTiledLayer> layer = make_scoped_refptr(new FakeTiledLayer( resource_manager_.get()));
(...skipping 12 matching lines...) Expand all
1292 layer->SetBounds(contentBounds.size()); 1293 layer->SetBounds(contentBounds.size());
1293 calcDrawProps(layer); 1294 calcDrawProps(layer);
1294 layer->draw_properties().drawable_content_rect = visibleBounds; 1295 layer->draw_properties().drawable_content_rect = visibleBounds;
1295 layer->draw_properties().visible_content_rect = visibleBounds; 1296 layer->draw_properties().visible_content_rect = visibleBounds;
1296 1297
1297 // If the layer doesn't paint opaque content, then the visibleContentOpaqueR egion should be empty. 1298 // If the layer doesn't paint opaque content, then the visibleContentOpaqueR egion should be empty.
1298 layer->fake_layer_updater()->SetOpaquePaintRect(gfx::Rect()); 1299 layer->fake_layer_updater()->SetOpaquePaintRect(gfx::Rect());
1299 layer->InvalidateContentRect(contentBounds); 1300 layer->InvalidateContentRect(contentBounds);
1300 layer->SetTexturePriorities(m_priorityCalculator); 1301 layer->SetTexturePriorities(m_priorityCalculator);
1301 resource_manager_->PrioritizeTextures(); 1302 resource_manager_->PrioritizeTextures();
1302 layer->Update(m_queue.get(), &occluded, NULL); 1303 layer->Update(m_queue.get(), &occluded);
1303 opaqueContents = layer->VisibleContentOpaqueRegion(); 1304 opaqueContents = layer->VisibleContentOpaqueRegion();
1304 EXPECT_TRUE(opaqueContents.IsEmpty()); 1305 EXPECT_TRUE(opaqueContents.IsEmpty());
1305 1306
1306 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_painted(), 20000, 1); 1307 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_painted(), 20000, 1);
1307 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_opaque(), 0, 1); 1308 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_opaque(), 0, 1);
1308 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_translucent(), 2000 0, 1); 1309 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_translucent(), 2000 0, 1);
1309 EXPECT_EQ(0, occluded.overdraw_metrics()->tiles_culled_for_upload()); 1310 EXPECT_EQ(0, occluded.overdraw_metrics()->tiles_culled_for_upload());
1310 1311
1311 // visibleContentOpaqueRegion should match the visible part of what is paint ed opaque. 1312 // visibleContentOpaqueRegion should match the visible part of what is paint ed opaque.
1312 opaquePaintRect = gfx::Rect(10, 10, 90, 190); 1313 opaquePaintRect = gfx::Rect(10, 10, 90, 190);
1313 layer->fake_layer_updater()->SetOpaquePaintRect(opaquePaintRect); 1314 layer->fake_layer_updater()->SetOpaquePaintRect(opaquePaintRect);
1314 layer->InvalidateContentRect(contentBounds); 1315 layer->InvalidateContentRect(contentBounds);
1315 layer->SetTexturePriorities(m_priorityCalculator); 1316 layer->SetTexturePriorities(m_priorityCalculator);
1316 resource_manager_->PrioritizeTextures(); 1317 resource_manager_->PrioritizeTextures();
1317 layer->Update(m_queue.get(), &occluded, NULL); 1318 layer->Update(m_queue.get(), &occluded);
1318 updateTextures(); 1319 updateTextures();
1319 opaqueContents = layer->VisibleContentOpaqueRegion(); 1320 opaqueContents = layer->VisibleContentOpaqueRegion();
1320 EXPECT_EQ(gfx::IntersectRects(opaquePaintRect, visibleBounds).ToString(), op aqueContents.ToString()); 1321 EXPECT_EQ(gfx::IntersectRects(opaquePaintRect, visibleBounds).ToString(), op aqueContents.ToString());
1321 1322
1322 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_painted(), 20000 * 2, 1); 1323 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_painted(), 20000 * 2, 1);
1323 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_opaque(), 17100, 1) ; 1324 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_opaque(), 17100, 1) ;
1324 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_translucent(), 2000 0 + 20000 - 17100, 1); 1325 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_translucent(), 2000 0 + 20000 - 17100, 1);
1325 EXPECT_EQ(0, occluded.overdraw_metrics()->tiles_culled_for_upload()); 1326 EXPECT_EQ(0, occluded.overdraw_metrics()->tiles_culled_for_upload());
1326 1327
1327 // If we paint again without invalidating, the same stuff should be opaque. 1328 // If we paint again without invalidating, the same stuff should be opaque.
1328 layer->fake_layer_updater()->SetOpaquePaintRect(gfx::Rect()); 1329 layer->fake_layer_updater()->SetOpaquePaintRect(gfx::Rect());
1329 layer->SetTexturePriorities(m_priorityCalculator); 1330 layer->SetTexturePriorities(m_priorityCalculator);
1330 resource_manager_->PrioritizeTextures(); 1331 resource_manager_->PrioritizeTextures();
1331 layer->Update(m_queue.get(), &occluded, NULL); 1332 layer->Update(m_queue.get(), &occluded);
1332 updateTextures(); 1333 updateTextures();
1333 opaqueContents = layer->VisibleContentOpaqueRegion(); 1334 opaqueContents = layer->VisibleContentOpaqueRegion();
1334 EXPECT_EQ(gfx::IntersectRects(opaquePaintRect, visibleBounds).ToString(), op aqueContents.ToString()); 1335 EXPECT_EQ(gfx::IntersectRects(opaquePaintRect, visibleBounds).ToString(), op aqueContents.ToString());
1335 1336
1336 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_painted(), 20000 * 2, 1); 1337 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_painted(), 20000 * 2, 1);
1337 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_opaque(), 17100, 1) ; 1338 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_opaque(), 17100, 1) ;
1338 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_translucent(), 2000 0 + 20000 - 17100, 1); 1339 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_translucent(), 2000 0 + 20000 - 17100, 1);
1339 EXPECT_EQ(0, occluded.overdraw_metrics()->tiles_culled_for_upload()); 1340 EXPECT_EQ(0, occluded.overdraw_metrics()->tiles_culled_for_upload());
1340 1341
1341 // If we repaint a non-opaque part of the tile, then it shouldn't lose its o paque-ness. And other tiles should 1342 // If we repaint a non-opaque part of the tile, then it shouldn't lose its o paque-ness. And other tiles should
1342 // not be affected. 1343 // not be affected.
1343 layer->fake_layer_updater()->SetOpaquePaintRect(gfx::Rect()); 1344 layer->fake_layer_updater()->SetOpaquePaintRect(gfx::Rect());
1344 layer->InvalidateContentRect(gfx::Rect(0, 0, 1, 1)); 1345 layer->InvalidateContentRect(gfx::Rect(0, 0, 1, 1));
1345 layer->SetTexturePriorities(m_priorityCalculator); 1346 layer->SetTexturePriorities(m_priorityCalculator);
1346 resource_manager_->PrioritizeTextures(); 1347 resource_manager_->PrioritizeTextures();
1347 layer->Update(m_queue.get(), &occluded, NULL); 1348 layer->Update(m_queue.get(), &occluded);
1348 updateTextures(); 1349 updateTextures();
1349 opaqueContents = layer->VisibleContentOpaqueRegion(); 1350 opaqueContents = layer->VisibleContentOpaqueRegion();
1350 EXPECT_EQ(gfx::IntersectRects(opaquePaintRect, visibleBounds).ToString(), op aqueContents.ToString()); 1351 EXPECT_EQ(gfx::IntersectRects(opaquePaintRect, visibleBounds).ToString(), op aqueContents.ToString());
1351 1352
1352 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_painted(), 20000 * 2 + 1, 1) ; 1353 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_painted(), 20000 * 2 + 1, 1) ;
1353 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_opaque(), 17100, 1) ; 1354 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_opaque(), 17100, 1) ;
1354 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_translucent(), 2000 0 + 20000 - 17100 + 1, 1); 1355 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_translucent(), 2000 0 + 20000 - 17100 + 1, 1);
1355 EXPECT_EQ(0, occluded.overdraw_metrics()->tiles_culled_for_upload()); 1356 EXPECT_EQ(0, occluded.overdraw_metrics()->tiles_culled_for_upload());
1356 1357
1357 // If we repaint an opaque part of the tile, then it should lose its opaque- ness. But other tiles should still 1358 // If we repaint an opaque part of the tile, then it should lose its opaque- ness. But other tiles should still
1358 // not be affected. 1359 // not be affected.
1359 layer->fake_layer_updater()->SetOpaquePaintRect(gfx::Rect()); 1360 layer->fake_layer_updater()->SetOpaquePaintRect(gfx::Rect());
1360 layer->InvalidateContentRect(gfx::Rect(10, 10, 1, 1)); 1361 layer->InvalidateContentRect(gfx::Rect(10, 10, 1, 1));
1361 layer->SetTexturePriorities(m_priorityCalculator); 1362 layer->SetTexturePriorities(m_priorityCalculator);
1362 resource_manager_->PrioritizeTextures(); 1363 resource_manager_->PrioritizeTextures();
1363 layer->Update(m_queue.get(), &occluded, NULL); 1364 layer->Update(m_queue.get(), &occluded);
1364 updateTextures(); 1365 updateTextures();
1365 opaqueContents = layer->VisibleContentOpaqueRegion(); 1366 opaqueContents = layer->VisibleContentOpaqueRegion();
1366 EXPECT_EQ(gfx::IntersectRects(gfx::Rect(10, 100, 90, 100), visibleBounds).To String(), opaqueContents.ToString()); 1367 EXPECT_EQ(gfx::IntersectRects(gfx::Rect(10, 100, 90, 100), visibleBounds).To String(), opaqueContents.ToString());
1367 1368
1368 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_painted(), 20000 * 2 + 1 + 1, 1); 1369 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_painted(), 20000 * 2 + 1 + 1, 1);
1369 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_opaque(), 17100, 1) ; 1370 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_opaque(), 17100, 1) ;
1370 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_translucent(), 2000 0 + 20000 - 17100 + 1 + 1, 1); 1371 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_translucent(), 2000 0 + 20000 - 17100 + 1 + 1, 1);
1371 EXPECT_EQ(0, occluded.overdraw_metrics()->tiles_culled_for_upload()); 1372 EXPECT_EQ(0, occluded.overdraw_metrics()->tiles_culled_for_upload());
1372 } 1373 }
1373 1374
(...skipping 11 matching lines...) Expand all
1385 1386
1386 gfx::Rect contentBounds = gfx::Rect(0, 0, 100, 300); 1387 gfx::Rect contentBounds = gfx::Rect(0, 0, 100, 300);
1387 layer->SetBounds(contentBounds.size()); 1388 layer->SetBounds(contentBounds.size());
1388 calcDrawProps(layer); 1389 calcDrawProps(layer);
1389 1390
1390 // Invalidates and paints the whole layer. 1391 // Invalidates and paints the whole layer.
1391 layer->fake_layer_updater()->SetOpaquePaintRect(gfx::Rect()); 1392 layer->fake_layer_updater()->SetOpaquePaintRect(gfx::Rect());
1392 layer->InvalidateContentRect(contentBounds); 1393 layer->InvalidateContentRect(contentBounds);
1393 layer->SetTexturePriorities(m_priorityCalculator); 1394 layer->SetTexturePriorities(m_priorityCalculator);
1394 resource_manager_->PrioritizeTextures(); 1395 resource_manager_->PrioritizeTextures();
1395 layer->Update(m_queue.get(), &occluded, NULL); 1396 layer->Update(m_queue.get(), &occluded);
1396 updateTextures(); 1397 updateTextures();
1397 opaqueContents = layer->VisibleContentOpaqueRegion(); 1398 opaqueContents = layer->VisibleContentOpaqueRegion();
1398 EXPECT_TRUE(opaqueContents.IsEmpty()); 1399 EXPECT_TRUE(opaqueContents.IsEmpty());
1399 1400
1400 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_painted(), 30000, 1); 1401 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_painted(), 30000, 1);
1401 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_opaque(), 0, 1); 1402 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_opaque(), 0, 1);
1402 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_translucent(), 3000 0, 1); 1403 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_translucent(), 3000 0, 1);
1403 EXPECT_EQ(0, occluded.overdraw_metrics()->tiles_culled_for_upload()); 1404 EXPECT_EQ(0, occluded.overdraw_metrics()->tiles_culled_for_upload());
1404 1405
1405 // Invalidates an area on the top and bottom tile, which will cause us to pa int the tile in the middle, 1406 // Invalidates an area on the top and bottom tile, which will cause us to pa int the tile in the middle,
1406 // even though it is not dirty and will not be uploaded. 1407 // even though it is not dirty and will not be uploaded.
1407 layer->fake_layer_updater()->SetOpaquePaintRect(gfx::Rect()); 1408 layer->fake_layer_updater()->SetOpaquePaintRect(gfx::Rect());
1408 layer->InvalidateContentRect(gfx::Rect(0, 0, 1, 1)); 1409 layer->InvalidateContentRect(gfx::Rect(0, 0, 1, 1));
1409 layer->InvalidateContentRect(gfx::Rect(50, 200, 10, 10)); 1410 layer->InvalidateContentRect(gfx::Rect(50, 200, 10, 10));
1410 layer->SetTexturePriorities(m_priorityCalculator); 1411 layer->SetTexturePriorities(m_priorityCalculator);
1411 resource_manager_->PrioritizeTextures(); 1412 resource_manager_->PrioritizeTextures();
1412 layer->Update(m_queue.get(), &occluded, NULL); 1413 layer->Update(m_queue.get(), &occluded);
1413 updateTextures(); 1414 updateTextures();
1414 opaqueContents = layer->VisibleContentOpaqueRegion(); 1415 opaqueContents = layer->VisibleContentOpaqueRegion();
1415 EXPECT_TRUE(opaqueContents.IsEmpty()); 1416 EXPECT_TRUE(opaqueContents.IsEmpty());
1416 1417
1417 // The middle tile was painted even though not invalidated. 1418 // The middle tile was painted even though not invalidated.
1418 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_painted(), 30000 + 60 * 210, 1); 1419 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_painted(), 30000 + 60 * 210, 1);
1419 // The pixels uploaded will not include the non-invalidated tile in the midd le. 1420 // The pixels uploaded will not include the non-invalidated tile in the midd le.
1420 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_opaque(), 0, 1); 1421 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_opaque(), 0, 1);
1421 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_translucent(), 3000 0 + 1 + 100, 1); 1422 EXPECT_NEAR(occluded.overdraw_metrics()->pixels_uploaded_translucent(), 3000 0 + 1 + 100, 1);
1422 EXPECT_EQ(0, occluded.overdraw_metrics()->tiles_culled_for_upload()); 1423 EXPECT_EQ(0, occluded.overdraw_metrics()->tiles_culled_for_upload());
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
1584 gfx::Rect m_paintedRect; 1585 gfx::Rect m_paintedRect;
1585 }; 1586 };
1586 1587
1587 class UpdateTrackingTiledLayer : public FakeTiledLayer { 1588 class UpdateTrackingTiledLayer : public FakeTiledLayer {
1588 public: 1589 public:
1589 explicit UpdateTrackingTiledLayer(PrioritizedResourceManager* manager) 1590 explicit UpdateTrackingTiledLayer(PrioritizedResourceManager* manager)
1590 : FakeTiledLayer(manager) 1591 : FakeTiledLayer(manager)
1591 { 1592 {
1592 scoped_ptr<TrackingLayerPainter> trackingLayerPainter(TrackingLayerPaint er::Create()); 1593 scoped_ptr<TrackingLayerPainter> trackingLayerPainter(TrackingLayerPaint er::Create());
1593 m_trackingLayerPainter = trackingLayerPainter.get(); 1594 m_trackingLayerPainter = trackingLayerPainter.get();
1594 m_layerUpdater = BitmapContentLayerUpdater::Create(trackingLayerPainter. PassAs<LayerPainter>()); 1595 m_layerUpdater = BitmapContentLayerUpdater::Create(trackingLayerPainter. PassAs<LayerPainter>(), &m_statsInstrumentation);
1595 } 1596 }
1596 1597
1597 TrackingLayerPainter* trackingLayerPainter() const { return m_trackingLayerP ainter; } 1598 TrackingLayerPainter* trackingLayerPainter() const { return m_trackingLayerP ainter; }
1598 1599
1599 protected: 1600 protected:
1600 virtual ~UpdateTrackingTiledLayer() { } 1601 virtual ~UpdateTrackingTiledLayer() { }
1601 1602
1602 virtual LayerUpdater* Updater() const OVERRIDE { return m_layerUpdater.get() ; } 1603 virtual LayerUpdater* Updater() const OVERRIDE { return m_layerUpdater.get() ; }
1603 1604
1604 private: 1605 private:
1605 TrackingLayerPainter* m_trackingLayerPainter; 1606 TrackingLayerPainter* m_trackingLayerPainter;
1606 scoped_refptr<BitmapContentLayerUpdater> m_layerUpdater; 1607 scoped_refptr<BitmapContentLayerUpdater> m_layerUpdater;
1608 FakeRenderingStatsInstrumentation m_statsInstrumentation;
1607 }; 1609 };
1608 1610
1609 TEST_F(TiledLayerTest, nonIntegerContentsScaleIsNotDistortedDuringPaint) 1611 TEST_F(TiledLayerTest, nonIntegerContentsScaleIsNotDistortedDuringPaint)
1610 { 1612 {
1611 scoped_refptr<UpdateTrackingTiledLayer> layer = make_scoped_refptr(new Updat eTrackingTiledLayer(resource_manager_.get())); 1613 scoped_refptr<UpdateTrackingTiledLayer> layer = make_scoped_refptr(new Updat eTrackingTiledLayer(resource_manager_.get()));
1612 1614
1613 gfx::Rect layerRect(0, 0, 30, 31); 1615 gfx::Rect layerRect(0, 0, 30, 31);
1614 layer->SetPosition(layerRect.origin()); 1616 layer->SetPosition(layerRect.origin());
1615 layer->SetBounds(layerRect.size()); 1617 layer->SetBounds(layerRect.size());
1616 layer->UpdateContentsScale(1.5); 1618 layer->UpdateContentsScale(1.5);
1617 1619
1618 gfx::Rect contentRect(0, 0, 45, 47); 1620 gfx::Rect contentRect(0, 0, 45, 47);
1619 EXPECT_EQ(contentRect.size(), layer->content_bounds()); 1621 EXPECT_EQ(contentRect.size(), layer->content_bounds());
1620 layer->draw_properties().visible_content_rect = contentRect; 1622 layer->draw_properties().visible_content_rect = contentRect;
1621 layer->draw_properties().drawable_content_rect = contentRect; 1623 layer->draw_properties().drawable_content_rect = contentRect;
1622 1624
1623 layer->SetTexturePriorities(m_priorityCalculator); 1625 layer->SetTexturePriorities(m_priorityCalculator);
1624 resource_manager_->PrioritizeTextures(); 1626 resource_manager_->PrioritizeTextures();
1625 1627
1626 // Update the whole tile. 1628 // Update the whole tile.
1627 layer->Update(m_queue.get(), 0, NULL); 1629 layer->Update(m_queue.get(), 0);
danakj 2013/03/23 01:56:32 can you make these 0's into NULL's while you're he
egraether 2013/03/25 21:07:44 Done.
1628 layer->trackingLayerPainter()->resetPaintedRect(); 1630 layer->trackingLayerPainter()->resetPaintedRect();
1629 1631
1630 EXPECT_RECT_EQ(gfx::Rect(), layer->trackingLayerPainter()->paintedRect()); 1632 EXPECT_RECT_EQ(gfx::Rect(), layer->trackingLayerPainter()->paintedRect());
1631 updateTextures(); 1633 updateTextures();
1632 1634
1633 // Invalidate the entire layer in content space. When painting, the rect giv en to webkit should match the layer's bounds. 1635 // Invalidate the entire layer in content space. When painting, the rect giv en to webkit should match the layer's bounds.
1634 layer->InvalidateContentRect(contentRect); 1636 layer->InvalidateContentRect(contentRect);
1635 layer->Update(m_queue.get(), 0, NULL); 1637 layer->Update(m_queue.get(), 0);
1636 1638
1637 EXPECT_RECT_EQ(layerRect, layer->trackingLayerPainter()->paintedRect()); 1639 EXPECT_RECT_EQ(layerRect, layer->trackingLayerPainter()->paintedRect());
1638 } 1640 }
1639 1641
1640 TEST_F(TiledLayerTest, nonIntegerContentsScaleIsNotDistortedDuringInvalidation) 1642 TEST_F(TiledLayerTest, nonIntegerContentsScaleIsNotDistortedDuringInvalidation)
1641 { 1643 {
1642 scoped_refptr<UpdateTrackingTiledLayer> layer = make_scoped_refptr(new Updat eTrackingTiledLayer(resource_manager_.get())); 1644 scoped_refptr<UpdateTrackingTiledLayer> layer = make_scoped_refptr(new Updat eTrackingTiledLayer(resource_manager_.get()));
1643 1645
1644 gfx::Rect layerRect(0, 0, 30, 31); 1646 gfx::Rect layerRect(0, 0, 30, 31);
1645 layer->SetPosition(layerRect.origin()); 1647 layer->SetPosition(layerRect.origin());
1646 layer->SetBounds(layerRect.size()); 1648 layer->SetBounds(layerRect.size());
1647 layer->UpdateContentsScale(1.3f); 1649 layer->UpdateContentsScale(1.3f);
1648 1650
1649 gfx::Rect contentRect(gfx::Point(), layer->content_bounds()); 1651 gfx::Rect contentRect(gfx::Point(), layer->content_bounds());
1650 layer->draw_properties().visible_content_rect = contentRect; 1652 layer->draw_properties().visible_content_rect = contentRect;
1651 layer->draw_properties().drawable_content_rect = contentRect; 1653 layer->draw_properties().drawable_content_rect = contentRect;
1652 1654
1653 layer->SetTexturePriorities(m_priorityCalculator); 1655 layer->SetTexturePriorities(m_priorityCalculator);
1654 resource_manager_->PrioritizeTextures(); 1656 resource_manager_->PrioritizeTextures();
1655 1657
1656 // Update the whole tile. 1658 // Update the whole tile.
1657 layer->Update(m_queue.get(), 0, NULL); 1659 layer->Update(m_queue.get(), 0);
1658 layer->trackingLayerPainter()->resetPaintedRect(); 1660 layer->trackingLayerPainter()->resetPaintedRect();
1659 1661
1660 EXPECT_RECT_EQ(gfx::Rect(), layer->trackingLayerPainter()->paintedRect()); 1662 EXPECT_RECT_EQ(gfx::Rect(), layer->trackingLayerPainter()->paintedRect());
1661 updateTextures(); 1663 updateTextures();
1662 1664
1663 // Invalidate the entire layer in layer space. When painting, the rect given to webkit should match the layer's bounds. 1665 // Invalidate the entire layer in layer space. When painting, the rect given to webkit should match the layer's bounds.
1664 layer->SetNeedsDisplayRect(layerRect); 1666 layer->SetNeedsDisplayRect(layerRect);
1665 layer->Update(m_queue.get(), 0, NULL); 1667 layer->Update(m_queue.get(), 0);
1666 1668
1667 EXPECT_RECT_EQ(layerRect, layer->trackingLayerPainter()->paintedRect()); 1669 EXPECT_RECT_EQ(layerRect, layer->trackingLayerPainter()->paintedRect());
1668 } 1670 }
1669 1671
1670 } // namespace 1672 } // namespace
1671 } // namespace cc 1673 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698