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/resource_pool.h" | 7 #include "cc/resources/resource_pool.h" |
8 #include "cc/resources/tile.h" | 8 #include "cc/resources/tile.h" |
9 #include "cc/resources/tile_priority.h" | 9 #include "cc/resources/tile_priority.h" |
10 #include "cc/resources/tiling_set_raster_queue_all.h" | 10 #include "cc/resources/tiling_set_raster_queue_all.h" |
(...skipping 407 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
418 while (!queue->IsEmpty()) { | 418 while (!queue->IsEmpty()) { |
419 Tile* tile = queue->Top(); | 419 Tile* tile = queue->Top(); |
420 EXPECT_TRUE(tile->required_for_draw()); | 420 EXPECT_TRUE(tile->required_for_draw()); |
421 required_for_draw_tiles.insert(tile); | 421 required_for_draw_tiles.insert(tile); |
422 queue->Pop(); | 422 queue->Pop(); |
423 } | 423 } |
424 EXPECT_EQ(expected_required_for_draw_tiles, required_for_draw_tiles); | 424 EXPECT_EQ(expected_required_for_draw_tiles, required_for_draw_tiles); |
425 EXPECT_NE(new_content_tiles, required_for_draw_tiles); | 425 EXPECT_NE(new_content_tiles, required_for_draw_tiles); |
426 } | 426 } |
427 | 427 |
| 428 TEST_F(TileManagerTilePriorityQueueTest, |
| 429 RasterTilePriorityQueueHighNonIdealTilings) { |
| 430 const gfx::Size layer_bounds(1000, 1000); |
| 431 const gfx::Size viewport(800, 800); |
| 432 host_impl_.SetViewportSize(viewport); |
| 433 SetupDefaultTrees(layer_bounds); |
| 434 |
| 435 pending_layer_->tilings()->AddTiling(1.5f, pending_layer_->raster_source()); |
| 436 active_layer_->tilings()->AddTiling(1.5f, active_layer_->raster_source()); |
| 437 |
| 438 pending_layer_->tilings()->UpdateTilePriorities(gfx::Rect(viewport), 1.f, 5.0, |
| 439 Occlusion(), true); |
| 440 active_layer_->tilings()->UpdateTilePriorities(gfx::Rect(viewport), 1.f, 5.0, |
| 441 Occlusion(), true); |
| 442 |
| 443 std::set<Tile*> all_expected_tiles; |
| 444 for (size_t i = 0; i < pending_layer_->num_tilings(); ++i) { |
| 445 PictureLayerTiling* tiling = pending_layer_->tilings()->tiling_at(i); |
| 446 tiling->CreateAllTilesForTesting(); |
| 447 if (tiling->contents_scale() == 1.f) { |
| 448 tiling->set_resolution(HIGH_RESOLUTION); |
| 449 const auto& all_tiles = tiling->AllTilesForTesting(); |
| 450 all_expected_tiles.insert(all_tiles.begin(), all_tiles.end()); |
| 451 } else { |
| 452 tiling->set_resolution(NON_IDEAL_RESOLUTION); |
| 453 } |
| 454 } |
| 455 |
| 456 for (size_t i = 0; i < active_layer_->num_tilings(); ++i) { |
| 457 PictureLayerTiling* tiling = active_layer_->tilings()->tiling_at(i); |
| 458 tiling->CreateAllTilesForTesting(); |
| 459 if (tiling->contents_scale() == 1.5f) { |
| 460 tiling->set_resolution(HIGH_RESOLUTION); |
| 461 const auto& all_tiles = tiling->AllTilesForTesting(); |
| 462 all_expected_tiles.insert(all_tiles.begin(), all_tiles.end()); |
| 463 } else { |
| 464 tiling->set_resolution(NON_IDEAL_RESOLUTION); |
| 465 } |
| 466 } |
| 467 |
| 468 scoped_ptr<RasterTilePriorityQueue> queue(host_impl_.BuildRasterQueue( |
| 469 SMOOTHNESS_TAKES_PRIORITY, RasterTilePriorityQueue::Type::ALL)); |
| 470 EXPECT_FALSE(queue->IsEmpty()); |
| 471 |
| 472 size_t tile_count = 0; |
| 473 std::set<Tile*> all_actual_tiles; |
| 474 while (!queue->IsEmpty()) { |
| 475 EXPECT_TRUE(queue->Top()); |
| 476 all_actual_tiles.insert(queue->Top()); |
| 477 ++tile_count; |
| 478 queue->Pop(); |
| 479 } |
| 480 |
| 481 EXPECT_EQ(tile_count, all_actual_tiles.size()); |
| 482 EXPECT_EQ(all_expected_tiles.size(), all_actual_tiles.size()); |
| 483 EXPECT_EQ(all_expected_tiles, all_actual_tiles); |
| 484 } |
| 485 |
428 TEST_F(TileManagerTilePriorityQueueTest, RasterTilePriorityQueueInvalidation) { | 486 TEST_F(TileManagerTilePriorityQueueTest, RasterTilePriorityQueueInvalidation) { |
429 const gfx::Size layer_bounds(1000, 1000); | 487 const gfx::Size layer_bounds(1000, 1000); |
430 host_impl_.SetViewportSize(gfx::Size(500, 500)); | 488 host_impl_.SetViewportSize(gfx::Size(500, 500)); |
431 SetupDefaultTrees(layer_bounds); | 489 SetupDefaultTrees(layer_bounds); |
432 | 490 |
433 // Use a tile's content rect as an invalidation. We should inset it a bit to | 491 // Use a tile's content rect as an invalidation. We should inset it a bit to |
434 // ensure that border math doesn't invalidate neighbouring tiles. | 492 // ensure that border math doesn't invalidate neighbouring tiles. |
435 gfx::Rect invalidation = | 493 gfx::Rect invalidation = |
436 pending_layer_->HighResTiling()->TileAt(1, 0)->content_rect(); | 494 pending_layer_->HighResTiling()->TileAt(1, 0)->content_rect(); |
437 invalidation.Inset(2, 2); | 495 invalidation.Inset(2, 2); |
(...skipping 910 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1348 RGBA_8888); | 1406 RGBA_8888); |
1349 | 1407 |
1350 host_impl_.tile_manager()->CheckIfMoreTilesNeedToBePreparedForTesting(); | 1408 host_impl_.tile_manager()->CheckIfMoreTilesNeedToBePreparedForTesting(); |
1351 EXPECT_FALSE(host_impl_.is_likely_to_require_a_draw()); | 1409 EXPECT_FALSE(host_impl_.is_likely_to_require_a_draw()); |
1352 | 1410 |
1353 host_impl_.resource_pool()->ReleaseResource(resource.Pass()); | 1411 host_impl_.resource_pool()->ReleaseResource(resource.Pass()); |
1354 } | 1412 } |
1355 | 1413 |
1356 } // namespace | 1414 } // namespace |
1357 } // namespace cc | 1415 } // namespace cc |
OLD | NEW |