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/test/fake_impl_proxy.h" | 9 #include "cc/test/fake_impl_proxy.h" |
10 #include "cc/test/fake_layer_tree_host_impl.h" | 10 #include "cc/test/fake_layer_tree_host_impl.h" |
(...skipping 384 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
395 | 395 |
396 tile_manager()->InitializeTilesWithResourcesForTesting( | 396 tile_manager()->InitializeTilesWithResourcesForTesting( |
397 std::vector<Tile*>(all_tiles.begin(), all_tiles.end())); | 397 std::vector<Tile*>(all_tiles.begin(), all_tiles.end())); |
398 | 398 |
399 Tile* last_tile = NULL; | 399 Tile* last_tile = NULL; |
400 smoothness_tiles.clear(); | 400 smoothness_tiles.clear(); |
401 tile_count = 0; | 401 tile_count = 0; |
402 // Here we expect to get increasing ACTIVE_TREE priority_bin. | 402 // Here we expect to get increasing ACTIVE_TREE priority_bin. |
403 queue.Reset(); | 403 queue.Reset(); |
404 host_impl_.BuildEvictionQueue(&queue, SMOOTHNESS_TAKES_PRIORITY); | 404 host_impl_.BuildEvictionQueue(&queue, SMOOTHNESS_TAKES_PRIORITY); |
| 405 int distance_increasing = 0; |
| 406 int distance_decreasing = 0; |
405 while (!queue.IsEmpty()) { | 407 while (!queue.IsEmpty()) { |
406 Tile* tile = queue.Top(); | 408 Tile* tile = queue.Top(); |
407 EXPECT_TRUE(tile); | 409 EXPECT_TRUE(tile); |
408 EXPECT_TRUE(tile->HasResources()); | 410 EXPECT_TRUE(tile->HasResources()); |
409 | 411 |
410 if (!last_tile) | 412 if (!last_tile) |
411 last_tile = tile; | 413 last_tile = tile; |
412 | 414 |
413 EXPECT_GE(last_tile->priority(ACTIVE_TREE).priority_bin, | 415 EXPECT_GE(last_tile->priority(ACTIVE_TREE).priority_bin, |
414 tile->priority(ACTIVE_TREE).priority_bin); | 416 tile->priority(ACTIVE_TREE).priority_bin); |
415 if (last_tile->priority(ACTIVE_TREE).priority_bin == | 417 if (last_tile->priority(ACTIVE_TREE).priority_bin == |
416 tile->priority(ACTIVE_TREE).priority_bin) { | 418 tile->priority(ACTIVE_TREE).priority_bin) { |
417 EXPECT_LE(last_tile->required_for_activation(), | 419 EXPECT_LE(last_tile->required_for_activation(), |
418 tile->required_for_activation()); | 420 tile->required_for_activation()); |
419 if (last_tile->required_for_activation() == | 421 if (last_tile->required_for_activation() == |
420 tile->required_for_activation()) { | 422 tile->required_for_activation()) { |
421 EXPECT_GE(last_tile->priority(ACTIVE_TREE).distance_to_visible, | 423 if (last_tile->priority(ACTIVE_TREE).distance_to_visible >= |
422 tile->priority(ACTIVE_TREE).distance_to_visible); | 424 tile->priority(ACTIVE_TREE).distance_to_visible) { |
| 425 ++distance_decreasing; |
| 426 } else { |
| 427 ++distance_increasing; |
| 428 } |
423 } | 429 } |
424 } | 430 } |
425 | 431 |
426 last_tile = tile; | 432 last_tile = tile; |
427 ++tile_count; | 433 ++tile_count; |
428 smoothness_tiles.insert(tile); | 434 smoothness_tiles.insert(tile); |
429 queue.Pop(); | 435 queue.Pop(); |
430 } | 436 } |
431 | 437 |
| 438 EXPECT_EQ(4, distance_increasing); |
| 439 EXPECT_EQ(15, distance_decreasing); |
432 EXPECT_EQ(tile_count, smoothness_tiles.size()); | 440 EXPECT_EQ(tile_count, smoothness_tiles.size()); |
433 EXPECT_EQ(all_tiles, smoothness_tiles); | 441 EXPECT_EQ(all_tiles, smoothness_tiles); |
434 | 442 |
435 std::set<Tile*> new_content_tiles; | 443 std::set<Tile*> new_content_tiles; |
436 last_tile = NULL; | 444 last_tile = NULL; |
437 // Here we expect to get increasing PENDING_TREE priority_bin. | 445 // Here we expect to get increasing PENDING_TREE priority_bin. |
438 queue.Reset(); | 446 queue.Reset(); |
439 host_impl_.BuildEvictionQueue(&queue, NEW_CONTENT_TAKES_PRIORITY); | 447 host_impl_.BuildEvictionQueue(&queue, NEW_CONTENT_TAKES_PRIORITY); |
| 448 distance_increasing = 0; |
| 449 distance_decreasing = 0; |
440 while (!queue.IsEmpty()) { | 450 while (!queue.IsEmpty()) { |
441 Tile* tile = queue.Top(); | 451 Tile* tile = queue.Top(); |
442 EXPECT_TRUE(tile); | 452 EXPECT_TRUE(tile); |
443 | 453 |
444 if (!last_tile) | 454 if (!last_tile) |
445 last_tile = tile; | 455 last_tile = tile; |
446 | 456 |
447 EXPECT_GE(last_tile->priority(PENDING_TREE).priority_bin, | 457 EXPECT_GE(last_tile->priority(PENDING_TREE).priority_bin, |
448 tile->priority(PENDING_TREE).priority_bin); | 458 tile->priority(PENDING_TREE).priority_bin); |
449 if (last_tile->priority(PENDING_TREE).priority_bin == | 459 if (last_tile->priority(PENDING_TREE).priority_bin == |
450 tile->priority(PENDING_TREE).priority_bin) { | 460 tile->priority(PENDING_TREE).priority_bin) { |
451 EXPECT_LE(last_tile->required_for_activation(), | 461 EXPECT_LE(last_tile->required_for_activation(), |
452 tile->required_for_activation()); | 462 tile->required_for_activation()); |
453 if (last_tile->required_for_activation() == | 463 if (last_tile->required_for_activation() == |
454 tile->required_for_activation()) { | 464 tile->required_for_activation()) { |
455 EXPECT_GE(last_tile->priority(PENDING_TREE).distance_to_visible, | 465 if (last_tile->priority(PENDING_TREE).distance_to_visible >= |
456 tile->priority(PENDING_TREE).distance_to_visible); | 466 tile->priority(PENDING_TREE).distance_to_visible) { |
| 467 ++distance_decreasing; |
| 468 } else { |
| 469 ++distance_increasing; |
| 470 } |
457 } | 471 } |
458 } | 472 } |
459 | 473 |
460 last_tile = tile; | 474 last_tile = tile; |
461 new_content_tiles.insert(tile); | 475 new_content_tiles.insert(tile); |
462 queue.Pop(); | 476 queue.Pop(); |
463 } | 477 } |
464 | 478 |
| 479 EXPECT_EQ(4, distance_increasing); |
| 480 EXPECT_EQ(15, distance_decreasing); |
| 481 |
465 EXPECT_EQ(tile_count, new_content_tiles.size()); | 482 EXPECT_EQ(tile_count, new_content_tiles.size()); |
466 EXPECT_EQ(all_tiles, new_content_tiles); | 483 EXPECT_EQ(all_tiles, new_content_tiles); |
467 } | 484 } |
468 | 485 |
469 TEST_F(TileManagerTilePriorityQueueTest, | 486 TEST_F(TileManagerTilePriorityQueueTest, |
470 EvictionTilePriorityQueueWithOcclusion) { | 487 EvictionTilePriorityQueueWithOcclusion) { |
471 gfx::Size tile_size(102, 102); | 488 gfx::Size tile_size(102, 102); |
472 gfx::Size layer_bounds(1000, 1000); | 489 gfx::Size layer_bounds(1000, 1000); |
473 | 490 |
474 scoped_refptr<FakePicturePileImpl> pending_pile = | 491 scoped_refptr<FakePicturePileImpl> pending_pile = |
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
671 all_tiles.insert(queue.Top()); | 688 all_tiles.insert(queue.Top()); |
672 ++tile_count; | 689 ++tile_count; |
673 queue.Pop(); | 690 queue.Pop(); |
674 } | 691 } |
675 EXPECT_EQ(tile_count, all_tiles.size()); | 692 EXPECT_EQ(tile_count, all_tiles.size()); |
676 EXPECT_EQ(17u, tile_count); | 693 EXPECT_EQ(17u, tile_count); |
677 } | 694 } |
678 | 695 |
679 } // namespace | 696 } // namespace |
680 } // namespace cc | 697 } // namespace cc |
OLD | NEW |