| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/resources/eviction_tile_priority_queue.h" | 5 #include "cc/resources/eviction_tile_priority_queue.h" |
| 6 #include "cc/resources/raster_tile_priority_queue.h" | 6 #include "cc/resources/raster_tile_priority_queue.h" |
| 7 #include "cc/resources/tile.h" | 7 #include "cc/resources/tile.h" |
| 8 #include "cc/resources/tile_priority.h" | 8 #include "cc/resources/tile_priority.h" |
| 9 #include "cc/resources/tiling_set_raster_queue_all.h" | 9 #include "cc/resources/tiling_set_raster_queue_all.h" |
| 10 #include "cc/test/begin_frame_args_test.h" | 10 #include "cc/test/begin_frame_args_test.h" |
| (...skipping 555 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 566 // Ensure we can activate. | 566 // Ensure we can activate. |
| 567 EXPECT_TRUE(pending_layer_->AllTilesRequiredForActivationAreReadyToDraw()); | 567 EXPECT_TRUE(pending_layer_->AllTilesRequiredForActivationAreReadyToDraw()); |
| 568 EXPECT_TRUE(pending_child_raw->AllTilesRequiredForActivationAreReadyToDraw()); | 568 EXPECT_TRUE(pending_child_raw->AllTilesRequiredForActivationAreReadyToDraw()); |
| 569 } | 569 } |
| 570 | 570 |
| 571 TEST_F(TileManagerTilePriorityQueueTest, EvictionTilePriorityQueue) { | 571 TEST_F(TileManagerTilePriorityQueueTest, EvictionTilePriorityQueue) { |
| 572 const gfx::Size layer_bounds(1000, 1000); | 572 const gfx::Size layer_bounds(1000, 1000); |
| 573 host_impl_.SetViewportSize(layer_bounds); | 573 host_impl_.SetViewportSize(layer_bounds); |
| 574 SetupDefaultTrees(layer_bounds); | 574 SetupDefaultTrees(layer_bounds); |
| 575 | 575 |
| 576 EvictionTilePriorityQueue empty_queue; | 576 scoped_ptr<EvictionTilePriorityQueue> empty_queue( |
| 577 host_impl_.BuildEvictionQueue(&empty_queue, SAME_PRIORITY_FOR_BOTH_TREES); | 577 host_impl_.BuildEvictionQueue(SAME_PRIORITY_FOR_BOTH_TREES)); |
| 578 EXPECT_TRUE(empty_queue.IsEmpty()); | 578 EXPECT_TRUE(empty_queue->IsEmpty()); |
| 579 std::set<Tile*> all_tiles; | 579 std::set<Tile*> all_tiles; |
| 580 size_t tile_count = 0; | 580 size_t tile_count = 0; |
| 581 | 581 |
| 582 scoped_ptr<RasterTilePriorityQueue> raster_queue(host_impl_.BuildRasterQueue( | 582 scoped_ptr<RasterTilePriorityQueue> raster_queue(host_impl_.BuildRasterQueue( |
| 583 SAME_PRIORITY_FOR_BOTH_TREES, RasterTilePriorityQueue::Type::ALL)); | 583 SAME_PRIORITY_FOR_BOTH_TREES, RasterTilePriorityQueue::Type::ALL)); |
| 584 while (!raster_queue->IsEmpty()) { | 584 while (!raster_queue->IsEmpty()) { |
| 585 ++tile_count; | 585 ++tile_count; |
| 586 EXPECT_TRUE(raster_queue->Top()); | 586 EXPECT_TRUE(raster_queue->Top()); |
| 587 all_tiles.insert(raster_queue->Top()); | 587 all_tiles.insert(raster_queue->Top()); |
| 588 raster_queue->Pop(); | 588 raster_queue->Pop(); |
| 589 } | 589 } |
| 590 | 590 |
| 591 EXPECT_EQ(tile_count, all_tiles.size()); | 591 EXPECT_EQ(tile_count, all_tiles.size()); |
| 592 EXPECT_EQ(16u, tile_count); | 592 EXPECT_EQ(16u, tile_count); |
| 593 | 593 |
| 594 tile_manager()->InitializeTilesWithResourcesForTesting( | 594 tile_manager()->InitializeTilesWithResourcesForTesting( |
| 595 std::vector<Tile*>(all_tiles.begin(), all_tiles.end())); | 595 std::vector<Tile*>(all_tiles.begin(), all_tiles.end())); |
| 596 | 596 |
| 597 EvictionTilePriorityQueue queue; | 597 scoped_ptr<EvictionTilePriorityQueue> queue( |
| 598 host_impl_.BuildEvictionQueue(&queue, SMOOTHNESS_TAKES_PRIORITY); | 598 host_impl_.BuildEvictionQueue(SMOOTHNESS_TAKES_PRIORITY)); |
| 599 EXPECT_FALSE(queue.IsEmpty()); | 599 EXPECT_FALSE(queue->IsEmpty()); |
| 600 | 600 |
| 601 // Sanity check, all tiles should be visible. | 601 // Sanity check, all tiles should be visible. |
| 602 std::set<Tile*> smoothness_tiles; | 602 std::set<Tile*> smoothness_tiles; |
| 603 while (!queue.IsEmpty()) { | 603 while (!queue->IsEmpty()) { |
| 604 Tile* tile = queue.Top(); | 604 Tile* tile = queue->Top(); |
| 605 EXPECT_TRUE(tile); | 605 EXPECT_TRUE(tile); |
| 606 EXPECT_EQ(TilePriority::NOW, tile->priority(ACTIVE_TREE).priority_bin); | 606 EXPECT_EQ(TilePriority::NOW, tile->priority(ACTIVE_TREE).priority_bin); |
| 607 EXPECT_EQ(TilePriority::NOW, tile->priority(PENDING_TREE).priority_bin); | 607 EXPECT_EQ(TilePriority::NOW, tile->priority(PENDING_TREE).priority_bin); |
| 608 EXPECT_TRUE(tile->HasResource()); | 608 EXPECT_TRUE(tile->HasResource()); |
| 609 smoothness_tiles.insert(tile); | 609 smoothness_tiles.insert(tile); |
| 610 queue.Pop(); | 610 queue->Pop(); |
| 611 } | 611 } |
| 612 EXPECT_EQ(all_tiles, smoothness_tiles); | 612 EXPECT_EQ(all_tiles, smoothness_tiles); |
| 613 | 613 |
| 614 tile_manager()->ReleaseTileResourcesForTesting( | 614 tile_manager()->ReleaseTileResourcesForTesting( |
| 615 std::vector<Tile*>(all_tiles.begin(), all_tiles.end())); | 615 std::vector<Tile*>(all_tiles.begin(), all_tiles.end())); |
| 616 | 616 |
| 617 Region invalidation(gfx::Rect(0, 0, 500, 500)); | 617 Region invalidation(gfx::Rect(0, 0, 500, 500)); |
| 618 | 618 |
| 619 // Invalidate the pending tree. | 619 // Invalidate the pending tree. |
| 620 pending_layer_->set_invalidation(invalidation); | 620 pending_layer_->set_invalidation(invalidation); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 657 for (size_t i = 0; i < active_low_res_tiles.size(); ++i) | 657 for (size_t i = 0; i < active_low_res_tiles.size(); ++i) |
| 658 all_tiles.insert(active_low_res_tiles[i]); | 658 all_tiles.insert(active_low_res_tiles[i]); |
| 659 | 659 |
| 660 tile_manager()->InitializeTilesWithResourcesForTesting( | 660 tile_manager()->InitializeTilesWithResourcesForTesting( |
| 661 std::vector<Tile*>(all_tiles.begin(), all_tiles.end())); | 661 std::vector<Tile*>(all_tiles.begin(), all_tiles.end())); |
| 662 | 662 |
| 663 Tile* last_tile = NULL; | 663 Tile* last_tile = NULL; |
| 664 smoothness_tiles.clear(); | 664 smoothness_tiles.clear(); |
| 665 tile_count = 0; | 665 tile_count = 0; |
| 666 // Here we expect to get increasing ACTIVE_TREE priority_bin. | 666 // Here we expect to get increasing ACTIVE_TREE priority_bin. |
| 667 queue.Reset(); | 667 queue = host_impl_.BuildEvictionQueue(SMOOTHNESS_TAKES_PRIORITY); |
| 668 host_impl_.BuildEvictionQueue(&queue, SMOOTHNESS_TAKES_PRIORITY); | |
| 669 int distance_increasing = 0; | 668 int distance_increasing = 0; |
| 670 int distance_decreasing = 0; | 669 int distance_decreasing = 0; |
| 671 while (!queue.IsEmpty()) { | 670 while (!queue->IsEmpty()) { |
| 672 Tile* tile = queue.Top(); | 671 Tile* tile = queue->Top(); |
| 673 EXPECT_TRUE(tile); | 672 EXPECT_TRUE(tile); |
| 674 EXPECT_TRUE(tile->HasResource()); | 673 EXPECT_TRUE(tile->HasResource()); |
| 675 | 674 |
| 676 if (!last_tile) | 675 if (!last_tile) |
| 677 last_tile = tile; | 676 last_tile = tile; |
| 678 | 677 |
| 679 EXPECT_GE(last_tile->priority(ACTIVE_TREE).priority_bin, | 678 EXPECT_GE(last_tile->priority(ACTIVE_TREE).priority_bin, |
| 680 tile->priority(ACTIVE_TREE).priority_bin); | 679 tile->priority(ACTIVE_TREE).priority_bin); |
| 681 if (last_tile->priority(ACTIVE_TREE).priority_bin == | 680 if (last_tile->priority(ACTIVE_TREE).priority_bin == |
| 682 tile->priority(ACTIVE_TREE).priority_bin) { | 681 tile->priority(ACTIVE_TREE).priority_bin) { |
| 683 EXPECT_LE(last_tile->required_for_activation(), | 682 EXPECT_LE(last_tile->required_for_activation(), |
| 684 tile->required_for_activation()); | 683 tile->required_for_activation()); |
| 685 if (last_tile->required_for_activation() == | 684 if (last_tile->required_for_activation() == |
| 686 tile->required_for_activation()) { | 685 tile->required_for_activation()) { |
| 687 if (last_tile->priority(ACTIVE_TREE).distance_to_visible >= | 686 if (last_tile->priority(ACTIVE_TREE).distance_to_visible >= |
| 688 tile->priority(ACTIVE_TREE).distance_to_visible) | 687 tile->priority(ACTIVE_TREE).distance_to_visible) |
| 689 ++distance_decreasing; | 688 ++distance_decreasing; |
| 690 else | 689 else |
| 691 ++distance_increasing; | 690 ++distance_increasing; |
| 692 } | 691 } |
| 693 } | 692 } |
| 694 | 693 |
| 695 last_tile = tile; | 694 last_tile = tile; |
| 696 ++tile_count; | 695 ++tile_count; |
| 697 smoothness_tiles.insert(tile); | 696 smoothness_tiles.insert(tile); |
| 698 queue.Pop(); | 697 queue->Pop(); |
| 699 } | 698 } |
| 700 | 699 |
| 701 EXPECT_EQ(3, distance_increasing); | 700 EXPECT_EQ(3, distance_increasing); |
| 702 EXPECT_EQ(16, distance_decreasing); | 701 EXPECT_EQ(16, distance_decreasing); |
| 703 EXPECT_EQ(tile_count, smoothness_tiles.size()); | 702 EXPECT_EQ(tile_count, smoothness_tiles.size()); |
| 704 EXPECT_EQ(all_tiles, smoothness_tiles); | 703 EXPECT_EQ(all_tiles, smoothness_tiles); |
| 705 | 704 |
| 706 std::set<Tile*> new_content_tiles; | 705 std::set<Tile*> new_content_tiles; |
| 707 last_tile = NULL; | 706 last_tile = NULL; |
| 708 // Here we expect to get increasing PENDING_TREE priority_bin. | 707 // Here we expect to get increasing PENDING_TREE priority_bin. |
| 709 queue.Reset(); | 708 queue = host_impl_.BuildEvictionQueue(NEW_CONTENT_TAKES_PRIORITY); |
| 710 host_impl_.BuildEvictionQueue(&queue, NEW_CONTENT_TAKES_PRIORITY); | |
| 711 distance_decreasing = 0; | 709 distance_decreasing = 0; |
| 712 distance_increasing = 0; | 710 distance_increasing = 0; |
| 713 while (!queue.IsEmpty()) { | 711 while (!queue->IsEmpty()) { |
| 714 Tile* tile = queue.Top(); | 712 Tile* tile = queue->Top(); |
| 715 EXPECT_TRUE(tile); | 713 EXPECT_TRUE(tile); |
| 716 | 714 |
| 717 if (!last_tile) | 715 if (!last_tile) |
| 718 last_tile = tile; | 716 last_tile = tile; |
| 719 | 717 |
| 720 EXPECT_GE(last_tile->priority(PENDING_TREE).priority_bin, | 718 EXPECT_GE(last_tile->priority(PENDING_TREE).priority_bin, |
| 721 tile->priority(PENDING_TREE).priority_bin); | 719 tile->priority(PENDING_TREE).priority_bin); |
| 722 if (last_tile->priority(PENDING_TREE).priority_bin == | 720 if (last_tile->priority(PENDING_TREE).priority_bin == |
| 723 tile->priority(PENDING_TREE).priority_bin) { | 721 tile->priority(PENDING_TREE).priority_bin) { |
| 724 EXPECT_LE(last_tile->required_for_activation(), | 722 EXPECT_LE(last_tile->required_for_activation(), |
| 725 tile->required_for_activation()); | 723 tile->required_for_activation()); |
| 726 if (last_tile->required_for_activation() == | 724 if (last_tile->required_for_activation() == |
| 727 tile->required_for_activation()) { | 725 tile->required_for_activation()) { |
| 728 if (last_tile->priority(PENDING_TREE).distance_to_visible >= | 726 if (last_tile->priority(PENDING_TREE).distance_to_visible >= |
| 729 tile->priority(PENDING_TREE).distance_to_visible) | 727 tile->priority(PENDING_TREE).distance_to_visible) |
| 730 ++distance_decreasing; | 728 ++distance_decreasing; |
| 731 else | 729 else |
| 732 ++distance_increasing; | 730 ++distance_increasing; |
| 733 } | 731 } |
| 734 } | 732 } |
| 735 | 733 |
| 736 last_tile = tile; | 734 last_tile = tile; |
| 737 new_content_tiles.insert(tile); | 735 new_content_tiles.insert(tile); |
| 738 queue.Pop(); | 736 queue->Pop(); |
| 739 } | 737 } |
| 740 | 738 |
| 741 EXPECT_EQ(3, distance_increasing); | 739 EXPECT_EQ(3, distance_increasing); |
| 742 EXPECT_EQ(16, distance_decreasing); | 740 EXPECT_EQ(16, distance_decreasing); |
| 743 EXPECT_EQ(tile_count, new_content_tiles.size()); | 741 EXPECT_EQ(tile_count, new_content_tiles.size()); |
| 744 EXPECT_EQ(all_tiles, new_content_tiles); | 742 EXPECT_EQ(all_tiles, new_content_tiles); |
| 745 } | 743 } |
| 746 | 744 |
| 747 TEST_F(TileManagerTilePriorityQueueTest, | 745 TEST_F(TileManagerTilePriorityQueueTest, |
| 748 EvictionTilePriorityQueueWithOcclusion) { | 746 EvictionTilePriorityQueueWithOcclusion) { |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 824 all_tiles.insert(pending_child_low_res_tiles.begin(), | 822 all_tiles.insert(pending_child_low_res_tiles.begin(), |
| 825 pending_child_low_res_tiles.end()); | 823 pending_child_low_res_tiles.end()); |
| 826 | 824 |
| 827 tile_manager()->InitializeTilesWithResourcesForTesting( | 825 tile_manager()->InitializeTilesWithResourcesForTesting( |
| 828 std::vector<Tile*>(all_tiles.begin(), all_tiles.end())); | 826 std::vector<Tile*>(all_tiles.begin(), all_tiles.end())); |
| 829 | 827 |
| 830 // Verify occlusion is considered by EvictionTilePriorityQueue. | 828 // Verify occlusion is considered by EvictionTilePriorityQueue. |
| 831 TreePriority tree_priority = NEW_CONTENT_TAKES_PRIORITY; | 829 TreePriority tree_priority = NEW_CONTENT_TAKES_PRIORITY; |
| 832 size_t occluded_count = 0u; | 830 size_t occluded_count = 0u; |
| 833 Tile* last_tile = NULL; | 831 Tile* last_tile = NULL; |
| 834 EvictionTilePriorityQueue queue; | 832 scoped_ptr<EvictionTilePriorityQueue> queue( |
| 835 host_impl_.BuildEvictionQueue(&queue, tree_priority); | 833 host_impl_.BuildEvictionQueue(tree_priority)); |
| 836 while (!queue.IsEmpty()) { | 834 while (!queue->IsEmpty()) { |
| 837 Tile* tile = queue.Top(); | 835 Tile* tile = queue->Top(); |
| 838 if (!last_tile) | 836 if (!last_tile) |
| 839 last_tile = tile; | 837 last_tile = tile; |
| 840 | 838 |
| 841 bool tile_is_occluded = tile->is_occluded_for_tree_priority(tree_priority); | 839 bool tile_is_occluded = tile->is_occluded_for_tree_priority(tree_priority); |
| 842 | 840 |
| 843 // The only way we will encounter an occluded tile after an unoccluded | 841 // The only way we will encounter an occluded tile after an unoccluded |
| 844 // tile is if the priorty bin decreased, the tile is required for | 842 // tile is if the priorty bin decreased, the tile is required for |
| 845 // activation, or the scale changed. | 843 // activation, or the scale changed. |
| 846 if (tile_is_occluded) { | 844 if (tile_is_occluded) { |
| 847 occluded_count++; | 845 occluded_count++; |
| 848 | 846 |
| 849 bool last_tile_is_occluded = | 847 bool last_tile_is_occluded = |
| 850 last_tile->is_occluded_for_tree_priority(tree_priority); | 848 last_tile->is_occluded_for_tree_priority(tree_priority); |
| 851 if (!last_tile_is_occluded) { | 849 if (!last_tile_is_occluded) { |
| 852 TilePriority::PriorityBin tile_priority_bin = | 850 TilePriority::PriorityBin tile_priority_bin = |
| 853 tile->priority_for_tree_priority(tree_priority).priority_bin; | 851 tile->priority_for_tree_priority(tree_priority).priority_bin; |
| 854 TilePriority::PriorityBin last_tile_priority_bin = | 852 TilePriority::PriorityBin last_tile_priority_bin = |
| 855 last_tile->priority_for_tree_priority(tree_priority).priority_bin; | 853 last_tile->priority_for_tree_priority(tree_priority).priority_bin; |
| 856 | 854 |
| 857 EXPECT_TRUE((tile_priority_bin < last_tile_priority_bin) || | 855 EXPECT_TRUE((tile_priority_bin < last_tile_priority_bin) || |
| 858 tile->required_for_activation() || | 856 tile->required_for_activation() || |
| 859 (tile->contents_scale() != last_tile->contents_scale())); | 857 (tile->contents_scale() != last_tile->contents_scale())); |
| 860 } | 858 } |
| 861 } | 859 } |
| 862 last_tile = tile; | 860 last_tile = tile; |
| 863 queue.Pop(); | 861 queue->Pop(); |
| 864 } | 862 } |
| 865 size_t expected_occluded_count = | 863 size_t expected_occluded_count = |
| 866 pending_child_high_res_tiles.size() + pending_child_low_res_tiles.size(); | 864 pending_child_high_res_tiles.size() + pending_child_low_res_tiles.size(); |
| 867 EXPECT_EQ(expected_occluded_count, occluded_count); | 865 EXPECT_EQ(expected_occluded_count, occluded_count); |
| 868 } | 866 } |
| 869 | 867 |
| 870 TEST_F(TileManagerTilePriorityQueueTest, | 868 TEST_F(TileManagerTilePriorityQueueTest, |
| 871 EvictionTilePriorityQueueWithTransparentLayer) { | 869 EvictionTilePriorityQueueWithTransparentLayer) { |
| 872 base::TimeTicks time_ticks; | 870 base::TimeTicks time_ticks; |
| 873 time_ticks += base::TimeDelta::FromMilliseconds(1); | 871 time_ticks += base::TimeDelta::FromMilliseconds(1); |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 950 | 948 |
| 951 EXPECT_TRUE(pending_layer_->HasValidTilePriorities()); | 949 EXPECT_TRUE(pending_layer_->HasValidTilePriorities()); |
| 952 EXPECT_FALSE(pending_child_layer->HasValidTilePriorities()); | 950 EXPECT_FALSE(pending_child_layer->HasValidTilePriorities()); |
| 953 | 951 |
| 954 // Verify that eviction queue returns tiles also from layers without valid | 952 // Verify that eviction queue returns tiles also from layers without valid |
| 955 // tile priorities and that the tile priority bin of those tiles is (at most) | 953 // tile priorities and that the tile priority bin of those tiles is (at most) |
| 956 // EVENTUALLY. | 954 // EVENTUALLY. |
| 957 TreePriority tree_priority = NEW_CONTENT_TAKES_PRIORITY; | 955 TreePriority tree_priority = NEW_CONTENT_TAKES_PRIORITY; |
| 958 std::set<Tile*> new_content_tiles; | 956 std::set<Tile*> new_content_tiles; |
| 959 size_t tile_count = 0; | 957 size_t tile_count = 0; |
| 960 EvictionTilePriorityQueue queue; | 958 scoped_ptr<EvictionTilePriorityQueue> queue( |
| 961 host_impl_.BuildEvictionQueue(&queue, tree_priority); | 959 host_impl_.BuildEvictionQueue(tree_priority)); |
| 962 while (!queue.IsEmpty()) { | 960 while (!queue->IsEmpty()) { |
| 963 Tile* tile = queue.Top(); | 961 Tile* tile = queue->Top(); |
| 964 const TilePriority& pending_priority = tile->priority(PENDING_TREE); | 962 const TilePriority& pending_priority = tile->priority(PENDING_TREE); |
| 965 EXPECT_NE(std::numeric_limits<float>::infinity(), | 963 EXPECT_NE(std::numeric_limits<float>::infinity(), |
| 966 pending_priority.distance_to_visible); | 964 pending_priority.distance_to_visible); |
| 967 if (all_pending_child_tiles.find(tile) != all_pending_child_tiles.end()) | 965 if (all_pending_child_tiles.find(tile) != all_pending_child_tiles.end()) |
| 968 EXPECT_EQ(TilePriority::EVENTUALLY, pending_priority.priority_bin); | 966 EXPECT_EQ(TilePriority::EVENTUALLY, pending_priority.priority_bin); |
| 969 else | 967 else |
| 970 EXPECT_EQ(TilePriority::NOW, pending_priority.priority_bin); | 968 EXPECT_EQ(TilePriority::NOW, pending_priority.priority_bin); |
| 971 new_content_tiles.insert(tile); | 969 new_content_tiles.insert(tile); |
| 972 ++tile_count; | 970 ++tile_count; |
| 973 queue.Pop(); | 971 queue->Pop(); |
| 974 } | 972 } |
| 975 EXPECT_EQ(tile_count, new_content_tiles.size()); | 973 EXPECT_EQ(tile_count, new_content_tiles.size()); |
| 976 EXPECT_EQ(all_tiles, new_content_tiles); | 974 EXPECT_EQ(all_tiles, new_content_tiles); |
| 977 } | 975 } |
| 978 | 976 |
| 979 TEST_F(TileManagerTilePriorityQueueTest, RasterTilePriorityQueueEmptyLayers) { | 977 TEST_F(TileManagerTilePriorityQueueTest, RasterTilePriorityQueueEmptyLayers) { |
| 980 const gfx::Size layer_bounds(1000, 1000); | 978 const gfx::Size layer_bounds(1000, 1000); |
| 981 host_impl_.SetViewportSize(layer_bounds); | 979 host_impl_.SetViewportSize(layer_bounds); |
| 982 SetupDefaultTrees(layer_bounds); | 980 SetupDefaultTrees(layer_bounds); |
| 983 | 981 |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1037 all_tiles.insert(raster_queue->Top()); | 1035 all_tiles.insert(raster_queue->Top()); |
| 1038 ++tile_count; | 1036 ++tile_count; |
| 1039 raster_queue->Pop(); | 1037 raster_queue->Pop(); |
| 1040 } | 1038 } |
| 1041 EXPECT_EQ(tile_count, all_tiles.size()); | 1039 EXPECT_EQ(tile_count, all_tiles.size()); |
| 1042 EXPECT_EQ(16u, tile_count); | 1040 EXPECT_EQ(16u, tile_count); |
| 1043 | 1041 |
| 1044 std::vector<Tile*> tiles(all_tiles.begin(), all_tiles.end()); | 1042 std::vector<Tile*> tiles(all_tiles.begin(), all_tiles.end()); |
| 1045 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(tiles); | 1043 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(tiles); |
| 1046 | 1044 |
| 1047 EvictionTilePriorityQueue queue; | |
| 1048 for (int i = 1; i < 10; ++i) { | 1045 for (int i = 1; i < 10; ++i) { |
| 1049 scoped_ptr<FakePictureLayerImpl> pending_layer = | 1046 scoped_ptr<FakePictureLayerImpl> pending_layer = |
| 1050 FakePictureLayerImpl::Create(host_impl_.pending_tree(), id_ + i); | 1047 FakePictureLayerImpl::Create(host_impl_.pending_tree(), id_ + i); |
| 1051 pending_layer->SetDrawsContent(true); | 1048 pending_layer->SetDrawsContent(true); |
| 1052 pending_layer->set_has_valid_tile_priorities(true); | 1049 pending_layer->set_has_valid_tile_priorities(true); |
| 1053 pending_layer_->AddChild(pending_layer.Pass()); | 1050 pending_layer_->AddChild(pending_layer.Pass()); |
| 1054 } | 1051 } |
| 1055 | 1052 |
| 1056 host_impl_.BuildEvictionQueue(&queue, SAME_PRIORITY_FOR_BOTH_TREES); | 1053 scoped_ptr<EvictionTilePriorityQueue> queue( |
| 1057 EXPECT_FALSE(queue.IsEmpty()); | 1054 host_impl_.BuildEvictionQueue(SAME_PRIORITY_FOR_BOTH_TREES)); |
| 1055 EXPECT_FALSE(queue->IsEmpty()); |
| 1058 | 1056 |
| 1059 tile_count = 0; | 1057 tile_count = 0; |
| 1060 all_tiles.clear(); | 1058 all_tiles.clear(); |
| 1061 while (!queue.IsEmpty()) { | 1059 while (!queue->IsEmpty()) { |
| 1062 EXPECT_TRUE(queue.Top()); | 1060 EXPECT_TRUE(queue->Top()); |
| 1063 all_tiles.insert(queue.Top()); | 1061 all_tiles.insert(queue->Top()); |
| 1064 ++tile_count; | 1062 ++tile_count; |
| 1065 queue.Pop(); | 1063 queue->Pop(); |
| 1066 } | 1064 } |
| 1067 EXPECT_EQ(tile_count, all_tiles.size()); | 1065 EXPECT_EQ(tile_count, all_tiles.size()); |
| 1068 EXPECT_EQ(16u, tile_count); | 1066 EXPECT_EQ(16u, tile_count); |
| 1069 } | 1067 } |
| 1070 | 1068 |
| 1071 TEST_F(TileManagerTilePriorityQueueTest, | 1069 TEST_F(TileManagerTilePriorityQueueTest, |
| 1072 RasterTilePriorityQueueStaticViewport) { | 1070 RasterTilePriorityQueueStaticViewport) { |
| 1073 FakePictureLayerTilingClient client; | 1071 FakePictureLayerTilingClient client; |
| 1074 | 1072 |
| 1075 gfx::Rect viewport(50, 50, 100, 100); | 1073 gfx::Rect viewport(50, 50, 100, 100); |
| (...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1250 EXPECT_GT(eventually_bin_order_correct_count, | 1248 EXPECT_GT(eventually_bin_order_correct_count, |
| 1251 eventually_bin_order_incorrect_count); | 1249 eventually_bin_order_incorrect_count); |
| 1252 | 1250 |
| 1253 EXPECT_TRUE(have_tiles[TilePriority::NOW]); | 1251 EXPECT_TRUE(have_tiles[TilePriority::NOW]); |
| 1254 EXPECT_TRUE(have_tiles[TilePriority::SOON]); | 1252 EXPECT_TRUE(have_tiles[TilePriority::SOON]); |
| 1255 EXPECT_TRUE(have_tiles[TilePriority::EVENTUALLY]); | 1253 EXPECT_TRUE(have_tiles[TilePriority::EVENTUALLY]); |
| 1256 } | 1254 } |
| 1257 | 1255 |
| 1258 } // namespace | 1256 } // namespace |
| 1259 } // namespace cc | 1257 } // namespace cc |
| OLD | NEW |