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

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

Issue 2899403003: cc: Give non-drawing layers that are rasterized a lower priority. (Closed)
Patch Set: type Created 3 years, 6 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
« no previous file with comments | « cc/layers/picture_layer_impl_perftest.cc ('k') | cc/tiles/picture_layer_tiling.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/layers/picture_layer_impl.h" 5 #include "cc/layers/picture_layer_impl.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <limits> 10 #include <limits>
(...skipping 1641 matching lines...) Expand 10 before | Expand all | Expand 10 after
1652 pending_layer()->viewport_rect_for_tile_priority_in_content_space()); 1652 pending_layer()->viewport_rect_for_tile_priority_in_content_space());
1653 1653
1654 base::TimeTicks time_ticks; 1654 base::TimeTicks time_ticks;
1655 host_impl()->AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); 1655 host_impl()->AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1));
1656 pending_layer()->UpdateTiles(); 1656 pending_layer()->UpdateTiles();
1657 1657
1658 int num_visible = 0; 1658 int num_visible = 0;
1659 int num_offscreen = 0; 1659 int num_offscreen = 0;
1660 1660
1661 std::unique_ptr<TilingSetRasterQueueAll> queue(new TilingSetRasterQueueAll( 1661 std::unique_ptr<TilingSetRasterQueueAll> queue(new TilingSetRasterQueueAll(
1662 pending_layer()->picture_layer_tiling_set(), false)); 1662 pending_layer()->picture_layer_tiling_set(), false, false));
1663 for (; !queue->IsEmpty(); queue->Pop()) { 1663 for (; !queue->IsEmpty(); queue->Pop()) {
1664 const PrioritizedTile& prioritized_tile = queue->Top(); 1664 const PrioritizedTile& prioritized_tile = queue->Top();
1665 DCHECK(prioritized_tile.tile()); 1665 DCHECK(prioritized_tile.tile());
1666 if (prioritized_tile.priority().distance_to_visible == 0.f) { 1666 if (prioritized_tile.priority().distance_to_visible == 0.f) {
1667 EXPECT_TRUE(prioritized_tile.tile()->required_for_activation()); 1667 EXPECT_TRUE(prioritized_tile.tile()->required_for_activation());
1668 num_visible++; 1668 num_visible++;
1669 } else { 1669 } else {
1670 EXPECT_FALSE(prioritized_tile.tile()->required_for_activation()); 1670 EXPECT_FALSE(prioritized_tile.tile()->required_for_activation());
1671 num_offscreen++; 1671 num_offscreen++;
1672 } 1672 }
(...skipping 1073 matching lines...) Expand 10 before | Expand all | Expand 10 after
2746 SetupPendingTree(pending_raster_source); 2746 SetupPendingTree(pending_raster_source);
2747 EXPECT_EQ(1u, pending_layer()->num_tilings()); 2747 EXPECT_EQ(1u, pending_layer()->num_tilings());
2748 2748
2749 std::set<Tile*> unique_tiles; 2749 std::set<Tile*> unique_tiles;
2750 bool reached_prepaint = false; 2750 bool reached_prepaint = false;
2751 int non_ideal_tile_count = 0u; 2751 int non_ideal_tile_count = 0u;
2752 int low_res_tile_count = 0u; 2752 int low_res_tile_count = 0u;
2753 int high_res_tile_count = 0u; 2753 int high_res_tile_count = 0u;
2754 int high_res_now_tiles = 0u; 2754 int high_res_now_tiles = 0u;
2755 std::unique_ptr<TilingSetRasterQueueAll> queue(new TilingSetRasterQueueAll( 2755 std::unique_ptr<TilingSetRasterQueueAll> queue(new TilingSetRasterQueueAll(
2756 pending_layer()->picture_layer_tiling_set(), false)); 2756 pending_layer()->picture_layer_tiling_set(), false, false));
2757 while (!queue->IsEmpty()) { 2757 while (!queue->IsEmpty()) {
2758 PrioritizedTile prioritized_tile = queue->Top(); 2758 PrioritizedTile prioritized_tile = queue->Top();
2759 TilePriority priority = prioritized_tile.priority(); 2759 TilePriority priority = prioritized_tile.priority();
2760 2760
2761 EXPECT_TRUE(prioritized_tile.tile()); 2761 EXPECT_TRUE(prioritized_tile.tile());
2762 2762
2763 // Non-high res tiles only get visible tiles. Also, prepaint should only 2763 // Non-high res tiles only get visible tiles. Also, prepaint should only
2764 // come at the end of the iteration. 2764 // come at the end of the iteration.
2765 if (priority.resolution != HIGH_RESOLUTION) { 2765 if (priority.resolution != HIGH_RESOLUTION) {
2766 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); 2766 EXPECT_EQ(TilePriority::NOW, priority.priority_bin);
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
2817 // No NOW tiles. 2817 // No NOW tiles.
2818 host_impl()->AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); 2818 host_impl()->AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200));
2819 2819
2820 pending_layer()->draw_properties().visible_layer_rect = 2820 pending_layer()->draw_properties().visible_layer_rect =
2821 gfx::Rect(1100, 1100, 500, 500); 2821 gfx::Rect(1100, 1100, 500, 500);
2822 pending_layer()->UpdateTiles(); 2822 pending_layer()->UpdateTiles();
2823 2823
2824 unique_tiles.clear(); 2824 unique_tiles.clear();
2825 high_res_tile_count = 0u; 2825 high_res_tile_count = 0u;
2826 queue.reset(new TilingSetRasterQueueAll( 2826 queue.reset(new TilingSetRasterQueueAll(
2827 pending_layer()->picture_layer_tiling_set(), false)); 2827 pending_layer()->picture_layer_tiling_set(), false, false));
2828 while (!queue->IsEmpty()) { 2828 while (!queue->IsEmpty()) {
2829 PrioritizedTile prioritized_tile = queue->Top(); 2829 PrioritizedTile prioritized_tile = queue->Top();
2830 TilePriority priority = prioritized_tile.priority(); 2830 TilePriority priority = prioritized_tile.priority();
2831 2831
2832 EXPECT_TRUE(prioritized_tile.tile()); 2832 EXPECT_TRUE(prioritized_tile.tile());
2833 2833
2834 // Non-high res tiles only get visible tiles. 2834 // Non-high res tiles only get visible tiles.
2835 EXPECT_EQ(HIGH_RESOLUTION, priority.resolution); 2835 EXPECT_EQ(HIGH_RESOLUTION, priority.resolution);
2836 EXPECT_NE(TilePriority::NOW, priority.priority_bin); 2836 EXPECT_NE(TilePriority::NOW, priority.priority_bin);
2837 2837
(...skipping 16 matching lines...) Expand all
2854 pending_layer()->HighResTiling()->AllTilesForTesting(); 2854 pending_layer()->HighResTiling()->AllTilesForTesting();
2855 for (std::vector<Tile*>::iterator tile_it = high_res_tiles.begin(); 2855 for (std::vector<Tile*>::iterator tile_it = high_res_tiles.begin();
2856 tile_it != high_res_tiles.end(); 2856 tile_it != high_res_tiles.end();
2857 ++tile_it) { 2857 ++tile_it) {
2858 Tile* tile = *tile_it; 2858 Tile* tile = *tile_it;
2859 TileDrawInfo& draw_info = tile->draw_info(); 2859 TileDrawInfo& draw_info = tile->draw_info();
2860 draw_info.SetSolidColorForTesting(SK_ColorRED); 2860 draw_info.SetSolidColorForTesting(SK_ColorRED);
2861 } 2861 }
2862 2862
2863 queue.reset(new TilingSetRasterQueueAll( 2863 queue.reset(new TilingSetRasterQueueAll(
2864 pending_layer()->picture_layer_tiling_set(), true)); 2864 pending_layer()->picture_layer_tiling_set(), true, false));
2865 EXPECT_TRUE(queue->IsEmpty()); 2865 EXPECT_TRUE(queue->IsEmpty());
2866 } 2866 }
2867 2867
2868 TEST_F(PictureLayerImplTest, TilingSetRasterQueueActiveTree) { 2868 TEST_F(PictureLayerImplTest, TilingSetRasterQueueActiveTree) {
2869 host_impl()->AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); 2869 host_impl()->AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1));
2870 2870
2871 host_impl()->SetViewportSize(gfx::Size(500, 500)); 2871 host_impl()->SetViewportSize(gfx::Size(500, 500));
2872 2872
2873 gfx::Size layer_bounds(1000, 1000); 2873 gfx::Size layer_bounds(1000, 1000);
2874 2874
(...skipping 833 matching lines...) Expand 10 before | Expand all | Expand 10 after
3708 3708
3709 host_impl()->SetViewportSize(viewport_size); 3709 host_impl()->SetViewportSize(viewport_size);
3710 3710
3711 scoped_refptr<FakeRasterSource> pending_raster_source = 3711 scoped_refptr<FakeRasterSource> pending_raster_source =
3712 FakeRasterSource::CreateFilled(layer_bounds); 3712 FakeRasterSource::CreateFilled(layer_bounds);
3713 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size, Region()); 3713 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size, Region());
3714 3714
3715 // No occlusion. 3715 // No occlusion.
3716 int unoccluded_tile_count = 0; 3716 int unoccluded_tile_count = 0;
3717 std::unique_ptr<TilingSetRasterQueueAll> queue(new TilingSetRasterQueueAll( 3717 std::unique_ptr<TilingSetRasterQueueAll> queue(new TilingSetRasterQueueAll(
3718 pending_layer()->picture_layer_tiling_set(), false)); 3718 pending_layer()->picture_layer_tiling_set(), false, false));
3719 while (!queue->IsEmpty()) { 3719 while (!queue->IsEmpty()) {
3720 PrioritizedTile prioritized_tile = queue->Top(); 3720 PrioritizedTile prioritized_tile = queue->Top();
3721 Tile* tile = prioritized_tile.tile(); 3721 Tile* tile = prioritized_tile.tile();
3722 3722
3723 // Occluded tiles should not be iterated over. 3723 // Occluded tiles should not be iterated over.
3724 EXPECT_FALSE(prioritized_tile.is_occluded()); 3724 EXPECT_FALSE(prioritized_tile.is_occluded());
3725 3725
3726 // Some tiles may not be visible (i.e. outside the viewport). The rest are 3726 // Some tiles may not be visible (i.e. outside the viewport). The rest are
3727 // visible and at least partially unoccluded, verified by the above expect. 3727 // visible and at least partially unoccluded, verified by the above expect.
3728 bool tile_is_visible = 3728 bool tile_is_visible =
(...skipping 13 matching lines...) Expand all
3742 layer1->SetContentsOpaque(true); 3742 layer1->SetContentsOpaque(true);
3743 layer1->SetPosition(occluding_layer_position); 3743 layer1->SetPosition(occluding_layer_position);
3744 3744
3745 RebuildPropertyTreesOnPendingTree(); 3745 RebuildPropertyTreesOnPendingTree();
3746 host_impl()->AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); 3746 host_impl()->AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200));
3747 bool update_lcd_text = false; 3747 bool update_lcd_text = false;
3748 host_impl()->pending_tree()->UpdateDrawProperties(update_lcd_text); 3748 host_impl()->pending_tree()->UpdateDrawProperties(update_lcd_text);
3749 3749
3750 unoccluded_tile_count = 0; 3750 unoccluded_tile_count = 0;
3751 queue.reset(new TilingSetRasterQueueAll( 3751 queue.reset(new TilingSetRasterQueueAll(
3752 pending_layer()->picture_layer_tiling_set(), false)); 3752 pending_layer()->picture_layer_tiling_set(), false, false));
3753 while (!queue->IsEmpty()) { 3753 while (!queue->IsEmpty()) {
3754 PrioritizedTile prioritized_tile = queue->Top(); 3754 PrioritizedTile prioritized_tile = queue->Top();
3755 Tile* tile = prioritized_tile.tile(); 3755 Tile* tile = prioritized_tile.tile();
3756 3756
3757 EXPECT_FALSE(prioritized_tile.is_occluded()); 3757 EXPECT_FALSE(prioritized_tile.is_occluded());
3758 3758
3759 bool tile_is_visible = 3759 bool tile_is_visible =
3760 tile->content_rect().Intersects(pending_layer()->visible_layer_rect()); 3760 tile->content_rect().Intersects(pending_layer()->visible_layer_rect());
3761 if (tile_is_visible) 3761 if (tile_is_visible)
3762 unoccluded_tile_count++; 3762 unoccluded_tile_count++;
3763 queue->Pop(); 3763 queue->Pop();
3764 } 3764 }
3765 EXPECT_EQ(20, unoccluded_tile_count); 3765 EXPECT_EQ(20, unoccluded_tile_count);
3766 3766
3767 // Full occlusion. 3767 // Full occlusion.
3768 layer1->SetPosition(gfx::PointF()); 3768 layer1->SetPosition(gfx::PointF());
3769 layer1->NoteLayerPropertyChanged(); 3769 layer1->NoteLayerPropertyChanged();
3770 3770
3771 RebuildPropertyTreesOnPendingTree(); 3771 RebuildPropertyTreesOnPendingTree();
3772 host_impl()->AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); 3772 host_impl()->AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200));
3773 host_impl()->pending_tree()->UpdateDrawProperties(update_lcd_text); 3773 host_impl()->pending_tree()->UpdateDrawProperties(update_lcd_text);
3774 3774
3775 unoccluded_tile_count = 0; 3775 unoccluded_tile_count = 0;
3776 queue.reset(new TilingSetRasterQueueAll( 3776 queue.reset(new TilingSetRasterQueueAll(
3777 pending_layer()->picture_layer_tiling_set(), false)); 3777 pending_layer()->picture_layer_tiling_set(), false, false));
3778 while (!queue->IsEmpty()) { 3778 while (!queue->IsEmpty()) {
3779 PrioritizedTile prioritized_tile = queue->Top(); 3779 PrioritizedTile prioritized_tile = queue->Top();
3780 Tile* tile = prioritized_tile.tile(); 3780 Tile* tile = prioritized_tile.tile();
3781 3781
3782 EXPECT_FALSE(prioritized_tile.is_occluded()); 3782 EXPECT_FALSE(prioritized_tile.is_occluded());
3783 3783
3784 bool tile_is_visible = 3784 bool tile_is_visible =
3785 tile->content_rect().Intersects(pending_layer()->visible_layer_rect()); 3785 tile->content_rect().Intersects(pending_layer()->visible_layer_rect());
3786 if (tile_is_visible) 3786 if (tile_is_visible)
3787 unoccluded_tile_count++; 3787 unoccluded_tile_count++;
(...skipping 1356 matching lines...) Expand 10 before | Expand all | Expand 10 after
5144 EXPECT_EQ(gfx::AxisTransform2d(2.25f, gfx::Vector2dF(0.75f, 0.25f)), 5144 EXPECT_EQ(gfx::AxisTransform2d(2.25f, gfx::Vector2dF(0.75f, 0.25f)),
5145 tiling->raster_transform()); 5145 tiling->raster_transform());
5146 EXPECT_EQ(4u, tiling->AllTilesForTesting().size()); 5146 EXPECT_EQ(4u, tiling->AllTilesForTesting().size());
5147 for (auto* tile : tiling->AllTilesForTesting()) 5147 for (auto* tile : tiling->AllTilesForTesting())
5148 EXPECT_EQ(tile->raster_transform(), tiling->raster_transform()); 5148 EXPECT_EQ(tile->raster_transform(), tiling->raster_transform());
5149 } 5149 }
5150 } 5150 }
5151 5151
5152 } // namespace 5152 } // namespace
5153 } // namespace cc 5153 } // namespace cc
OLDNEW
« no previous file with comments | « cc/layers/picture_layer_impl_perftest.cc ('k') | cc/tiles/picture_layer_tiling.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698