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

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

Issue 330003003: cc: Pass ideal contents scale to PictureLayerTiling UpdateTilePriorities. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: review comments addressed. Created 6 years, 5 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.cc ('k') | no next file » | 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 <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <set> 9 #include <set>
10 #include <utility> 10 #include <utility>
(...skipping 1965 matching lines...) Expand 10 before | Expand all | Expand 10 after
1976 tilings.begin(); 1976 tilings.begin();
1977 tiling_iterator != tilings.end(); 1977 tiling_iterator != tilings.end();
1978 ++tiling_iterator) { 1978 ++tiling_iterator) {
1979 std::vector<Tile*> tiles = (*tiling_iterator)->AllTilesForTesting(); 1979 std::vector<Tile*> tiles = (*tiling_iterator)->AllTilesForTesting();
1980 std::copy(tiles.begin(), tiles.end(), std::back_inserter(all_tiles)); 1980 std::copy(tiles.begin(), tiles.end(), std::back_inserter(all_tiles));
1981 } 1981 }
1982 1982
1983 std::set<Tile*> all_tiles_set(all_tiles.begin(), all_tiles.end()); 1983 std::set<Tile*> all_tiles_set(all_tiles.begin(), all_tiles.end());
1984 1984
1985 bool mark_required = false; 1985 bool mark_required = false;
1986 for (std::vector<Tile*>::iterator it = all_tiles.begin(); 1986 size_t number_of_marked_tiles = 0u;
1987 it != all_tiles.end(); 1987 size_t number_of_unmarked_tiles = 0u;
1988 ++it) { 1988 for (size_t i = 0; i < tilings.size(); ++i) {
1989 Tile* tile = *it; 1989 PictureLayerTiling* tiling = tilings.at(i);
1990 if (mark_required) 1990 for (PictureLayerTiling::CoverageIterator iter(
1991 tile->MarkRequiredForActivation(); 1991 tiling,
1992 mark_required = !mark_required; 1992 pending_layer_->contents_scale_x(),
1993 pending_layer_->visible_content_rect());
1994 iter;
1995 ++iter) {
1996 if (mark_required) {
1997 number_of_marked_tiles++;
1998 iter->MarkRequiredForActivation();
1999 } else {
2000 number_of_unmarked_tiles++;
2001 }
2002 mark_required = !mark_required;
2003 }
1993 } 2004 }
1994 2005
1995 // Sanity checks. 2006 // Sanity checks.
1996 EXPECT_EQ(91u, all_tiles.size()); 2007 EXPECT_EQ(91u, all_tiles.size());
1997 EXPECT_EQ(91u, all_tiles_set.size()); 2008 EXPECT_EQ(91u, all_tiles_set.size());
2009 EXPECT_GT(number_of_marked_tiles, 1u);
2010 EXPECT_GT(number_of_unmarked_tiles, 1u);
1998 2011
1999 // Empty iterator. 2012 // Empty iterator.
2000 PictureLayerImpl::LayerEvictionTileIterator it; 2013 PictureLayerImpl::LayerEvictionTileIterator it;
2001 EXPECT_FALSE(it); 2014 EXPECT_FALSE(it);
2002 2015
2003 // Tiles don't have resources yet. 2016 // Tiles don't have resources yet.
2004 it = PictureLayerImpl::LayerEvictionTileIterator( 2017 it = PictureLayerImpl::LayerEvictionTileIterator(
2005 pending_layer_, SAME_PRIORITY_FOR_BOTH_TREES); 2018 pending_layer_, SAME_PRIORITY_FOR_BOTH_TREES);
2006 EXPECT_FALSE(it); 2019 EXPECT_FALSE(it);
2007 2020
2008 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(all_tiles); 2021 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(all_tiles);
2009 2022
2010 std::set<Tile*> unique_tiles; 2023 std::set<Tile*> unique_tiles;
2011 float expected_scales[] = {2.0f, 0.3f, 0.7f, low_res_factor, 1.0f}; 2024 float expected_scales[] = {2.0f, 0.3f, 0.7f, low_res_factor, 1.0f};
2012 size_t scale_index = 0; 2025 size_t scale_index = 0;
2013 bool reached_visible = false; 2026 bool reached_visible = false;
2014 bool reached_required = false;
2015 Tile* last_tile = NULL; 2027 Tile* last_tile = NULL;
2016 for (it = PictureLayerImpl::LayerEvictionTileIterator( 2028 for (it = PictureLayerImpl::LayerEvictionTileIterator(
2017 pending_layer_, SAME_PRIORITY_FOR_BOTH_TREES); 2029 pending_layer_, SAME_PRIORITY_FOR_BOTH_TREES);
2018 it; 2030 it;
2019 ++it) { 2031 ++it) {
2020 Tile* tile = *it; 2032 Tile* tile = *it;
2021 if (!last_tile) 2033 if (!last_tile)
2022 last_tile = tile; 2034 last_tile = tile;
2023 2035
2024 EXPECT_TRUE(tile); 2036 EXPECT_TRUE(tile);
2025 2037
2026 TilePriority priority = tile->priority(PENDING_TREE); 2038 TilePriority priority = tile->priority(PENDING_TREE);
2027 2039
2028 if (priority.priority_bin == TilePriority::NOW) { 2040 if (priority.priority_bin == TilePriority::NOW) {
2029 reached_visible = true; 2041 reached_visible = true;
2030 last_tile = tile; 2042 last_tile = tile;
2031 break; 2043 break;
2032 } 2044 }
2033 2045
2034 if (reached_required) { 2046 EXPECT_FALSE(tile->required_for_activation());
2035 EXPECT_TRUE(tile->required_for_activation());
2036 } else if (tile->required_for_activation()) {
2037 reached_required = true;
2038 scale_index = 0;
2039 }
2040 2047
2041 while (std::abs(tile->contents_scale() - expected_scales[scale_index]) > 2048 while (std::abs(tile->contents_scale() - expected_scales[scale_index]) >
2042 std::numeric_limits<float>::epsilon()) { 2049 std::numeric_limits<float>::epsilon()) {
2043 ++scale_index; 2050 ++scale_index;
2044 ASSERT_LT(scale_index, arraysize(expected_scales)); 2051 ASSERT_LT(scale_index, arraysize(expected_scales));
2045 } 2052 }
2046 2053
2047 EXPECT_FLOAT_EQ(tile->contents_scale(), expected_scales[scale_index]); 2054 EXPECT_FLOAT_EQ(tile->contents_scale(), expected_scales[scale_index]);
2048 unique_tiles.insert(tile); 2055 unique_tiles.insert(tile);
2049 2056
2050 // If the tile is the same rough bin as last tile (same activation, bin, and 2057 // If the tile is the same rough bin as last tile (same activation, bin, and
2051 // scale), then distance should be decreasing. 2058 // scale), then distance should be decreasing.
2052 if (tile->required_for_activation() == 2059 if (tile->required_for_activation() ==
2053 last_tile->required_for_activation() && 2060 last_tile->required_for_activation() &&
2054 priority.priority_bin == 2061 priority.priority_bin ==
2055 last_tile->priority(PENDING_TREE).priority_bin && 2062 last_tile->priority(PENDING_TREE).priority_bin &&
2056 std::abs(tile->contents_scale() - last_tile->contents_scale()) < 2063 std::abs(tile->contents_scale() - last_tile->contents_scale()) <
2057 std::numeric_limits<float>::epsilon()) { 2064 std::numeric_limits<float>::epsilon()) {
2058 EXPECT_LE(priority.distance_to_visible, 2065 EXPECT_LE(priority.distance_to_visible,
2059 last_tile->priority(PENDING_TREE).distance_to_visible); 2066 last_tile->priority(PENDING_TREE).distance_to_visible);
2060 } 2067 }
2061 2068
2062 last_tile = tile; 2069 last_tile = tile;
2063 } 2070 }
2064 2071
2065 EXPECT_TRUE(reached_visible); 2072 EXPECT_TRUE(reached_visible);
2066 EXPECT_TRUE(reached_required);
2067 EXPECT_EQ(65u, unique_tiles.size()); 2073 EXPECT_EQ(65u, unique_tiles.size());
2068 2074
2069 scale_index = 0; 2075 scale_index = 0;
2070 reached_required = false; 2076 bool reached_required = false;
2071 for (; it; ++it) { 2077 for (; it; ++it) {
2072 Tile* tile = *it; 2078 Tile* tile = *it;
2073 EXPECT_TRUE(tile); 2079 EXPECT_TRUE(tile);
2074 2080
2075 TilePriority priority = tile->priority(PENDING_TREE); 2081 TilePriority priority = tile->priority(PENDING_TREE);
2076 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); 2082 EXPECT_EQ(TilePriority::NOW, priority.priority_bin);
2077 2083
2078 if (reached_required) { 2084 if (reached_required) {
2079 EXPECT_TRUE(tile->required_for_activation()); 2085 EXPECT_TRUE(tile->required_for_activation());
2080 } else if (tile->required_for_activation()) { 2086 } else if (tile->required_for_activation()) {
(...skipping 1008 matching lines...) Expand 10 before | Expand all | Expand 10 after
3089 NOTREACHED(); 3095 NOTREACHED();
3090 } 3096 }
3091 3097
3092 tiling_count++; 3098 tiling_count++;
3093 } 3099 }
3094 3100
3095 EXPECT_EQ(tiling_count, 5); 3101 EXPECT_EQ(tiling_count, 5);
3096 } 3102 }
3097 } // namespace 3103 } // namespace
3098 } // namespace cc 3104 } // namespace cc
OLDNEW
« no previous file with comments | « cc/layers/picture_layer_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698