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

Side by Side Diff: cc/resources/picture_layer_tiling_perftest.cc

Issue 644313002: cc: Use reverse spiral iterator in tiling eviction. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 1 month 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
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/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 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 void RunEvictionIteratorConstructTest(const std::string& test_name, 182 void RunEvictionIteratorConstructTest(const std::string& test_name,
183 const gfx::Rect& viewport) { 183 const gfx::Rect& viewport) {
184 gfx::Size bounds(viewport.size()); 184 gfx::Size bounds(viewport.size());
185 picture_layer_tiling_ = 185 picture_layer_tiling_ =
186 PictureLayerTiling::Create(1, bounds, &picture_layer_tiling_client_); 186 PictureLayerTiling::Create(1, bounds, &picture_layer_tiling_client_);
187 picture_layer_tiling_client_.set_tree(ACTIVE_TREE); 187 picture_layer_tiling_client_.set_tree(ACTIVE_TREE);
188 picture_layer_tiling_->ComputeTilePriorityRects( 188 picture_layer_tiling_->ComputeTilePriorityRects(
189 ACTIVE_TREE, viewport, 1.0f, 1.0, Occlusion()); 189 ACTIVE_TREE, viewport, 1.0f, 1.0, Occlusion());
190 190
191 timer_.Reset(); 191 timer_.Reset();
192 TreePriority priorities[] = {SAME_PRIORITY_FOR_BOTH_TREES,
193 SMOOTHNESS_TAKES_PRIORITY,
194 NEW_CONTENT_TAKES_PRIORITY};
195 int priority_count = 0;
196 do { 192 do {
197 PictureLayerTiling::TilingEvictionTileIterator it( 193 PictureLayerTiling::TilingEvictionTileIterator it(
198 picture_layer_tiling_.get(), 194 picture_layer_tiling_.get(),
199 priorities[priority_count],
200 PictureLayerTiling::NOW); 195 PictureLayerTiling::NOW);
201 priority_count = (priority_count + 1) % arraysize(priorities);
202 timer_.NextLap(); 196 timer_.NextLap();
203 } while (!timer_.HasTimeLimitExpired()); 197 } while (!timer_.HasTimeLimitExpired());
204 198
205 perf_test::PrintResult("tiling_eviction_tile_iterator_construct", 199 perf_test::PrintResult("tiling_eviction_tile_iterator_construct",
206 "", 200 "",
207 test_name, 201 test_name,
208 timer_.LapsPerSecond(), 202 timer_.LapsPerSecond(),
209 "runs/s", 203 "runs/s",
210 true); 204 true);
211 } 205 }
212 206
213 void RunEvictionIteratorConstructAndIterateTest(const std::string& test_name, 207 void RunEvictionIteratorConstructAndIterateTest(const std::string& test_name,
214 int num_tiles, 208 int num_tiles,
215 const gfx::Rect& viewport) { 209 const gfx::Rect& viewport) {
216 gfx::Size bounds(10000, 10000); 210 gfx::Size bounds(10000, 10000);
217 picture_layer_tiling_ = 211 picture_layer_tiling_ =
218 PictureLayerTiling::Create(1, bounds, &picture_layer_tiling_client_); 212 PictureLayerTiling::Create(1, bounds, &picture_layer_tiling_client_);
219 picture_layer_tiling_client_.set_tree(ACTIVE_TREE); 213 picture_layer_tiling_client_.set_tree(ACTIVE_TREE);
220 picture_layer_tiling_->ComputeTilePriorityRects( 214 picture_layer_tiling_->ComputeTilePriorityRects(
221 ACTIVE_TREE, viewport, 1.0f, 1.0, Occlusion()); 215 ACTIVE_TREE, viewport, 1.0f, 1.0, Occlusion());
222 216
223 TreePriority priorities[] = {SAME_PRIORITY_FOR_BOTH_TREES,
224 SMOOTHNESS_TAKES_PRIORITY,
225 NEW_CONTENT_TAKES_PRIORITY};
226
227 // Ensure all tiles have resources. 217 // Ensure all tiles have resources.
228 std::vector<Tile*> all_tiles = picture_layer_tiling_->AllTilesForTesting(); 218 std::vector<Tile*> all_tiles = picture_layer_tiling_->AllTilesForTesting();
229 for (std::vector<Tile*>::iterator tile_it = all_tiles.begin(); 219 for (std::vector<Tile*>::iterator tile_it = all_tiles.begin();
230 tile_it != all_tiles.end(); 220 tile_it != all_tiles.end();
231 ++tile_it) { 221 ++tile_it) {
232 Tile* tile = *tile_it; 222 Tile* tile = *tile_it;
233 ManagedTileState::DrawInfo& draw_info = tile->draw_info(); 223 ManagedTileState::DrawInfo& draw_info = tile->draw_info();
234 draw_info.SetResourceForTesting( 224 draw_info.SetResourceForTesting(
235 ScopedResource::Create(resource_provider_.get()).Pass()); 225 ScopedResource::Create(resource_provider_.get()).Pass());
236 } 226 }
237 227
238 int priority_count = 0;
239 timer_.Reset(); 228 timer_.Reset();
240 do { 229 do {
241 int count = num_tiles; 230 int count = num_tiles;
242 PictureLayerTiling::TilingEvictionTileIterator it( 231 PictureLayerTiling::TilingEvictionTileIterator it(
243 picture_layer_tiling_.get(), 232 picture_layer_tiling_.get(),
244 priorities[priority_count],
245 PictureLayerTiling::EVENTUALLY); 233 PictureLayerTiling::EVENTUALLY);
246 while (count--) { 234 while (count--) {
247 ASSERT_TRUE(it) << "count: " << count; 235 ASSERT_TRUE(it) << "count: " << count;
248 ASSERT_TRUE(*it != NULL) << "count: " << count; 236 ASSERT_TRUE(*it != NULL) << "count: " << count;
249 ++it; 237 ++it;
250 } 238 }
251 priority_count = (priority_count + 1) % arraysize(priorities);
252 timer_.NextLap(); 239 timer_.NextLap();
253 } while (!timer_.HasTimeLimitExpired()); 240 } while (!timer_.HasTimeLimitExpired());
254 241
255 // Remove all resources from tiles to make sure the tile version destructor 242 // Remove all resources from tiles to make sure the tile version destructor
256 // doesn't complain. 243 // doesn't complain.
257 for (std::vector<Tile*>::iterator tile_it = all_tiles.begin(); 244 for (std::vector<Tile*>::iterator tile_it = all_tiles.begin();
258 tile_it != all_tiles.end(); 245 tile_it != all_tiles.end();
259 ++tile_it) { 246 ++tile_it) {
260 Tile* tile = *tile_it; 247 Tile* tile = *tile_it;
261 ManagedTileState::DrawInfo& draw_info = tile->draw_info(); 248 ManagedTileState::DrawInfo& draw_info = tile->draw_info();
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
351 "32_500x500", 32, gfx::Rect(0, 0, 500, 500)); 338 "32_500x500", 32, gfx::Rect(0, 0, 500, 500));
352 RunEvictionIteratorConstructAndIterateTest( 339 RunEvictionIteratorConstructAndIterateTest(
353 "64_100x100", 64, gfx::Rect(0, 0, 100, 100)); 340 "64_100x100", 64, gfx::Rect(0, 0, 100, 100));
354 RunEvictionIteratorConstructAndIterateTest( 341 RunEvictionIteratorConstructAndIterateTest(
355 "64_500x500", 64, gfx::Rect(0, 0, 500, 500)); 342 "64_500x500", 64, gfx::Rect(0, 0, 500, 500));
356 } 343 }
357 344
358 } // namespace 345 } // namespace
359 346
360 } // namespace cc 347 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698