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