| 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/debug/lap_timer.h" | 5 #include "cc/debug/lap_timer.h" |
| 6 #include "cc/resources/picture_layer_tiling.h" | 6 #include "cc/resources/picture_layer_tiling.h" |
| 7 #include "cc/resources/resource_provider.h" | 7 #include "cc/resources/resource_provider.h" |
| 8 #include "cc/resources/scoped_resource.h" | 8 #include "cc/resources/scoped_resource.h" |
| 9 #include "cc/test/fake_output_surface.h" | 9 #include "cc/test/fake_output_surface.h" |
| 10 #include "cc/test/fake_output_surface_client.h" | 10 #include "cc/test/fake_output_surface_client.h" |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 67 perf_test::PrintResult( | 67 perf_test::PrintResult( |
| 68 "invalidation", "", test_name, timer_.LapsPerSecond(), "runs/s", true); | 68 "invalidation", "", test_name, timer_.LapsPerSecond(), "runs/s", true); |
| 69 } | 69 } |
| 70 | 70 |
| 71 void RunUpdateTilePrioritiesStationaryTest(const std::string& test_name, | 71 void RunUpdateTilePrioritiesStationaryTest(const std::string& test_name, |
| 72 const gfx::Transform& transform) { | 72 const gfx::Transform& transform) { |
| 73 gfx::Rect viewport_rect(0, 0, 1024, 768); | 73 gfx::Rect viewport_rect(0, 0, 1024, 768); |
| 74 | 74 |
| 75 timer_.Reset(); | 75 timer_.Reset(); |
| 76 do { | 76 do { |
| 77 picture_layer_tiling_->UpdateTilePriorities(PENDING_TREE, | 77 picture_layer_tiling_->UpdateTilePriorities( |
| 78 viewport_rect, | 78 PENDING_TREE, viewport_rect, 1.f, timer_.NumLaps() + 1, Occlusion()); |
| 79 1.f, | |
| 80 timer_.NumLaps() + 1, | |
| 81 NULL, | |
| 82 NULL, | |
| 83 gfx::Transform()); | |
| 84 timer_.NextLap(); | 79 timer_.NextLap(); |
| 85 } while (!timer_.HasTimeLimitExpired()); | 80 } while (!timer_.HasTimeLimitExpired()); |
| 86 | 81 |
| 87 perf_test::PrintResult("update_tile_priorities_stationary", | 82 perf_test::PrintResult("update_tile_priorities_stationary", |
| 88 "", | 83 "", |
| 89 test_name, | 84 test_name, |
| 90 timer_.LapsPerSecond(), | 85 timer_.LapsPerSecond(), |
| 91 "runs/s", | 86 "runs/s", |
| 92 true); | 87 true); |
| 93 } | 88 } |
| 94 | 89 |
| 95 void RunUpdateTilePrioritiesScrollingTest(const std::string& test_name, | 90 void RunUpdateTilePrioritiesScrollingTest(const std::string& test_name, |
| 96 const gfx::Transform& transform) { | 91 const gfx::Transform& transform) { |
| 97 gfx::Size viewport_size(1024, 768); | 92 gfx::Size viewport_size(1024, 768); |
| 98 gfx::Rect viewport_rect(viewport_size); | 93 gfx::Rect viewport_rect(viewport_size); |
| 99 int xoffsets[] = {10, 0, -10, 0}; | 94 int xoffsets[] = {10, 0, -10, 0}; |
| 100 int yoffsets[] = {0, 10, 0, -10}; | 95 int yoffsets[] = {0, 10, 0, -10}; |
| 101 int offsetIndex = 0; | 96 int offsetIndex = 0; |
| 102 int offsetCount = 0; | 97 int offsetCount = 0; |
| 103 const int maxOffsetCount = 1000; | 98 const int maxOffsetCount = 1000; |
| 104 | 99 |
| 105 timer_.Reset(); | 100 timer_.Reset(); |
| 106 do { | 101 do { |
| 107 picture_layer_tiling_->UpdateTilePriorities(PENDING_TREE, | 102 picture_layer_tiling_->UpdateTilePriorities( |
| 108 viewport_rect, | 103 PENDING_TREE, viewport_rect, 1.f, timer_.NumLaps() + 1, Occlusion()); |
| 109 1.f, | |
| 110 timer_.NumLaps() + 1, | |
| 111 NULL, | |
| 112 NULL, | |
| 113 gfx::Transform()); | |
| 114 | 104 |
| 115 viewport_rect = gfx::Rect(viewport_rect.x() + xoffsets[offsetIndex], | 105 viewport_rect = gfx::Rect(viewport_rect.x() + xoffsets[offsetIndex], |
| 116 viewport_rect.y() + yoffsets[offsetIndex], | 106 viewport_rect.y() + yoffsets[offsetIndex], |
| 117 viewport_rect.width(), | 107 viewport_rect.width(), |
| 118 viewport_rect.height()); | 108 viewport_rect.height()); |
| 119 | 109 |
| 120 if (++offsetCount > maxOffsetCount) { | 110 if (++offsetCount > maxOffsetCount) { |
| 121 offsetCount = 0; | 111 offsetCount = 0; |
| 122 offsetIndex = (offsetIndex + 1) % 4; | 112 offsetIndex = (offsetIndex + 1) % 4; |
| 123 } | 113 } |
| 124 timer_.NextLap(); | 114 timer_.NextLap(); |
| 125 } while (!timer_.HasTimeLimitExpired()); | 115 } while (!timer_.HasTimeLimitExpired()); |
| 126 | 116 |
| 127 perf_test::PrintResult("update_tile_priorities_scrolling", | 117 perf_test::PrintResult("update_tile_priorities_scrolling", |
| 128 "", | 118 "", |
| 129 test_name, | 119 test_name, |
| 130 timer_.LapsPerSecond(), | 120 timer_.LapsPerSecond(), |
| 131 "runs/s", | 121 "runs/s", |
| 132 true); | 122 true); |
| 133 } | 123 } |
| 134 | 124 |
| 135 void RunRasterIteratorConstructTest(const std::string& test_name, | 125 void RunRasterIteratorConstructTest(const std::string& test_name, |
| 136 const gfx::Rect& viewport) { | 126 const gfx::Rect& viewport) { |
| 137 gfx::Size bounds(viewport.size()); | 127 gfx::Size bounds(viewport.size()); |
| 138 picture_layer_tiling_ = | 128 picture_layer_tiling_ = |
| 139 PictureLayerTiling::Create(1, bounds, &picture_layer_tiling_client_); | 129 PictureLayerTiling::Create(1, bounds, &picture_layer_tiling_client_); |
| 140 picture_layer_tiling_client_.set_tree(ACTIVE_TREE); | 130 picture_layer_tiling_client_.set_tree(ACTIVE_TREE); |
| 141 picture_layer_tiling_->UpdateTilePriorities( | 131 picture_layer_tiling_->UpdateTilePriorities( |
| 142 ACTIVE_TREE, viewport, 1.0f, 1.0, NULL, NULL, gfx::Transform()); | 132 ACTIVE_TREE, viewport, 1.0f, 1.0, Occlusion()); |
| 143 | 133 |
| 144 timer_.Reset(); | 134 timer_.Reset(); |
| 145 do { | 135 do { |
| 146 PictureLayerTiling::TilingRasterTileIterator it( | 136 PictureLayerTiling::TilingRasterTileIterator it( |
| 147 picture_layer_tiling_.get(), ACTIVE_TREE); | 137 picture_layer_tiling_.get(), ACTIVE_TREE); |
| 148 timer_.NextLap(); | 138 timer_.NextLap(); |
| 149 } while (!timer_.HasTimeLimitExpired()); | 139 } while (!timer_.HasTimeLimitExpired()); |
| 150 | 140 |
| 151 perf_test::PrintResult("tiling_raster_tile_iterator_construct", | 141 perf_test::PrintResult("tiling_raster_tile_iterator_construct", |
| 152 "", | 142 "", |
| 153 test_name, | 143 test_name, |
| 154 timer_.LapsPerSecond(), | 144 timer_.LapsPerSecond(), |
| 155 "runs/s", | 145 "runs/s", |
| 156 true); | 146 true); |
| 157 } | 147 } |
| 158 | 148 |
| 159 void RunRasterIteratorConstructAndIterateTest(const std::string& test_name, | 149 void RunRasterIteratorConstructAndIterateTest(const std::string& test_name, |
| 160 int num_tiles, | 150 int num_tiles, |
| 161 const gfx::Rect& viewport) { | 151 const gfx::Rect& viewport) { |
| 162 gfx::Size bounds(10000, 10000); | 152 gfx::Size bounds(10000, 10000); |
| 163 picture_layer_tiling_ = | 153 picture_layer_tiling_ = |
| 164 PictureLayerTiling::Create(1, bounds, &picture_layer_tiling_client_); | 154 PictureLayerTiling::Create(1, bounds, &picture_layer_tiling_client_); |
| 165 picture_layer_tiling_client_.set_tree(ACTIVE_TREE); | 155 picture_layer_tiling_client_.set_tree(ACTIVE_TREE); |
| 166 picture_layer_tiling_->UpdateTilePriorities( | 156 picture_layer_tiling_->UpdateTilePriorities( |
| 167 ACTIVE_TREE, viewport, 1.0f, 1.0, NULL, NULL, gfx::Transform()); | 157 ACTIVE_TREE, viewport, 1.0f, 1.0, Occlusion()); |
| 168 | 158 |
| 169 timer_.Reset(); | 159 timer_.Reset(); |
| 170 do { | 160 do { |
| 171 int count = num_tiles; | 161 int count = num_tiles; |
| 172 PictureLayerTiling::TilingRasterTileIterator it( | 162 PictureLayerTiling::TilingRasterTileIterator it( |
| 173 picture_layer_tiling_.get(), ACTIVE_TREE); | 163 picture_layer_tiling_.get(), ACTIVE_TREE); |
| 174 while (count--) { | 164 while (count--) { |
| 175 ASSERT_TRUE(it) << "count: " << count; | 165 ASSERT_TRUE(it) << "count: " << count; |
| 176 ASSERT_TRUE(*it != NULL) << "count: " << count; | 166 ASSERT_TRUE(*it != NULL) << "count: " << count; |
| 177 ++it; | 167 ++it; |
| 178 } | 168 } |
| 179 timer_.NextLap(); | 169 timer_.NextLap(); |
| 180 } while (!timer_.HasTimeLimitExpired()); | 170 } while (!timer_.HasTimeLimitExpired()); |
| 181 | 171 |
| 182 perf_test::PrintResult("tiling_raster_tile_iterator_construct_and_iterate", | 172 perf_test::PrintResult("tiling_raster_tile_iterator_construct_and_iterate", |
| 183 "", | 173 "", |
| 184 test_name, | 174 test_name, |
| 185 timer_.LapsPerSecond(), | 175 timer_.LapsPerSecond(), |
| 186 "runs/s", | 176 "runs/s", |
| 187 true); | 177 true); |
| 188 } | 178 } |
| 189 | 179 |
| 190 void RunEvictionIteratorConstructTest(const std::string& test_name, | 180 void RunEvictionIteratorConstructTest(const std::string& test_name, |
| 191 const gfx::Rect& viewport) { | 181 const gfx::Rect& viewport) { |
| 192 gfx::Size bounds(viewport.size()); | 182 gfx::Size bounds(viewport.size()); |
| 193 picture_layer_tiling_ = | 183 picture_layer_tiling_ = |
| 194 PictureLayerTiling::Create(1, bounds, &picture_layer_tiling_client_); | 184 PictureLayerTiling::Create(1, bounds, &picture_layer_tiling_client_); |
| 195 picture_layer_tiling_client_.set_tree(ACTIVE_TREE); | 185 picture_layer_tiling_client_.set_tree(ACTIVE_TREE); |
| 196 picture_layer_tiling_->UpdateTilePriorities( | 186 picture_layer_tiling_->UpdateTilePriorities( |
| 197 ACTIVE_TREE, viewport, 1.0f, 1.0, NULL, NULL, gfx::Transform()); | 187 ACTIVE_TREE, viewport, 1.0f, 1.0, Occlusion()); |
| 198 | 188 |
| 199 timer_.Reset(); | 189 timer_.Reset(); |
| 200 TreePriority priorities[] = {SAME_PRIORITY_FOR_BOTH_TREES, | 190 TreePriority priorities[] = {SAME_PRIORITY_FOR_BOTH_TREES, |
| 201 SMOOTHNESS_TAKES_PRIORITY, | 191 SMOOTHNESS_TAKES_PRIORITY, |
| 202 NEW_CONTENT_TAKES_PRIORITY}; | 192 NEW_CONTENT_TAKES_PRIORITY}; |
| 203 int priority_count = 0; | 193 int priority_count = 0; |
| 204 do { | 194 do { |
| 205 PictureLayerTiling::TilingEvictionTileIterator it( | 195 PictureLayerTiling::TilingEvictionTileIterator it( |
| 206 picture_layer_tiling_.get(), | 196 picture_layer_tiling_.get(), |
| 207 priorities[priority_count], | 197 priorities[priority_count], |
| (...skipping 11 matching lines...) Expand all Loading... |
| 219 } | 209 } |
| 220 | 210 |
| 221 void RunEvictionIteratorConstructAndIterateTest(const std::string& test_name, | 211 void RunEvictionIteratorConstructAndIterateTest(const std::string& test_name, |
| 222 int num_tiles, | 212 int num_tiles, |
| 223 const gfx::Rect& viewport) { | 213 const gfx::Rect& viewport) { |
| 224 gfx::Size bounds(10000, 10000); | 214 gfx::Size bounds(10000, 10000); |
| 225 picture_layer_tiling_ = | 215 picture_layer_tiling_ = |
| 226 PictureLayerTiling::Create(1, bounds, &picture_layer_tiling_client_); | 216 PictureLayerTiling::Create(1, bounds, &picture_layer_tiling_client_); |
| 227 picture_layer_tiling_client_.set_tree(ACTIVE_TREE); | 217 picture_layer_tiling_client_.set_tree(ACTIVE_TREE); |
| 228 picture_layer_tiling_->UpdateTilePriorities( | 218 picture_layer_tiling_->UpdateTilePriorities( |
| 229 ACTIVE_TREE, viewport, 1.0f, 1.0, NULL, NULL, gfx::Transform()); | 219 ACTIVE_TREE, viewport, 1.0f, 1.0, Occlusion()); |
| 230 | 220 |
| 231 TreePriority priorities[] = {SAME_PRIORITY_FOR_BOTH_TREES, | 221 TreePriority priorities[] = {SAME_PRIORITY_FOR_BOTH_TREES, |
| 232 SMOOTHNESS_TAKES_PRIORITY, | 222 SMOOTHNESS_TAKES_PRIORITY, |
| 233 NEW_CONTENT_TAKES_PRIORITY}; | 223 NEW_CONTENT_TAKES_PRIORITY}; |
| 234 | 224 |
| 235 // Ensure all tiles have resources. | 225 // Ensure all tiles have resources. |
| 236 std::vector<Tile*> all_tiles = picture_layer_tiling_->AllTilesForTesting(); | 226 std::vector<Tile*> all_tiles = picture_layer_tiling_->AllTilesForTesting(); |
| 237 for (std::vector<Tile*>::iterator tile_it = all_tiles.begin(); | 227 for (std::vector<Tile*>::iterator tile_it = all_tiles.begin(); |
| 238 tile_it != all_tiles.end(); | 228 tile_it != all_tiles.end(); |
| 239 ++tile_it) { | 229 ++tile_it) { |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 361 "32_500x500", 32, gfx::Rect(0, 0, 500, 500)); | 351 "32_500x500", 32, gfx::Rect(0, 0, 500, 500)); |
| 362 RunEvictionIteratorConstructAndIterateTest( | 352 RunEvictionIteratorConstructAndIterateTest( |
| 363 "64_100x100", 64, gfx::Rect(0, 0, 100, 100)); | 353 "64_100x100", 64, gfx::Rect(0, 0, 100, 100)); |
| 364 RunEvictionIteratorConstructAndIterateTest( | 354 RunEvictionIteratorConstructAndIterateTest( |
| 365 "64_500x500", 64, gfx::Rect(0, 0, 500, 500)); | 355 "64_500x500", 64, gfx::Rect(0, 0, 500, 500)); |
| 366 } | 356 } |
| 367 | 357 |
| 368 } // namespace | 358 } // namespace |
| 369 | 359 |
| 370 } // namespace cc | 360 } // namespace cc |
| OLD | NEW |