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