OLD | NEW |
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 <limits> | 7 #include <limits> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "cc/debug/overdraw_metrics.h" | 10 #include "cc/debug/overdraw_metrics.h" |
(...skipping 559 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
570 // Create a LayerTreeHost that has the right viewportsize, | 570 // Create a LayerTreeHost that has the right viewportsize, |
571 // so the layer is considered small enough. | 571 // so the layer is considered small enough. |
572 bool run_out_of_memory[2] = { false, true }; | 572 bool run_out_of_memory[2] = { false, true }; |
573 for (int i = 0; i < 2; i++) { | 573 for (int i = 0; i < 2; i++) { |
574 // Create a layer with 5x5 tiles, with 4x4 size viewport. | 574 // Create a layer with 5x5 tiles, with 4x4 size viewport. |
575 int viewport_width = 4 * FakeTiledLayer::tile_size().width(); | 575 int viewport_width = 4 * FakeTiledLayer::tile_size().width(); |
576 int viewport_height = 4 * FakeTiledLayer::tile_size().width(); | 576 int viewport_height = 4 * FakeTiledLayer::tile_size().width(); |
577 int layer_width = 5 * FakeTiledLayer::tile_size().width(); | 577 int layer_width = 5 * FakeTiledLayer::tile_size().width(); |
578 int layer_height = 5 * FakeTiledLayer::tile_size().height(); | 578 int layer_height = 5 * FakeTiledLayer::tile_size().height(); |
579 int memory_for_layer = layer_width * layer_height * 4; | 579 int memory_for_layer = layer_width * layer_height * 4; |
580 layer_tree_host_->SetViewportSize(gfx::Size(layer_width, layer_height), | 580 layer_tree_host_->SetViewportSize( |
581 gfx::Size(layer_width, layer_height)); | 581 gfx::Size(viewport_width, viewport_height), |
| 582 gfx::Size(viewport_width, viewport_height)); |
582 | 583 |
583 // Use 10x5 tiles to run out of memory. | 584 // Use 10x5 tiles to run out of memory. |
584 if (run_out_of_memory[i]) | 585 if (run_out_of_memory[i]) |
585 layer_width *= 2; | 586 layer_width *= 2; |
586 | 587 |
587 resource_manager_->SetMaxMemoryLimitBytes(memory_for_layer); | 588 resource_manager_->SetMaxMemoryLimitBytes(memory_for_layer); |
588 | 589 |
589 scoped_refptr<FakeTiledLayer> layer = | 590 scoped_refptr<FakeTiledLayer> layer = |
590 make_scoped_refptr(new FakeTiledLayer(resource_manager_.get())); | 591 make_scoped_refptr(new FakeTiledLayer(resource_manager_.get())); |
591 scoped_ptr<FakeTiledLayerImpl> layer_impl = | 592 scoped_ptr<FakeTiledLayerImpl> layer_impl = |
(...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
950 | 951 |
951 layer_tree_host_->SetRootLayer(layer); | 952 layer_tree_host_->SetRootLayer(layer); |
952 layer_tree_host_->SetViewportSize(gfx::Size(300, 200), gfx::Size(300, 200)); | 953 layer_tree_host_->SetViewportSize(gfx::Size(300, 200), gfx::Size(300, 200)); |
953 | 954 |
954 // Full update of all 6 tiles. | 955 // Full update of all 6 tiles. |
955 layer_tree_host_->UpdateLayers(queue_.get(), | 956 layer_tree_host_->UpdateLayers(queue_.get(), |
956 std::numeric_limits<size_t>::max()); | 957 std::numeric_limits<size_t>::max()); |
957 { | 958 { |
958 scoped_ptr<FakeTiledLayerImpl> layer_impl = | 959 scoped_ptr<FakeTiledLayerImpl> layer_impl = |
959 make_scoped_ptr(new FakeTiledLayerImpl(host_impl_->active_tree(), 1)); | 960 make_scoped_ptr(new FakeTiledLayerImpl(host_impl_->active_tree(), 1)); |
960 EXPECT_EQ(6, queue_->FullUploadSize()); | 961 EXPECT_EQ(6u, queue_->FullUploadSize()); |
961 EXPECT_EQ(0, queue_->PartialUploadSize()); | 962 EXPECT_EQ(0u, queue_->PartialUploadSize()); |
962 UpdateTextures(); | 963 UpdateTextures(); |
963 EXPECT_EQ(6, layer->fake_layer_updater()->update_count()); | 964 EXPECT_EQ(6, layer->fake_layer_updater()->update_count()); |
964 EXPECT_FALSE(queue_->HasMoreUpdates()); | 965 EXPECT_FALSE(queue_->HasMoreUpdates()); |
965 layer->fake_layer_updater()->ClearUpdateCount(); | 966 layer->fake_layer_updater()->ClearUpdateCount(); |
966 LayerPushPropertiesTo(layer.get(), layer_impl.get()); | 967 LayerPushPropertiesTo(layer.get(), layer_impl.get()); |
967 } | 968 } |
968 layer_tree_host_->CommitComplete(); | 969 layer_tree_host_->CommitComplete(); |
969 | 970 |
970 // Full update of 3 tiles and partial update of 3 tiles. | 971 // Full update of 3 tiles and partial update of 3 tiles. |
971 layer->InvalidateContentRect(gfx::Rect(0, 0, 300, 150)); | 972 layer->InvalidateContentRect(gfx::Rect(0, 0, 300, 150)); |
972 layer_tree_host_->UpdateLayers(queue_.get(), | 973 layer_tree_host_->UpdateLayers(queue_.get(), |
973 std::numeric_limits<size_t>::max()); | 974 std::numeric_limits<size_t>::max()); |
974 { | 975 { |
975 scoped_ptr<FakeTiledLayerImpl> layer_impl = | 976 scoped_ptr<FakeTiledLayerImpl> layer_impl = |
976 make_scoped_ptr(new FakeTiledLayerImpl(host_impl_->active_tree(), 1)); | 977 make_scoped_ptr(new FakeTiledLayerImpl(host_impl_->active_tree(), 1)); |
977 EXPECT_EQ(3, queue_->FullUploadSize()); | 978 EXPECT_EQ(3u, queue_->FullUploadSize()); |
978 EXPECT_EQ(3, queue_->PartialUploadSize()); | 979 EXPECT_EQ(3u, queue_->PartialUploadSize()); |
979 UpdateTextures(); | 980 UpdateTextures(); |
980 EXPECT_EQ(6, layer->fake_layer_updater()->update_count()); | 981 EXPECT_EQ(6, layer->fake_layer_updater()->update_count()); |
981 EXPECT_FALSE(queue_->HasMoreUpdates()); | 982 EXPECT_FALSE(queue_->HasMoreUpdates()); |
982 layer->fake_layer_updater()->ClearUpdateCount(); | 983 layer->fake_layer_updater()->ClearUpdateCount(); |
983 LayerPushPropertiesTo(layer.get(), layer_impl.get()); | 984 LayerPushPropertiesTo(layer.get(), layer_impl.get()); |
984 } | 985 } |
985 layer_tree_host_->CommitComplete(); | 986 layer_tree_host_->CommitComplete(); |
986 | 987 |
987 // Partial update of 6 tiles. | 988 // Partial update of 6 tiles. |
988 layer->InvalidateContentRect(gfx::Rect(50, 50, 200, 100)); | 989 layer->InvalidateContentRect(gfx::Rect(50, 50, 200, 100)); |
989 { | 990 { |
990 scoped_ptr<FakeTiledLayerImpl> layer_impl = | 991 scoped_ptr<FakeTiledLayerImpl> layer_impl = |
991 make_scoped_ptr(new FakeTiledLayerImpl(host_impl_->active_tree(), 1)); | 992 make_scoped_ptr(new FakeTiledLayerImpl(host_impl_->active_tree(), 1)); |
992 layer_tree_host_->UpdateLayers(queue_.get(), | 993 layer_tree_host_->UpdateLayers(queue_.get(), |
993 std::numeric_limits<size_t>::max()); | 994 std::numeric_limits<size_t>::max()); |
994 EXPECT_EQ(2, queue_->FullUploadSize()); | 995 EXPECT_EQ(2u, queue_->FullUploadSize()); |
995 EXPECT_EQ(4, queue_->PartialUploadSize()); | 996 EXPECT_EQ(4u, queue_->PartialUploadSize()); |
996 UpdateTextures(); | 997 UpdateTextures(); |
997 EXPECT_EQ(6, layer->fake_layer_updater()->update_count()); | 998 EXPECT_EQ(6, layer->fake_layer_updater()->update_count()); |
998 EXPECT_FALSE(queue_->HasMoreUpdates()); | 999 EXPECT_FALSE(queue_->HasMoreUpdates()); |
999 layer->fake_layer_updater()->ClearUpdateCount(); | 1000 layer->fake_layer_updater()->ClearUpdateCount(); |
1000 LayerPushPropertiesTo(layer.get(), layer_impl.get()); | 1001 LayerPushPropertiesTo(layer.get(), layer_impl.get()); |
1001 } | 1002 } |
1002 layer_tree_host_->CommitComplete(); | 1003 layer_tree_host_->CommitComplete(); |
1003 | 1004 |
1004 // Checkerboard all tiles. | 1005 // Checkerboard all tiles. |
1005 layer->InvalidateContentRect(gfx::Rect(0, 0, 300, 200)); | 1006 layer->InvalidateContentRect(gfx::Rect(0, 0, 300, 200)); |
1006 { | 1007 { |
1007 scoped_ptr<FakeTiledLayerImpl> layer_impl = | 1008 scoped_ptr<FakeTiledLayerImpl> layer_impl = |
1008 make_scoped_ptr(new FakeTiledLayerImpl(host_impl_->active_tree(), 1)); | 1009 make_scoped_ptr(new FakeTiledLayerImpl(host_impl_->active_tree(), 1)); |
1009 LayerPushPropertiesTo(layer.get(), layer_impl.get()); | 1010 LayerPushPropertiesTo(layer.get(), layer_impl.get()); |
1010 } | 1011 } |
1011 layer_tree_host_->CommitComplete(); | 1012 layer_tree_host_->CommitComplete(); |
1012 | 1013 |
1013 // Partial update of 6 checkerboard tiles. | 1014 // Partial update of 6 checkerboard tiles. |
1014 layer->InvalidateContentRect(gfx::Rect(50, 50, 200, 100)); | 1015 layer->InvalidateContentRect(gfx::Rect(50, 50, 200, 100)); |
1015 { | 1016 { |
1016 scoped_ptr<FakeTiledLayerImpl> layer_impl = | 1017 scoped_ptr<FakeTiledLayerImpl> layer_impl = |
1017 make_scoped_ptr(new FakeTiledLayerImpl(host_impl_->active_tree(), 1)); | 1018 make_scoped_ptr(new FakeTiledLayerImpl(host_impl_->active_tree(), 1)); |
1018 layer_tree_host_->UpdateLayers(queue_.get(), | 1019 layer_tree_host_->UpdateLayers(queue_.get(), |
1019 std::numeric_limits<size_t>::max()); | 1020 std::numeric_limits<size_t>::max()); |
1020 EXPECT_EQ(6, queue_->FullUploadSize()); | 1021 EXPECT_EQ(6u, queue_->FullUploadSize()); |
1021 EXPECT_EQ(0, queue_->PartialUploadSize()); | 1022 EXPECT_EQ(0u, queue_->PartialUploadSize()); |
1022 UpdateTextures(); | 1023 UpdateTextures(); |
1023 EXPECT_EQ(6, layer->fake_layer_updater()->update_count()); | 1024 EXPECT_EQ(6, layer->fake_layer_updater()->update_count()); |
1024 EXPECT_FALSE(queue_->HasMoreUpdates()); | 1025 EXPECT_FALSE(queue_->HasMoreUpdates()); |
1025 layer->fake_layer_updater()->ClearUpdateCount(); | 1026 layer->fake_layer_updater()->ClearUpdateCount(); |
1026 LayerPushPropertiesTo(layer.get(), layer_impl.get()); | 1027 LayerPushPropertiesTo(layer.get(), layer_impl.get()); |
1027 } | 1028 } |
1028 layer_tree_host_->CommitComplete(); | 1029 layer_tree_host_->CommitComplete(); |
1029 | 1030 |
1030 // Partial update of 4 tiles. | 1031 // Partial update of 4 tiles. |
1031 layer->InvalidateContentRect(gfx::Rect(50, 50, 100, 100)); | 1032 layer->InvalidateContentRect(gfx::Rect(50, 50, 100, 100)); |
1032 { | 1033 { |
1033 scoped_ptr<FakeTiledLayerImpl> layer_impl = | 1034 scoped_ptr<FakeTiledLayerImpl> layer_impl = |
1034 make_scoped_ptr(new FakeTiledLayerImpl(host_impl_->active_tree(), 1)); | 1035 make_scoped_ptr(new FakeTiledLayerImpl(host_impl_->active_tree(), 1)); |
1035 layer_tree_host_->UpdateLayers(queue_.get(), | 1036 layer_tree_host_->UpdateLayers(queue_.get(), |
1036 std::numeric_limits<size_t>::max()); | 1037 std::numeric_limits<size_t>::max()); |
1037 EXPECT_EQ(0, queue_->FullUploadSize()); | 1038 EXPECT_EQ(0u, queue_->FullUploadSize()); |
1038 EXPECT_EQ(4, queue_->PartialUploadSize()); | 1039 EXPECT_EQ(4u, queue_->PartialUploadSize()); |
1039 UpdateTextures(); | 1040 UpdateTextures(); |
1040 EXPECT_EQ(4, layer->fake_layer_updater()->update_count()); | 1041 EXPECT_EQ(4, layer->fake_layer_updater()->update_count()); |
1041 EXPECT_FALSE(queue_->HasMoreUpdates()); | 1042 EXPECT_FALSE(queue_->HasMoreUpdates()); |
1042 layer->fake_layer_updater()->ClearUpdateCount(); | 1043 layer->fake_layer_updater()->ClearUpdateCount(); |
1043 LayerPushPropertiesTo(layer.get(), layer_impl.get()); | 1044 LayerPushPropertiesTo(layer.get(), layer_impl.get()); |
1044 } | 1045 } |
1045 layer_tree_host_->CommitComplete(); | 1046 layer_tree_host_->CommitComplete(); |
1046 | 1047 |
1047 ResourceManagerClearAllMemory(layer_tree_host_->contents_texture_manager(), | 1048 ResourceManagerClearAllMemory(layer_tree_host_->contents_texture_manager(), |
1048 resource_provider_.get()); | 1049 resource_provider_.get()); |
(...skipping 746 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1795 // Invalidate the entire layer in layer space. When painting, the rect given | 1796 // Invalidate the entire layer in layer space. When painting, the rect given |
1796 // to webkit should match the layer's bounds. | 1797 // to webkit should match the layer's bounds. |
1797 layer->SetNeedsDisplayRect(layer_rect); | 1798 layer->SetNeedsDisplayRect(layer_rect); |
1798 layer->Update(queue_.get(), 0, NULL); | 1799 layer->Update(queue_.get(), 0, NULL); |
1799 | 1800 |
1800 EXPECT_RECT_EQ(layer_rect, layer->tracking_layer_painter()->PaintedRect()); | 1801 EXPECT_RECT_EQ(layer_rect, layer->tracking_layer_painter()->PaintedRect()); |
1801 } | 1802 } |
1802 | 1803 |
1803 } // namespace | 1804 } // namespace |
1804 } // namespace cc | 1805 } // namespace cc |
OLD | NEW |