| 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/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 1372 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1383 AppendQuadsData data; | 1383 AppendQuadsData data; |
| 1384 active_layer_->WillDraw(DRAW_MODE_RESOURCELESS_SOFTWARE, NULL); | 1384 active_layer_->WillDraw(DRAW_MODE_RESOURCELESS_SOFTWARE, NULL); |
| 1385 active_layer_->AppendQuads(render_pass.get(), Occlusion(), &data); | 1385 active_layer_->AppendQuads(render_pass.get(), Occlusion(), &data); |
| 1386 active_layer_->DidDraw(NULL); | 1386 active_layer_->DidDraw(NULL); |
| 1387 | 1387 |
| 1388 ASSERT_EQ(1U, render_pass->quad_list.size()); | 1388 ASSERT_EQ(1U, render_pass->quad_list.size()); |
| 1389 EXPECT_EQ(DrawQuad::PICTURE_CONTENT, | 1389 EXPECT_EQ(DrawQuad::PICTURE_CONTENT, |
| 1390 render_pass->quad_list.front()->material); | 1390 render_pass->quad_list.front()->material); |
| 1391 } | 1391 } |
| 1392 | 1392 |
| 1393 TEST_F(PictureLayerImplTest, MarkRequiredNullTiles) { | |
| 1394 gfx::Size tile_size(100, 100); | |
| 1395 gfx::Size layer_bounds(1000, 1000); | |
| 1396 | |
| 1397 scoped_refptr<FakePicturePileImpl> pending_pile = | |
| 1398 FakePicturePileImpl::CreateEmptyPile(tile_size, layer_bounds); | |
| 1399 // Layers with entirely empty piles can't get tilings. | |
| 1400 pending_pile->AddRecordingAt(0, 0); | |
| 1401 | |
| 1402 SetupPendingTree(pending_pile); | |
| 1403 | |
| 1404 ASSERT_TRUE(pending_layer_->CanHaveTilings()); | |
| 1405 pending_layer_->AddTiling(1.0f); | |
| 1406 pending_layer_->AddTiling(2.0f); | |
| 1407 | |
| 1408 // It should be safe to call this (and MarkVisibleResourcesAsRequired) | |
| 1409 // on a layer with no recordings. | |
| 1410 host_impl_.pending_tree()->UpdateDrawProperties(); | |
| 1411 pending_layer_->MarkVisibleResourcesAsRequired(); | |
| 1412 } | |
| 1413 | |
| 1414 TEST_F(PictureLayerImplTest, MarkRequiredOffscreenTiles) { | 1393 TEST_F(PictureLayerImplTest, MarkRequiredOffscreenTiles) { |
| 1415 gfx::Size tile_size(100, 100); | 1394 gfx::Size tile_size(100, 100); |
| 1416 gfx::Size layer_bounds(200, 200); | 1395 gfx::Size layer_bounds(200, 200); |
| 1417 | 1396 |
| 1418 scoped_refptr<FakePicturePileImpl> pending_pile = | 1397 scoped_refptr<FakePicturePileImpl> pending_pile = |
| 1419 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 1398 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
| 1420 SetupPendingTree(pending_pile); | 1399 SetupPendingTree(pending_pile); |
| 1421 | 1400 |
| 1422 gfx::Transform transform; | 1401 gfx::Transform transform; |
| 1423 gfx::Transform transform_for_tile_priority; | 1402 gfx::Transform transform_for_tile_priority; |
| 1424 bool resourceless_software_draw = false; | 1403 bool resourceless_software_draw = false; |
| 1425 gfx::Rect viewport(0, 0, 100, 200); | 1404 gfx::Rect viewport(0, 0, 100, 200); |
| 1426 host_impl_.SetExternalDrawConstraints(transform, | 1405 host_impl_.SetExternalDrawConstraints(transform, |
| 1427 viewport, | 1406 viewport, |
| 1428 viewport, | 1407 viewport, |
| 1429 viewport, | 1408 viewport, |
| 1430 transform, | 1409 transform, |
| 1431 resourceless_software_draw); | 1410 resourceless_software_draw); |
| 1432 | 1411 |
| 1433 pending_layer_->set_fixed_tile_size(tile_size); | 1412 pending_layer_->set_fixed_tile_size(tile_size); |
| 1434 ASSERT_TRUE(pending_layer_->CanHaveTilings()); | 1413 ASSERT_TRUE(pending_layer_->CanHaveTilings()); |
| 1435 PictureLayerTiling* tiling = pending_layer_->AddTiling(1.f); | 1414 PictureLayerTiling* tiling = pending_layer_->AddTiling(1.f); |
| 1436 host_impl_.pending_tree()->UpdateDrawProperties(); | 1415 host_impl_.pending_tree()->UpdateDrawProperties(); |
| 1437 EXPECT_EQ(tiling->resolution(), HIGH_RESOLUTION); | |
| 1438 EXPECT_EQ(viewport, pending_layer_->visible_rect_for_tile_priority()); | 1416 EXPECT_EQ(viewport, pending_layer_->visible_rect_for_tile_priority()); |
| 1439 | 1417 |
| 1440 // Fake set priorities. | 1418 base::TimeTicks time_ticks; |
| 1441 for (PictureLayerTiling::CoverageIterator iter( | 1419 time_ticks += base::TimeDelta::FromMilliseconds(1); |
| 1442 tiling, pending_layer_->contents_scale_x(), gfx::Rect(layer_bounds)); | 1420 host_impl_.SetCurrentBeginFrameArgs( |
| 1443 iter; | 1421 CreateBeginFrameArgsForTesting(time_ticks)); |
| 1444 ++iter) { | 1422 pending_layer_->UpdateTiles(Occlusion(), resourceless_software_draw); |
| 1445 if (!*iter) | 1423 EXPECT_EQ(HIGH_RESOLUTION, tiling->resolution()); |
| 1446 continue; | |
| 1447 Tile* tile = *iter; | |
| 1448 TilePriority priority; | |
| 1449 priority.resolution = HIGH_RESOLUTION; | |
| 1450 gfx::Rect tile_bounds = iter.geometry_rect(); | |
| 1451 if (pending_layer_->visible_rect_for_tile_priority().Intersects( | |
| 1452 tile_bounds)) { | |
| 1453 priority.priority_bin = TilePriority::NOW; | |
| 1454 priority.distance_to_visible = 0.f; | |
| 1455 } else { | |
| 1456 priority.priority_bin = TilePriority::SOON; | |
| 1457 priority.distance_to_visible = 1.f; | |
| 1458 } | |
| 1459 tile->SetPriority(PENDING_TREE, priority); | |
| 1460 } | |
| 1461 | |
| 1462 pending_layer_->MarkVisibleResourcesAsRequired(); | |
| 1463 | 1424 |
| 1464 int num_visible = 0; | 1425 int num_visible = 0; |
| 1465 int num_offscreen = 0; | 1426 int num_offscreen = 0; |
| 1466 | 1427 |
| 1467 for (PictureLayerTiling::CoverageIterator iter( | 1428 for (PictureLayerTiling::TilingRasterTileIterator iter(tiling); iter; |
| 1468 tiling, pending_layer_->contents_scale_x(), gfx::Rect(layer_bounds)); | |
| 1469 iter; | |
| 1470 ++iter) { | 1429 ++iter) { |
| 1471 if (!*iter) | |
| 1472 continue; | |
| 1473 const Tile* tile = *iter; | 1430 const Tile* tile = *iter; |
| 1431 DCHECK(tile); |
| 1474 if (tile->priority(PENDING_TREE).distance_to_visible == 0.f) { | 1432 if (tile->priority(PENDING_TREE).distance_to_visible == 0.f) { |
| 1475 EXPECT_TRUE(tile->required_for_activation()); | 1433 EXPECT_TRUE(tile->required_for_activation()); |
| 1476 num_visible++; | 1434 num_visible++; |
| 1477 } else { | 1435 } else { |
| 1478 EXPECT_FALSE(tile->required_for_activation()); | 1436 EXPECT_FALSE(tile->required_for_activation()); |
| 1479 num_offscreen++; | 1437 num_offscreen++; |
| 1480 } | 1438 } |
| 1481 } | 1439 } |
| 1482 | 1440 |
| 1483 EXPECT_GT(num_visible, 0); | 1441 EXPECT_GT(num_visible, 0); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1520 host_impl_.pending_tree()->UpdateDrawProperties(); | 1478 host_impl_.pending_tree()->UpdateDrawProperties(); |
| 1521 | 1479 |
| 1522 // Set visible content rect that is different from | 1480 // Set visible content rect that is different from |
| 1523 // external_viewport_for_tile_priority. | 1481 // external_viewport_for_tile_priority. |
| 1524 pending_layer_->draw_properties().visible_content_rect = visible_content_rect; | 1482 pending_layer_->draw_properties().visible_content_rect = visible_content_rect; |
| 1525 time_ticks += base::TimeDelta::FromMilliseconds(200); | 1483 time_ticks += base::TimeDelta::FromMilliseconds(200); |
| 1526 host_impl_.SetCurrentBeginFrameArgs( | 1484 host_impl_.SetCurrentBeginFrameArgs( |
| 1527 CreateBeginFrameArgsForTesting(time_ticks)); | 1485 CreateBeginFrameArgsForTesting(time_ticks)); |
| 1528 pending_layer_->UpdateTiles(Occlusion(), resourceless_software_draw); | 1486 pending_layer_->UpdateTiles(Occlusion(), resourceless_software_draw); |
| 1529 | 1487 |
| 1530 pending_layer_->MarkVisibleResourcesAsRequired(); | |
| 1531 | |
| 1532 // Intersect the two rects. Any tile outside should not be required for | 1488 // Intersect the two rects. Any tile outside should not be required for |
| 1533 // activation. | 1489 // activation. |
| 1534 gfx::Rect viewport_for_tile_priority = | 1490 gfx::Rect viewport_for_tile_priority = |
| 1535 pending_layer_->GetViewportForTilePriorityInContentSpace(); | 1491 pending_layer_->GetViewportForTilePriorityInContentSpace(); |
| 1536 viewport_for_tile_priority.Intersect(pending_layer_->visible_content_rect()); | 1492 viewport_for_tile_priority.Intersect(pending_layer_->visible_content_rect()); |
| 1537 | 1493 |
| 1538 int num_inside = 0; | 1494 int num_inside = 0; |
| 1539 int num_outside = 0; | 1495 int num_outside = 0; |
| 1540 for (PictureLayerTiling::CoverageIterator iter( | 1496 for (PictureLayerTiling::CoverageIterator iter( |
| 1541 tiling, pending_layer_->contents_scale_x(), gfx::Rect(layer_bounds)); | 1497 tiling, pending_layer_->contents_scale_x(), gfx::Rect(layer_bounds)); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 1565 | 1521 |
| 1566 scoped_ptr<RenderPass> render_pass = RenderPass::Create(); | 1522 scoped_ptr<RenderPass> render_pass = RenderPass::Create(); |
| 1567 AppendQuadsData data; | 1523 AppendQuadsData data; |
| 1568 active_layer_->WillDraw(DRAW_MODE_SOFTWARE, NULL); | 1524 active_layer_->WillDraw(DRAW_MODE_SOFTWARE, NULL); |
| 1569 active_layer_->AppendQuads(render_pass.get(), Occlusion(), &data); | 1525 active_layer_->AppendQuads(render_pass.get(), Occlusion(), &data); |
| 1570 active_layer_->DidDraw(NULL); | 1526 active_layer_->DidDraw(NULL); |
| 1571 | 1527 |
| 1572 // All tiles in activation rect is ready to draw. | 1528 // All tiles in activation rect is ready to draw. |
| 1573 EXPECT_EQ(0u, data.num_missing_tiles); | 1529 EXPECT_EQ(0u, data.num_missing_tiles); |
| 1574 EXPECT_EQ(0u, data.num_incomplete_tiles); | 1530 EXPECT_EQ(0u, data.num_incomplete_tiles); |
| 1531 EXPECT_FALSE(active_layer_->only_used_low_res_last_append_quads()); |
| 1575 } | 1532 } |
| 1576 | 1533 |
| 1577 TEST_F(PictureLayerImplTest, HighResTileIsComplete) { | 1534 TEST_F(PictureLayerImplTest, HighResTileIsComplete) { |
| 1578 base::TimeTicks time_ticks; | 1535 base::TimeTicks time_ticks; |
| 1579 time_ticks += base::TimeDelta::FromMilliseconds(1); | 1536 time_ticks += base::TimeDelta::FromMilliseconds(1); |
| 1580 host_impl_.SetCurrentBeginFrameArgs( | 1537 host_impl_.SetCurrentBeginFrameArgs( |
| 1581 CreateBeginFrameArgsForTesting(time_ticks)); | 1538 CreateBeginFrameArgsForTesting(time_ticks)); |
| 1582 | 1539 |
| 1583 gfx::Size tile_size(100, 100); | 1540 gfx::Size tile_size(100, 100); |
| 1584 gfx::Size layer_bounds(200, 200); | 1541 gfx::Size layer_bounds(200, 200); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 1600 scoped_ptr<RenderPass> render_pass = RenderPass::Create(); | 1557 scoped_ptr<RenderPass> render_pass = RenderPass::Create(); |
| 1601 AppendQuadsData data; | 1558 AppendQuadsData data; |
| 1602 active_layer_->WillDraw(DRAW_MODE_SOFTWARE, NULL); | 1559 active_layer_->WillDraw(DRAW_MODE_SOFTWARE, NULL); |
| 1603 active_layer_->AppendQuads(render_pass.get(), Occlusion(), &data); | 1560 active_layer_->AppendQuads(render_pass.get(), Occlusion(), &data); |
| 1604 active_layer_->DidDraw(NULL); | 1561 active_layer_->DidDraw(NULL); |
| 1605 | 1562 |
| 1606 // All high res tiles drew, nothing was incomplete. | 1563 // All high res tiles drew, nothing was incomplete. |
| 1607 EXPECT_EQ(9u, render_pass->quad_list.size()); | 1564 EXPECT_EQ(9u, render_pass->quad_list.size()); |
| 1608 EXPECT_EQ(0u, data.num_missing_tiles); | 1565 EXPECT_EQ(0u, data.num_missing_tiles); |
| 1609 EXPECT_EQ(0u, data.num_incomplete_tiles); | 1566 EXPECT_EQ(0u, data.num_incomplete_tiles); |
| 1567 EXPECT_FALSE(active_layer_->only_used_low_res_last_append_quads()); |
| 1568 } |
| 1569 |
| 1570 TEST_F(PictureLayerImplTest, HighResTileIsIncomplete) { |
| 1571 base::TimeTicks time_ticks; |
| 1572 time_ticks += base::TimeDelta::FromMilliseconds(1); |
| 1573 host_impl_.SetCurrentBeginFrameArgs( |
| 1574 CreateBeginFrameArgsForTesting(time_ticks)); |
| 1575 |
| 1576 gfx::Size tile_size(100, 100); |
| 1577 gfx::Size layer_bounds(200, 200); |
| 1578 |
| 1579 host_impl_.SetViewportSize(layer_bounds); |
| 1580 |
| 1581 scoped_refptr<FakePicturePileImpl> pending_pile = |
| 1582 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
| 1583 SetupPendingTree(pending_pile); |
| 1584 ActivateTree(); |
| 1585 |
| 1586 active_layer_->set_fixed_tile_size(tile_size); |
| 1587 host_impl_.active_tree()->UpdateDrawProperties(); |
| 1588 |
| 1589 scoped_ptr<RenderPass> render_pass = RenderPass::Create(); |
| 1590 AppendQuadsData data; |
| 1591 active_layer_->WillDraw(DRAW_MODE_SOFTWARE, NULL); |
| 1592 active_layer_->AppendQuads(render_pass.get(), Occlusion(), &data); |
| 1593 active_layer_->DidDraw(NULL); |
| 1594 |
| 1595 EXPECT_EQ(1u, render_pass->quad_list.size()); |
| 1596 EXPECT_EQ(1u, data.num_missing_tiles); |
| 1597 EXPECT_EQ(0u, data.num_incomplete_tiles); |
| 1598 EXPECT_TRUE(active_layer_->only_used_low_res_last_append_quads()); |
| 1599 } |
| 1600 |
| 1601 TEST_F(PictureLayerImplTest, HighResTileIsIncompleteLowResComplete) { |
| 1602 base::TimeTicks time_ticks; |
| 1603 time_ticks += base::TimeDelta::FromMilliseconds(1); |
| 1604 host_impl_.SetCurrentBeginFrameArgs( |
| 1605 CreateBeginFrameArgsForTesting(time_ticks)); |
| 1606 |
| 1607 gfx::Size tile_size(100, 100); |
| 1608 gfx::Size layer_bounds(200, 200); |
| 1609 |
| 1610 host_impl_.SetViewportSize(layer_bounds); |
| 1611 |
| 1612 scoped_refptr<FakePicturePileImpl> pending_pile = |
| 1613 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
| 1614 SetupPendingTree(pending_pile); |
| 1615 ActivateTree(); |
| 1616 |
| 1617 active_layer_->set_fixed_tile_size(tile_size); |
| 1618 host_impl_.active_tree()->UpdateDrawProperties(); |
| 1619 std::vector<Tile*> low_tiles = |
| 1620 active_layer_->tilings()->tiling_at(1)->AllTilesForTesting(); |
| 1621 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(low_tiles); |
| 1622 |
| 1623 scoped_ptr<RenderPass> render_pass = RenderPass::Create(); |
| 1624 AppendQuadsData data; |
| 1625 active_layer_->WillDraw(DRAW_MODE_SOFTWARE, NULL); |
| 1626 active_layer_->AppendQuads(render_pass.get(), Occlusion(), &data); |
| 1627 active_layer_->DidDraw(NULL); |
| 1628 |
| 1629 EXPECT_EQ(1u, render_pass->quad_list.size()); |
| 1630 EXPECT_EQ(0u, data.num_missing_tiles); |
| 1631 EXPECT_EQ(1u, data.num_incomplete_tiles); |
| 1632 EXPECT_TRUE(active_layer_->only_used_low_res_last_append_quads()); |
| 1610 } | 1633 } |
| 1611 | 1634 |
| 1612 TEST_F(PictureLayerImplTest, LowResTileIsIncomplete) { | 1635 TEST_F(PictureLayerImplTest, LowResTileIsIncomplete) { |
| 1613 base::TimeTicks time_ticks; | 1636 base::TimeTicks time_ticks; |
| 1614 time_ticks += base::TimeDelta::FromMilliseconds(1); | 1637 time_ticks += base::TimeDelta::FromMilliseconds(1); |
| 1615 host_impl_.SetCurrentBeginFrameArgs( | 1638 host_impl_.SetCurrentBeginFrameArgs( |
| 1616 CreateBeginFrameArgsForTesting(time_ticks)); | 1639 CreateBeginFrameArgsForTesting(time_ticks)); |
| 1617 | 1640 |
| 1618 gfx::Size tile_size(100, 100); | 1641 gfx::Size tile_size(100, 100); |
| 1619 gfx::Size layer_bounds(200, 200); | 1642 gfx::Size layer_bounds(200, 200); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 1641 scoped_ptr<RenderPass> render_pass = RenderPass::Create(); | 1664 scoped_ptr<RenderPass> render_pass = RenderPass::Create(); |
| 1642 AppendQuadsData data; | 1665 AppendQuadsData data; |
| 1643 active_layer_->WillDraw(DRAW_MODE_SOFTWARE, NULL); | 1666 active_layer_->WillDraw(DRAW_MODE_SOFTWARE, NULL); |
| 1644 active_layer_->AppendQuads(render_pass.get(), Occlusion(), &data); | 1667 active_layer_->AppendQuads(render_pass.get(), Occlusion(), &data); |
| 1645 active_layer_->DidDraw(NULL); | 1668 active_layer_->DidDraw(NULL); |
| 1646 | 1669 |
| 1647 // The missing high res tile was replaced by a low res tile. | 1670 // The missing high res tile was replaced by a low res tile. |
| 1648 EXPECT_EQ(9u, render_pass->quad_list.size()); | 1671 EXPECT_EQ(9u, render_pass->quad_list.size()); |
| 1649 EXPECT_EQ(0u, data.num_missing_tiles); | 1672 EXPECT_EQ(0u, data.num_missing_tiles); |
| 1650 EXPECT_EQ(1u, data.num_incomplete_tiles); | 1673 EXPECT_EQ(1u, data.num_incomplete_tiles); |
| 1674 EXPECT_FALSE(active_layer_->only_used_low_res_last_append_quads()); |
| 1651 } | 1675 } |
| 1652 | 1676 |
| 1653 TEST_F(PictureLayerImplTest, | 1677 TEST_F(PictureLayerImplTest, |
| 1654 HighResAndIdealResTileIsCompleteWhenRasterScaleIsNotIdeal) { | 1678 HighResAndIdealResTileIsCompleteWhenRasterScaleIsNotIdeal) { |
| 1655 base::TimeTicks time_ticks; | 1679 base::TimeTicks time_ticks; |
| 1656 time_ticks += base::TimeDelta::FromMilliseconds(1); | 1680 time_ticks += base::TimeDelta::FromMilliseconds(1); |
| 1657 host_impl_.SetCurrentBeginFrameArgs( | 1681 host_impl_.SetCurrentBeginFrameArgs( |
| 1658 CreateBeginFrameArgsForTesting(time_ticks)); | 1682 CreateBeginFrameArgsForTesting(time_ticks)); |
| 1659 | 1683 |
| 1660 gfx::Size tile_size(100, 100); | 1684 gfx::Size tile_size(100, 100); |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1710 EXPECT_EQ(gfx::SizeF(99.f, 99.f), | 1734 EXPECT_EQ(gfx::SizeF(99.f, 99.f), |
| 1711 TileDrawQuad::MaterialCast(render_pass->quad_list.front()) | 1735 TileDrawQuad::MaterialCast(render_pass->quad_list.front()) |
| 1712 ->tex_coord_rect.size()); | 1736 ->tex_coord_rect.size()); |
| 1713 EXPECT_EQ(gfx::SizeF(49.5f, 49.5f), | 1737 EXPECT_EQ(gfx::SizeF(49.5f, 49.5f), |
| 1714 TileDrawQuad::MaterialCast(render_pass->quad_list.ElementAt(1)) | 1738 TileDrawQuad::MaterialCast(render_pass->quad_list.ElementAt(1)) |
| 1715 ->tex_coord_rect.size()); | 1739 ->tex_coord_rect.size()); |
| 1716 | 1740 |
| 1717 // Neither the high res nor the ideal tiles were considered as incomplete. | 1741 // Neither the high res nor the ideal tiles were considered as incomplete. |
| 1718 EXPECT_EQ(0u, data.num_missing_tiles); | 1742 EXPECT_EQ(0u, data.num_missing_tiles); |
| 1719 EXPECT_EQ(0u, data.num_incomplete_tiles); | 1743 EXPECT_EQ(0u, data.num_incomplete_tiles); |
| 1744 EXPECT_FALSE(active_layer_->only_used_low_res_last_append_quads()); |
| 1720 } | 1745 } |
| 1721 | 1746 |
| 1722 TEST_F(PictureLayerImplTest, HighResRequiredWhenUnsharedActiveAllReady) { | 1747 TEST_F(PictureLayerImplTest, HighResRequiredWhenUnsharedActiveAllReady) { |
| 1723 gfx::Size layer_bounds(400, 400); | 1748 gfx::Size layer_bounds(400, 400); |
| 1724 gfx::Size tile_size(100, 100); | 1749 gfx::Size tile_size(100, 100); |
| 1725 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size); | 1750 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size); |
| 1726 | 1751 |
| 1727 // No tiles shared. | 1752 // No tiles shared. |
| 1728 pending_layer_->set_invalidation(gfx::Rect(layer_bounds)); | 1753 pending_layer_->set_invalidation(gfx::Rect(layer_bounds)); |
| 1729 | 1754 |
| 1730 CreateHighLowResAndSetAllTilesVisible(); | 1755 CreateHighLowResAndSetAllTilesVisible(); |
| 1731 | 1756 |
| 1732 active_layer_->SetAllTilesReady(); | 1757 active_layer_->SetAllTilesReady(); |
| 1733 | 1758 |
| 1734 // No shared tiles and all active tiles ready, so pending can only | 1759 // No shared tiles and all active tiles ready, so pending can only |
| 1735 // activate with all high res tiles. | 1760 // activate with all high res tiles. |
| 1736 pending_layer_->MarkVisibleResourcesAsRequired(); | 1761 pending_layer_->HighResTiling()->UpdateAllTilePrioritiesForTesting(); |
| 1762 pending_layer_->LowResTiling()->UpdateAllTilePrioritiesForTesting(); |
| 1763 |
| 1737 AssertAllTilesRequired(pending_layer_->HighResTiling()); | 1764 AssertAllTilesRequired(pending_layer_->HighResTiling()); |
| 1738 AssertNoTilesRequired(pending_layer_->LowResTiling()); | 1765 AssertNoTilesRequired(pending_layer_->LowResTiling()); |
| 1739 } | 1766 } |
| 1740 | 1767 |
| 1741 TEST_F(PictureLayerImplTest, HighResRequiredWhenMissingHighResFlagOn) { | 1768 TEST_F(PictureLayerImplTest, HighResRequiredWhenMissingHighResFlagOn) { |
| 1742 gfx::Size layer_bounds(400, 400); | 1769 gfx::Size layer_bounds(400, 400); |
| 1743 gfx::Size tile_size(100, 100); | 1770 gfx::Size tile_size(100, 100); |
| 1744 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size); | 1771 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size); |
| 1745 | 1772 |
| 1746 // All tiles shared (no invalidation). | 1773 // All tiles shared (no invalidation). |
| 1747 CreateHighLowResAndSetAllTilesVisible(); | 1774 CreateHighLowResAndSetAllTilesVisible(); |
| 1748 | 1775 |
| 1749 // Verify active tree not ready. | 1776 // Verify active tree not ready. |
| 1750 Tile* some_active_tile = | 1777 Tile* some_active_tile = |
| 1751 active_layer_->HighResTiling()->AllTilesForTesting()[0]; | 1778 active_layer_->HighResTiling()->AllTilesForTesting()[0]; |
| 1752 EXPECT_FALSE(some_active_tile->IsReadyToDraw()); | 1779 EXPECT_FALSE(some_active_tile->IsReadyToDraw()); |
| 1753 | 1780 |
| 1754 // When high res are required, even if the active tree is not ready, | 1781 // When high res are required, even if the active tree is not ready, |
| 1755 // the high res tiles must be ready. | 1782 // the high res tiles must be ready. |
| 1756 host_impl_.SetRequiresHighResToDraw(); | 1783 host_impl_.SetRequiresHighResToDraw(); |
| 1757 pending_layer_->MarkVisibleResourcesAsRequired(); | 1784 |
| 1785 pending_layer_->HighResTiling()->UpdateAllTilePrioritiesForTesting(); |
| 1786 pending_layer_->LowResTiling()->UpdateAllTilePrioritiesForTesting(); |
| 1787 |
| 1758 AssertAllTilesRequired(pending_layer_->HighResTiling()); | 1788 AssertAllTilesRequired(pending_layer_->HighResTiling()); |
| 1759 AssertNoTilesRequired(pending_layer_->LowResTiling()); | 1789 AssertNoTilesRequired(pending_layer_->LowResTiling()); |
| 1760 } | 1790 } |
| 1761 | 1791 |
| 1762 TEST_F(PictureLayerImplTest, NothingRequiredIfAllHighResTilesShared) { | 1792 TEST_F(PictureLayerImplTest, AllHighResRequiredEvenIfShared) { |
| 1763 gfx::Size layer_bounds(400, 400); | 1793 gfx::Size layer_bounds(400, 400); |
| 1764 gfx::Size tile_size(100, 100); | 1794 gfx::Size tile_size(100, 100); |
| 1765 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size); | 1795 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size); |
| 1766 | 1796 |
| 1767 CreateHighLowResAndSetAllTilesVisible(); | 1797 CreateHighLowResAndSetAllTilesVisible(); |
| 1768 | 1798 |
| 1769 Tile* some_active_tile = | 1799 Tile* some_active_tile = |
| 1770 active_layer_->HighResTiling()->AllTilesForTesting()[0]; | 1800 active_layer_->HighResTiling()->AllTilesForTesting()[0]; |
| 1771 EXPECT_FALSE(some_active_tile->IsReadyToDraw()); | 1801 EXPECT_FALSE(some_active_tile->IsReadyToDraw()); |
| 1772 | 1802 |
| 1773 // All tiles shared (no invalidation), so even though the active tree's | 1803 // All tiles shared (no invalidation), so even though the active tree's |
| 1774 // tiles aren't ready, there is nothing required. | 1804 // tiles aren't ready, the high res tiles are required for activation. |
| 1775 pending_layer_->MarkVisibleResourcesAsRequired(); | 1805 pending_layer_->HighResTiling()->UpdateAllTilePrioritiesForTesting(); |
| 1806 pending_layer_->LowResTiling()->UpdateAllTilePrioritiesForTesting(); |
| 1807 |
| 1808 AssertAllTilesRequired(pending_layer_->HighResTiling()); |
| 1809 AssertNoTilesRequired(pending_layer_->LowResTiling()); |
| 1810 } |
| 1811 |
| 1812 TEST_F(PictureLayerImplTest, DisallowRequiredForActivation) { |
| 1813 gfx::Size layer_bounds(400, 400); |
| 1814 gfx::Size tile_size(100, 100); |
| 1815 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size); |
| 1816 |
| 1817 CreateHighLowResAndSetAllTilesVisible(); |
| 1818 |
| 1819 Tile* some_active_tile = |
| 1820 active_layer_->HighResTiling()->AllTilesForTesting()[0]; |
| 1821 EXPECT_FALSE(some_active_tile->IsReadyToDraw()); |
| 1822 |
| 1823 pending_layer_->HighResTiling()->set_can_require_tiles_for_activation(false); |
| 1824 pending_layer_->LowResTiling()->set_can_require_tiles_for_activation(false); |
| 1825 |
| 1826 // If we disallow required for activation, no tiles can be required. |
| 1827 pending_layer_->HighResTiling()->UpdateAllTilePrioritiesForTesting(); |
| 1828 pending_layer_->LowResTiling()->UpdateAllTilePrioritiesForTesting(); |
| 1829 |
| 1776 AssertNoTilesRequired(pending_layer_->HighResTiling()); | 1830 AssertNoTilesRequired(pending_layer_->HighResTiling()); |
| 1777 AssertNoTilesRequired(pending_layer_->LowResTiling()); | 1831 AssertNoTilesRequired(pending_layer_->LowResTiling()); |
| 1778 } | 1832 } |
| 1779 | 1833 |
| 1780 TEST_F(PictureLayerImplTest, NothingRequiredIfActiveMissingTiles) { | 1834 TEST_F(PictureLayerImplTest, NothingRequiredIfActiveMissingTiles) { |
| 1781 gfx::Size layer_bounds(400, 400); | 1835 gfx::Size layer_bounds(400, 400); |
| 1782 gfx::Size tile_size(100, 100); | 1836 gfx::Size tile_size(100, 100); |
| 1783 scoped_refptr<FakePicturePileImpl> pending_pile = | 1837 scoped_refptr<FakePicturePileImpl> pending_pile = |
| 1784 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 1838 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
| 1785 // This pile will create tilings, but has no recordings so will not create any | 1839 // This pile will create tilings, but has no recordings so will not create any |
| 1786 // tiles. This is attempting to simulate scrolling past the end of recorded | 1840 // tiles. This is attempting to simulate scrolling past the end of recorded |
| 1787 // content on the active layer, where the recordings are so far away that | 1841 // content on the active layer, where the recordings are so far away that |
| 1788 // no tiles are created. | 1842 // no tiles are created. |
| 1789 scoped_refptr<FakePicturePileImpl> active_pile = | 1843 scoped_refptr<FakePicturePileImpl> active_pile = |
| 1790 FakePicturePileImpl::CreateEmptyPileThatThinksItHasRecordings( | 1844 FakePicturePileImpl::CreateEmptyPileThatThinksItHasRecordings( |
| 1791 tile_size, layer_bounds); | 1845 tile_size, layer_bounds); |
| 1792 SetupTrees(pending_pile, active_pile); | 1846 SetupTrees(pending_pile, active_pile); |
| 1793 pending_layer_->set_fixed_tile_size(tile_size); | 1847 pending_layer_->set_fixed_tile_size(tile_size); |
| 1794 active_layer_->set_fixed_tile_size(tile_size); | 1848 active_layer_->set_fixed_tile_size(tile_size); |
| 1795 | 1849 |
| 1796 CreateHighLowResAndSetAllTilesVisible(); | 1850 CreateHighLowResAndSetAllTilesVisible(); |
| 1797 | 1851 |
| 1798 // Active layer has tilings, but no tiles due to missing recordings. | 1852 // Active layer has tilings, but no tiles due to missing recordings. |
| 1799 EXPECT_TRUE(active_layer_->CanHaveTilings()); | 1853 EXPECT_TRUE(active_layer_->CanHaveTilings()); |
| 1800 EXPECT_EQ(active_layer_->tilings()->num_tilings(), 2u); | 1854 EXPECT_EQ(active_layer_->tilings()->num_tilings(), 2u); |
| 1801 EXPECT_EQ(active_layer_->HighResTiling()->AllTilesForTesting().size(), 0u); | 1855 EXPECT_EQ(active_layer_->HighResTiling()->AllTilesForTesting().size(), 0u); |
| 1802 | 1856 |
| 1803 // Since the active layer has no tiles at all, the pending layer doesn't | 1857 // Since the active layer has no tiles at all, the pending layer doesn't |
| 1804 // need content in order to activate. | 1858 // need content in order to activate. |
| 1805 pending_layer_->MarkVisibleResourcesAsRequired(); | 1859 pending_layer_->HighResTiling()->UpdateAllTilePrioritiesForTesting(); |
| 1860 pending_layer_->LowResTiling()->UpdateAllTilePrioritiesForTesting(); |
| 1861 |
| 1806 AssertNoTilesRequired(pending_layer_->HighResTiling()); | 1862 AssertNoTilesRequired(pending_layer_->HighResTiling()); |
| 1807 AssertNoTilesRequired(pending_layer_->LowResTiling()); | 1863 AssertNoTilesRequired(pending_layer_->LowResTiling()); |
| 1808 } | 1864 } |
| 1809 | 1865 |
| 1810 TEST_F(PictureLayerImplTest, HighResRequiredIfActiveCantHaveTiles) { | 1866 TEST_F(PictureLayerImplTest, HighResRequiredIfActiveCantHaveTiles) { |
| 1811 gfx::Size layer_bounds(400, 400); | 1867 gfx::Size layer_bounds(400, 400); |
| 1812 gfx::Size tile_size(100, 100); | 1868 gfx::Size tile_size(100, 100); |
| 1813 scoped_refptr<FakePicturePileImpl> pending_pile = | 1869 scoped_refptr<FakePicturePileImpl> pending_pile = |
| 1814 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 1870 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
| 1815 scoped_refptr<FakePicturePileImpl> active_pile = | 1871 scoped_refptr<FakePicturePileImpl> active_pile = |
| 1816 FakePicturePileImpl::CreateEmptyPile(tile_size, layer_bounds); | 1872 FakePicturePileImpl::CreateEmptyPile(tile_size, layer_bounds); |
| 1817 SetupTrees(pending_pile, active_pile); | 1873 SetupTrees(pending_pile, active_pile); |
| 1818 pending_layer_->set_fixed_tile_size(tile_size); | 1874 pending_layer_->set_fixed_tile_size(tile_size); |
| 1819 active_layer_->set_fixed_tile_size(tile_size); | 1875 active_layer_->set_fixed_tile_size(tile_size); |
| 1820 | 1876 |
| 1821 CreateHighLowResAndSetAllTilesVisible(); | 1877 CreateHighLowResAndSetAllTilesVisible(); |
| 1822 | 1878 |
| 1823 // Active layer can't have tiles. | 1879 // Active layer can't have tiles. |
| 1824 EXPECT_FALSE(active_layer_->CanHaveTilings()); | 1880 EXPECT_FALSE(active_layer_->CanHaveTilings()); |
| 1825 | 1881 |
| 1826 // All high res tiles required. This should be considered identical | 1882 // All high res tiles required. This should be considered identical |
| 1827 // to the case where there is no active layer, to avoid flashing content. | 1883 // to the case where there is no active layer, to avoid flashing content. |
| 1828 // This can happen if a layer exists for a while and switches from | 1884 // This can happen if a layer exists for a while and switches from |
| 1829 // not being able to have content to having content. | 1885 // not being able to have content to having content. |
| 1830 pending_layer_->MarkVisibleResourcesAsRequired(); | 1886 pending_layer_->HighResTiling()->UpdateAllTilePrioritiesForTesting(); |
| 1887 pending_layer_->LowResTiling()->UpdateAllTilePrioritiesForTesting(); |
| 1888 |
| 1831 AssertAllTilesRequired(pending_layer_->HighResTiling()); | 1889 AssertAllTilesRequired(pending_layer_->HighResTiling()); |
| 1832 AssertNoTilesRequired(pending_layer_->LowResTiling()); | 1890 AssertNoTilesRequired(pending_layer_->LowResTiling()); |
| 1833 } | 1891 } |
| 1834 | 1892 |
| 1835 TEST_F(PictureLayerImplTest, HighResRequiredWhenActiveHasDifferentBounds) { | 1893 TEST_F(PictureLayerImplTest, HighResRequiredWhenActiveHasDifferentBounds) { |
| 1836 gfx::Size layer_bounds(200, 200); | 1894 gfx::Size layer_bounds(200, 200); |
| 1837 gfx::Size tile_size(100, 100); | 1895 gfx::Size tile_size(100, 100); |
| 1838 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size); | 1896 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size); |
| 1839 | 1897 |
| 1840 gfx::Size pending_layer_bounds(400, 400); | 1898 gfx::Size pending_layer_bounds(400, 400); |
| 1841 pending_layer_->SetBounds(pending_layer_bounds); | 1899 pending_layer_->SetBounds(pending_layer_bounds); |
| 1842 | 1900 |
| 1843 CreateHighLowResAndSetAllTilesVisible(); | 1901 CreateHighLowResAndSetAllTilesVisible(); |
| 1902 // TODO(vmpstr): This is confusing. Rework the test to create different bounds |
| 1903 // on different trees instead of fudging tilings. |
| 1904 pending_layer_->HighResTiling()->ComputeTilePriorityRects( |
| 1905 PENDING_TREE, gfx::Rect(pending_layer_bounds), 1.f, 1.f, Occlusion()); |
| 1844 | 1906 |
| 1907 pending_layer_->HighResTiling()->UpdateAllTilePrioritiesForTesting(); |
| 1845 active_layer_->SetAllTilesReady(); | 1908 active_layer_->SetAllTilesReady(); |
| 1846 | 1909 |
| 1847 // Since the active layer has different bounds, the pending layer needs all | 1910 // Since the active layer has different bounds, the pending layer needs all |
| 1848 // high res tiles in order to activate. | 1911 // high res tiles in order to activate. |
| 1849 pending_layer_->MarkVisibleResourcesAsRequired(); | 1912 pending_layer_->HighResTiling()->UpdateAllTilePrioritiesForTesting(); |
| 1913 pending_layer_->LowResTiling()->UpdateAllTilePrioritiesForTesting(); |
| 1914 |
| 1850 AssertAllTilesRequired(pending_layer_->HighResTiling()); | 1915 AssertAllTilesRequired(pending_layer_->HighResTiling()); |
| 1851 AssertNoTilesRequired(pending_layer_->LowResTiling()); | 1916 AssertNoTilesRequired(pending_layer_->LowResTiling()); |
| 1852 } | 1917 } |
| 1853 | 1918 |
| 1854 TEST_F(PictureLayerImplTest, ActivateUninitializedLayer) { | 1919 TEST_F(PictureLayerImplTest, ActivateUninitializedLayer) { |
| 1855 gfx::Size tile_size(100, 100); | 1920 gfx::Size tile_size(100, 100); |
| 1856 gfx::Size layer_bounds(400, 400); | 1921 gfx::Size layer_bounds(400, 400); |
| 1857 scoped_refptr<FakePicturePileImpl> pending_pile = | 1922 scoped_refptr<FakePicturePileImpl> pending_pile = |
| 1858 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 1923 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
| 1859 | 1924 |
| (...skipping 828 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2688 for (size_t i = 0; i < tilings.size(); ++i) { | 2753 for (size_t i = 0; i < tilings.size(); ++i) { |
| 2689 PictureLayerTiling* tiling = tilings.at(i); | 2754 PictureLayerTiling* tiling = tilings.at(i); |
| 2690 for (PictureLayerTiling::CoverageIterator iter( | 2755 for (PictureLayerTiling::CoverageIterator iter( |
| 2691 tiling, | 2756 tiling, |
| 2692 pending_layer_->contents_scale_x(), | 2757 pending_layer_->contents_scale_x(), |
| 2693 pending_layer_->visible_content_rect()); | 2758 pending_layer_->visible_content_rect()); |
| 2694 iter; | 2759 iter; |
| 2695 ++iter) { | 2760 ++iter) { |
| 2696 if (mark_required) { | 2761 if (mark_required) { |
| 2697 number_of_marked_tiles++; | 2762 number_of_marked_tiles++; |
| 2698 iter->MarkRequiredForActivation(); | 2763 iter->set_required_for_activation(true); |
| 2699 } else { | 2764 } else { |
| 2700 number_of_unmarked_tiles++; | 2765 number_of_unmarked_tiles++; |
| 2701 } | 2766 } |
| 2702 mark_required = !mark_required; | 2767 mark_required = !mark_required; |
| 2703 } | 2768 } |
| 2704 } | 2769 } |
| 2705 | 2770 |
| 2706 // Sanity checks. | 2771 // Sanity checks. |
| 2707 EXPECT_EQ(91u, all_tiles.size()); | 2772 EXPECT_EQ(91u, all_tiles.size()); |
| 2708 EXPECT_EQ(91u, all_tiles_set.size()); | 2773 EXPECT_EQ(91u, all_tiles_set.size()); |
| (...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2900 gfx::Size tile_size(100, 100); | 2965 gfx::Size tile_size(100, 100); |
| 2901 gfx::Size layer_bounds(1000, 1000); | 2966 gfx::Size layer_bounds(1000, 1000); |
| 2902 | 2967 |
| 2903 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size); | 2968 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size); |
| 2904 | 2969 |
| 2905 // Make sure some tiles are not shared. | 2970 // Make sure some tiles are not shared. |
| 2906 pending_layer_->set_invalidation(gfx::Rect(gfx::Point(50, 50), tile_size)); | 2971 pending_layer_->set_invalidation(gfx::Rect(gfx::Point(50, 50), tile_size)); |
| 2907 | 2972 |
| 2908 CreateHighLowResAndSetAllTilesVisible(); | 2973 CreateHighLowResAndSetAllTilesVisible(); |
| 2909 active_layer_->SetAllTilesReady(); | 2974 active_layer_->SetAllTilesReady(); |
| 2910 pending_layer_->MarkVisibleResourcesAsRequired(); | |
| 2911 | 2975 |
| 2912 // All pending layer tiles required are not ready. | 2976 // All pending layer tiles required are not ready. |
| 2913 EXPECT_FALSE(pending_layer_->AllTilesRequiredForActivationAreReadyToDraw()); | 2977 EXPECT_FALSE(pending_layer_->AllTilesRequiredForActivationAreReadyToDraw()); |
| 2914 | 2978 |
| 2915 // Initialize all low-res tiles. | 2979 // Initialize all low-res tiles. |
| 2916 pending_layer_->SetAllTilesReadyInTiling(pending_layer_->LowResTiling()); | 2980 pending_layer_->SetAllTilesReadyInTiling(pending_layer_->LowResTiling()); |
| 2917 | 2981 |
| 2918 // Low-res tiles should not be enough. | 2982 // Low-res tiles should not be enough. |
| 2919 EXPECT_FALSE(pending_layer_->AllTilesRequiredForActivationAreReadyToDraw()); | 2983 EXPECT_FALSE(pending_layer_->AllTilesRequiredForActivationAreReadyToDraw()); |
| 2920 | 2984 |
| 2921 // Initialize remaining tiles. | 2985 // Initialize remaining tiles. |
| 2922 pending_layer_->SetAllTilesReady(); | 2986 pending_layer_->SetAllTilesReady(); |
| 2923 | 2987 |
| 2924 EXPECT_TRUE(pending_layer_->AllTilesRequiredForActivationAreReadyToDraw()); | 2988 EXPECT_TRUE(pending_layer_->AllTilesRequiredForActivationAreReadyToDraw()); |
| 2925 } | 2989 } |
| 2926 | 2990 |
| 2927 TEST_F(PictureLayerImplTest, HighResReadyToDrawEnoughToActivate) { | 2991 TEST_F(PictureLayerImplTest, HighResReadyToDrawEnoughToActivate) { |
| 2928 gfx::Size tile_size(100, 100); | 2992 gfx::Size tile_size(100, 100); |
| 2929 gfx::Size layer_bounds(1000, 1000); | 2993 gfx::Size layer_bounds(1000, 1000); |
| 2930 | 2994 |
| 2931 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size); | 2995 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size); |
| 2932 | 2996 |
| 2933 // Make sure some tiles are not shared. | 2997 // Make sure some tiles are not shared. |
| 2934 pending_layer_->set_invalidation(gfx::Rect(gfx::Point(50, 50), tile_size)); | 2998 pending_layer_->set_invalidation(gfx::Rect(gfx::Point(50, 50), tile_size)); |
| 2935 | 2999 |
| 2936 CreateHighLowResAndSetAllTilesVisible(); | 3000 CreateHighLowResAndSetAllTilesVisible(); |
| 2937 active_layer_->SetAllTilesReady(); | 3001 active_layer_->SetAllTilesReady(); |
| 2938 pending_layer_->MarkVisibleResourcesAsRequired(); | |
| 2939 | 3002 |
| 2940 // All pending layer tiles required are not ready. | 3003 // All pending layer tiles required are not ready. |
| 2941 EXPECT_FALSE(pending_layer_->AllTilesRequiredForActivationAreReadyToDraw()); | 3004 EXPECT_FALSE(pending_layer_->AllTilesRequiredForActivationAreReadyToDraw()); |
| 2942 | 3005 |
| 2943 // Initialize all high-res tiles. | 3006 // Initialize all high-res tiles. |
| 2944 pending_layer_->SetAllTilesReadyInTiling(pending_layer_->HighResTiling()); | 3007 pending_layer_->SetAllTilesReadyInTiling(pending_layer_->HighResTiling()); |
| 2945 | 3008 |
| 2946 // High-res tiles should be enough, since they cover everything visible. | 3009 // High-res tiles should be enough, since they cover everything visible. |
| 2947 EXPECT_TRUE(pending_layer_->AllTilesRequiredForActivationAreReadyToDraw()); | 3010 EXPECT_TRUE(pending_layer_->AllTilesRequiredForActivationAreReadyToDraw()); |
| 2948 } | 3011 } |
| 2949 | 3012 |
| 2950 TEST_F(PictureLayerImplTest, | 3013 TEST_F(PictureLayerImplTest, |
| 2951 SharedActiveHighResReadyAndPendingLowResReadyNotEnoughToActivate) { | 3014 SharedActiveHighResReadyAndPendingLowResReadyNotEnoughToActivate) { |
| 2952 gfx::Size tile_size(100, 100); | 3015 gfx::Size tile_size(100, 100); |
| 2953 gfx::Size layer_bounds(1000, 1000); | 3016 gfx::Size layer_bounds(1000, 1000); |
| 2954 | 3017 |
| 2955 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size); | 3018 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size); |
| 2956 | 3019 |
| 2957 // Make sure some tiles are not shared. | 3020 // Make sure some tiles are not shared. |
| 2958 pending_layer_->set_invalidation(gfx::Rect(gfx::Point(50, 50), tile_size)); | 3021 pending_layer_->set_invalidation(gfx::Rect(gfx::Point(50, 50), tile_size)); |
| 2959 | 3022 |
| 2960 CreateHighLowResAndSetAllTilesVisible(); | 3023 CreateHighLowResAndSetAllTilesVisible(); |
| 2961 | 3024 |
| 2962 // Initialize all high-res tiles in the active layer. | 3025 // Initialize all high-res tiles in the active layer. |
| 2963 active_layer_->SetAllTilesReadyInTiling(active_layer_->HighResTiling()); | 3026 active_layer_->SetAllTilesReadyInTiling(active_layer_->HighResTiling()); |
| 2964 // And all the low-res tiles in the pending layer. | 3027 // And all the low-res tiles in the pending layer. |
| 2965 pending_layer_->SetAllTilesReadyInTiling(pending_layer_->LowResTiling()); | 3028 pending_layer_->SetAllTilesReadyInTiling(pending_layer_->LowResTiling()); |
| 2966 | 3029 |
| 2967 pending_layer_->MarkVisibleResourcesAsRequired(); | |
| 2968 | |
| 2969 // The unshared high-res tiles are not ready, so we cannot activate. | 3030 // The unshared high-res tiles are not ready, so we cannot activate. |
| 2970 EXPECT_FALSE(pending_layer_->AllTilesRequiredForActivationAreReadyToDraw()); | 3031 EXPECT_FALSE(pending_layer_->AllTilesRequiredForActivationAreReadyToDraw()); |
| 2971 | 3032 |
| 2972 // When the unshared pending high-res tiles are ready, we can activate. | 3033 // When the unshared pending high-res tiles are ready, we can activate. |
| 2973 pending_layer_->SetAllTilesReadyInTiling(pending_layer_->HighResTiling()); | 3034 pending_layer_->SetAllTilesReadyInTiling(pending_layer_->HighResTiling()); |
| 2974 EXPECT_TRUE(pending_layer_->AllTilesRequiredForActivationAreReadyToDraw()); | 3035 EXPECT_TRUE(pending_layer_->AllTilesRequiredForActivationAreReadyToDraw()); |
| 2975 } | 3036 } |
| 2976 | 3037 |
| 2977 TEST_F(PictureLayerImplTest, SharedActiveHighResReadyNotEnoughToActivate) { | 3038 TEST_F(PictureLayerImplTest, SharedActiveHighResReadyNotEnoughToActivate) { |
| 2978 gfx::Size tile_size(100, 100); | 3039 gfx::Size tile_size(100, 100); |
| 2979 gfx::Size layer_bounds(1000, 1000); | 3040 gfx::Size layer_bounds(1000, 1000); |
| 2980 | 3041 |
| 2981 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size); | 3042 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size); |
| 2982 | 3043 |
| 2983 // Make sure some tiles are not shared. | 3044 // Make sure some tiles are not shared. |
| 2984 pending_layer_->set_invalidation(gfx::Rect(gfx::Point(50, 50), tile_size)); | 3045 pending_layer_->set_invalidation(gfx::Rect(gfx::Point(50, 50), tile_size)); |
| 2985 | 3046 |
| 2986 CreateHighLowResAndSetAllTilesVisible(); | 3047 CreateHighLowResAndSetAllTilesVisible(); |
| 2987 | 3048 |
| 2988 // Initialize all high-res tiles in the active layer. | 3049 // Initialize all high-res tiles in the active layer. |
| 2989 active_layer_->SetAllTilesReadyInTiling(active_layer_->HighResTiling()); | 3050 active_layer_->SetAllTilesReadyInTiling(active_layer_->HighResTiling()); |
| 2990 | 3051 |
| 2991 pending_layer_->MarkVisibleResourcesAsRequired(); | |
| 2992 | |
| 2993 // The unshared high-res tiles are not ready, so we cannot activate. | 3052 // The unshared high-res tiles are not ready, so we cannot activate. |
| 2994 EXPECT_FALSE(pending_layer_->AllTilesRequiredForActivationAreReadyToDraw()); | 3053 EXPECT_FALSE(pending_layer_->AllTilesRequiredForActivationAreReadyToDraw()); |
| 2995 | 3054 |
| 2996 // When the unshared pending high-res tiles are ready, we can activate. | 3055 // When the unshared pending high-res tiles are ready, we can activate. |
| 2997 pending_layer_->SetAllTilesReadyInTiling(pending_layer_->HighResTiling()); | 3056 pending_layer_->SetAllTilesReadyInTiling(pending_layer_->HighResTiling()); |
| 2998 EXPECT_TRUE(pending_layer_->AllTilesRequiredForActivationAreReadyToDraw()); | 3057 EXPECT_TRUE(pending_layer_->AllTilesRequiredForActivationAreReadyToDraw()); |
| 2999 } | 3058 } |
| 3000 | 3059 |
| 3001 class NoLowResPictureLayerImplTest : public PictureLayerImplTest { | 3060 class NoLowResPictureLayerImplTest : public PictureLayerImplTest { |
| 3002 public: | 3061 public: |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3057 7.26f, // ideal contents scale | 3116 7.26f, // ideal contents scale |
| 3058 2.2f, // device scale | 3117 2.2f, // device scale |
| 3059 3.3f, // page scale | 3118 3.3f, // page scale |
| 3060 1.f, // maximum animation scale | 3119 1.f, // maximum animation scale |
| 3061 false); | 3120 false); |
| 3062 ASSERT_EQ(3u, pending_layer_->tilings()->num_tilings()); | 3121 ASSERT_EQ(3u, pending_layer_->tilings()->num_tilings()); |
| 3063 EXPECT_FLOAT_EQ(7.26f, | 3122 EXPECT_FLOAT_EQ(7.26f, |
| 3064 pending_layer_->tilings()->tiling_at(0)->contents_scale()); | 3123 pending_layer_->tilings()->tiling_at(0)->contents_scale()); |
| 3065 } | 3124 } |
| 3066 | 3125 |
| 3067 TEST_F(NoLowResPictureLayerImplTest, MarkRequiredNullTiles) { | 3126 TEST_F(NoLowResPictureLayerImplTest, AllHighResRequiredEvenIfShared) { |
| 3068 gfx::Size tile_size(100, 100); | |
| 3069 gfx::Size layer_bounds(1000, 1000); | |
| 3070 | |
| 3071 scoped_refptr<FakePicturePileImpl> pending_pile = | |
| 3072 FakePicturePileImpl::CreateEmptyPile(tile_size, layer_bounds); | |
| 3073 // Layers with entirely empty piles can't get tilings. | |
| 3074 pending_pile->AddRecordingAt(0, 0); | |
| 3075 | |
| 3076 SetupPendingTree(pending_pile); | |
| 3077 | |
| 3078 ASSERT_TRUE(pending_layer_->CanHaveTilings()); | |
| 3079 pending_layer_->AddTiling(1.0f); | |
| 3080 pending_layer_->AddTiling(2.0f); | |
| 3081 | |
| 3082 // It should be safe to call this (and MarkVisibleResourcesAsRequired) | |
| 3083 // on a layer with no recordings. | |
| 3084 host_impl_.pending_tree()->UpdateDrawProperties(); | |
| 3085 pending_layer_->MarkVisibleResourcesAsRequired(); | |
| 3086 } | |
| 3087 | |
| 3088 TEST_F(NoLowResPictureLayerImplTest, NothingRequiredIfAllHighResTilesShared) { | |
| 3089 gfx::Size layer_bounds(400, 400); | 3127 gfx::Size layer_bounds(400, 400); |
| 3090 gfx::Size tile_size(100, 100); | 3128 gfx::Size tile_size(100, 100); |
| 3091 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size); | 3129 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size); |
| 3092 | 3130 |
| 3093 CreateHighLowResAndSetAllTilesVisible(); | 3131 CreateHighLowResAndSetAllTilesVisible(); |
| 3094 | 3132 |
| 3095 Tile* some_active_tile = | 3133 Tile* some_active_tile = |
| 3096 active_layer_->HighResTiling()->AllTilesForTesting()[0]; | 3134 active_layer_->HighResTiling()->AllTilesForTesting()[0]; |
| 3097 EXPECT_FALSE(some_active_tile->IsReadyToDraw()); | 3135 EXPECT_FALSE(some_active_tile->IsReadyToDraw()); |
| 3098 | 3136 |
| 3099 // All tiles shared (no invalidation), so even though the active tree's | 3137 // All tiles shared (no invalidation), so even though the active tree's |
| 3100 // tiles aren't ready, there is nothing required. | 3138 // tiles aren't ready, there is nothing required. |
| 3101 pending_layer_->MarkVisibleResourcesAsRequired(); | 3139 pending_layer_->HighResTiling()->UpdateAllTilePrioritiesForTesting(); |
| 3102 AssertNoTilesRequired(pending_layer_->HighResTiling()); | 3140 if (host_impl_.settings().create_low_res_tiling) |
| 3103 if (host_impl_.settings().create_low_res_tiling) { | 3141 pending_layer_->LowResTiling()->UpdateAllTilePrioritiesForTesting(); |
| 3142 |
| 3143 AssertAllTilesRequired(pending_layer_->HighResTiling()); |
| 3144 if (host_impl_.settings().create_low_res_tiling) |
| 3104 AssertNoTilesRequired(pending_layer_->LowResTiling()); | 3145 AssertNoTilesRequired(pending_layer_->LowResTiling()); |
| 3105 } | |
| 3106 } | 3146 } |
| 3107 | 3147 |
| 3108 TEST_F(NoLowResPictureLayerImplTest, NothingRequiredIfActiveMissingTiles) { | 3148 TEST_F(NoLowResPictureLayerImplTest, NothingRequiredIfActiveMissingTiles) { |
| 3109 gfx::Size layer_bounds(400, 400); | 3149 gfx::Size layer_bounds(400, 400); |
| 3110 gfx::Size tile_size(100, 100); | 3150 gfx::Size tile_size(100, 100); |
| 3111 scoped_refptr<FakePicturePileImpl> pending_pile = | 3151 scoped_refptr<FakePicturePileImpl> pending_pile = |
| 3112 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 3152 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
| 3113 // This pile will create tilings, but has no recordings so will not create any | 3153 // This pile will create tilings, but has no recordings so will not create any |
| 3114 // tiles. This is attempting to simulate scrolling past the end of recorded | 3154 // tiles. This is attempting to simulate scrolling past the end of recorded |
| 3115 // content on the active layer, where the recordings are so far away that | 3155 // content on the active layer, where the recordings are so far away that |
| 3116 // no tiles are created. | 3156 // no tiles are created. |
| 3117 scoped_refptr<FakePicturePileImpl> active_pile = | 3157 scoped_refptr<FakePicturePileImpl> active_pile = |
| 3118 FakePicturePileImpl::CreateEmptyPileThatThinksItHasRecordings( | 3158 FakePicturePileImpl::CreateEmptyPileThatThinksItHasRecordings( |
| 3119 tile_size, layer_bounds); | 3159 tile_size, layer_bounds); |
| 3120 SetupTrees(pending_pile, active_pile); | 3160 SetupTrees(pending_pile, active_pile); |
| 3121 pending_layer_->set_fixed_tile_size(tile_size); | 3161 pending_layer_->set_fixed_tile_size(tile_size); |
| 3122 active_layer_->set_fixed_tile_size(tile_size); | 3162 active_layer_->set_fixed_tile_size(tile_size); |
| 3123 | 3163 |
| 3124 CreateHighLowResAndSetAllTilesVisible(); | 3164 CreateHighLowResAndSetAllTilesVisible(); |
| 3125 | 3165 |
| 3126 // Active layer has tilings, but no tiles due to missing recordings. | 3166 // Active layer has tilings, but no tiles due to missing recordings. |
| 3127 EXPECT_TRUE(active_layer_->CanHaveTilings()); | 3167 EXPECT_TRUE(active_layer_->CanHaveTilings()); |
| 3128 EXPECT_EQ(active_layer_->tilings()->num_tilings(), | 3168 EXPECT_EQ(active_layer_->tilings()->num_tilings(), |
| 3129 host_impl_.settings().create_low_res_tiling ? 2u : 1u); | 3169 host_impl_.settings().create_low_res_tiling ? 2u : 1u); |
| 3130 EXPECT_EQ(active_layer_->HighResTiling()->AllTilesForTesting().size(), 0u); | 3170 EXPECT_EQ(active_layer_->HighResTiling()->AllTilesForTesting().size(), 0u); |
| 3131 | 3171 |
| 3132 // Since the active layer has no tiles at all, the pending layer doesn't | 3172 // Since the active layer has no tiles at all, the pending layer doesn't |
| 3133 // need content in order to activate. | 3173 // need content in order to activate. |
| 3134 pending_layer_->MarkVisibleResourcesAsRequired(); | 3174 pending_layer_->HighResTiling()->UpdateAllTilePrioritiesForTesting(); |
| 3175 if (host_impl_.settings().create_low_res_tiling) |
| 3176 pending_layer_->LowResTiling()->UpdateAllTilePrioritiesForTesting(); |
| 3177 |
| 3135 AssertNoTilesRequired(pending_layer_->HighResTiling()); | 3178 AssertNoTilesRequired(pending_layer_->HighResTiling()); |
| 3136 if (host_impl_.settings().create_low_res_tiling) | 3179 if (host_impl_.settings().create_low_res_tiling) |
| 3137 AssertNoTilesRequired(pending_layer_->LowResTiling()); | 3180 AssertNoTilesRequired(pending_layer_->LowResTiling()); |
| 3138 } | 3181 } |
| 3139 | 3182 |
| 3140 TEST_F(NoLowResPictureLayerImplTest, InvalidViewportForPrioritizingTiles) { | 3183 TEST_F(NoLowResPictureLayerImplTest, InvalidViewportForPrioritizingTiles) { |
| 3141 base::TimeTicks time_ticks; | 3184 base::TimeTicks time_ticks; |
| 3142 time_ticks += base::TimeDelta::FromMilliseconds(1); | 3185 time_ticks += base::TimeDelta::FromMilliseconds(1); |
| 3143 host_impl_.SetCurrentBeginFrameArgs( | 3186 host_impl_.SetCurrentBeginFrameArgs( |
| 3144 CreateBeginFrameArgsForTesting(time_ticks)); | 3187 CreateBeginFrameArgsForTesting(time_ticks)); |
| (...skipping 563 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3708 ++it) { | 3751 ++it) { |
| 3709 Tile* tile = *it; | 3752 Tile* tile = *it; |
| 3710 | 3753 |
| 3711 EXPECT_FALSE(tile->is_occluded(PENDING_TREE)); | 3754 EXPECT_FALSE(tile->is_occluded(PENDING_TREE)); |
| 3712 | 3755 |
| 3713 bool tile_is_visible = | 3756 bool tile_is_visible = |
| 3714 tile->content_rect().Intersects(pending_layer_->visible_content_rect()); | 3757 tile->content_rect().Intersects(pending_layer_->visible_content_rect()); |
| 3715 if (tile_is_visible) | 3758 if (tile_is_visible) |
| 3716 unoccluded_tile_count++; | 3759 unoccluded_tile_count++; |
| 3717 } | 3760 } |
| 3718 EXPECT_EQ(unoccluded_tile_count, 20 + 2); | 3761 EXPECT_EQ(20 + 2, unoccluded_tile_count); |
| 3719 | 3762 |
| 3720 // Full occlusion. | 3763 // Full occlusion. |
| 3721 layer1->SetPosition(gfx::Point(0, 0)); | 3764 layer1->SetPosition(gfx::Point(0, 0)); |
| 3722 | 3765 |
| 3723 time_ticks += base::TimeDelta::FromMilliseconds(200); | 3766 time_ticks += base::TimeDelta::FromMilliseconds(200); |
| 3724 host_impl_.SetCurrentBeginFrameArgs( | 3767 host_impl_.SetCurrentBeginFrameArgs( |
| 3725 CreateBeginFrameArgsForTesting(time_ticks)); | 3768 CreateBeginFrameArgsForTesting(time_ticks)); |
| 3726 host_impl_.pending_tree()->UpdateDrawProperties(); | 3769 host_impl_.pending_tree()->UpdateDrawProperties(); |
| 3727 | 3770 |
| 3728 unoccluded_tile_count = 0; | 3771 unoccluded_tile_count = 0; |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3796 layer1->SetContentsOpaque(true); | 3839 layer1->SetContentsOpaque(true); |
| 3797 layer1->SetPosition(occluding_layer_position); | 3840 layer1->SetPosition(occluding_layer_position); |
| 3798 | 3841 |
| 3799 time_ticks += base::TimeDelta::FromMilliseconds(200); | 3842 time_ticks += base::TimeDelta::FromMilliseconds(200); |
| 3800 host_impl_.SetCurrentBeginFrameArgs( | 3843 host_impl_.SetCurrentBeginFrameArgs( |
| 3801 CreateBeginFrameArgsForTesting(time_ticks)); | 3844 CreateBeginFrameArgsForTesting(time_ticks)); |
| 3802 host_impl_.pending_tree()->UpdateDrawProperties(); | 3845 host_impl_.pending_tree()->UpdateDrawProperties(); |
| 3803 | 3846 |
| 3804 for (size_t i = 0; i < pending_layer_->num_tilings(); ++i) { | 3847 for (size_t i = 0; i < pending_layer_->num_tilings(); ++i) { |
| 3805 PictureLayerTiling* tiling = pending_layer_->tilings()->tiling_at(i); | 3848 PictureLayerTiling* tiling = pending_layer_->tilings()->tiling_at(i); |
| 3849 tiling->UpdateAllTilePrioritiesForTesting(); |
| 3806 | 3850 |
| 3807 occluded_tile_count = 0; | 3851 occluded_tile_count = 0; |
| 3808 for (PictureLayerTiling::CoverageIterator iter( | 3852 for (PictureLayerTiling::CoverageIterator iter( |
| 3809 tiling, | 3853 tiling, |
| 3810 pending_layer_->contents_scale_x(), | 3854 pending_layer_->contents_scale_x(), |
| 3811 gfx::Rect(layer_bounds)); | 3855 gfx::Rect(layer_bounds)); |
| 3812 iter; | 3856 iter; |
| 3813 ++iter) { | 3857 ++iter) { |
| 3814 if (!*iter) | 3858 if (!*iter) |
| 3815 continue; | 3859 continue; |
| (...skipping 19 matching lines...) Expand all Loading... |
| 3835 // Full occlusion. | 3879 // Full occlusion. |
| 3836 layer1->SetPosition(gfx::PointF(0, 0)); | 3880 layer1->SetPosition(gfx::PointF(0, 0)); |
| 3837 | 3881 |
| 3838 time_ticks += base::TimeDelta::FromMilliseconds(200); | 3882 time_ticks += base::TimeDelta::FromMilliseconds(200); |
| 3839 host_impl_.SetCurrentBeginFrameArgs( | 3883 host_impl_.SetCurrentBeginFrameArgs( |
| 3840 CreateBeginFrameArgsForTesting(time_ticks)); | 3884 CreateBeginFrameArgsForTesting(time_ticks)); |
| 3841 host_impl_.pending_tree()->UpdateDrawProperties(); | 3885 host_impl_.pending_tree()->UpdateDrawProperties(); |
| 3842 | 3886 |
| 3843 for (size_t i = 0; i < pending_layer_->num_tilings(); ++i) { | 3887 for (size_t i = 0; i < pending_layer_->num_tilings(); ++i) { |
| 3844 PictureLayerTiling* tiling = pending_layer_->tilings()->tiling_at(i); | 3888 PictureLayerTiling* tiling = pending_layer_->tilings()->tiling_at(i); |
| 3889 tiling->UpdateAllTilePrioritiesForTesting(); |
| 3845 | 3890 |
| 3846 occluded_tile_count = 0; | 3891 occluded_tile_count = 0; |
| 3847 for (PictureLayerTiling::CoverageIterator iter( | 3892 for (PictureLayerTiling::CoverageIterator iter( |
| 3848 tiling, | 3893 tiling, |
| 3849 pending_layer_->contents_scale_x(), | 3894 pending_layer_->contents_scale_x(), |
| 3850 gfx::Rect(layer_bounds)); | 3895 gfx::Rect(layer_bounds)); |
| 3851 iter; | 3896 iter; |
| 3852 ++iter) { | 3897 ++iter) { |
| 3853 if (!*iter) | 3898 if (!*iter) |
| 3854 continue; | 3899 continue; |
| 3855 const Tile* tile = *iter; | 3900 const Tile* tile = *iter; |
| 3856 | 3901 |
| 3857 if (tile->is_occluded(PENDING_TREE)) { | 3902 if (tile->is_occluded(PENDING_TREE)) { |
| 3858 EXPECT_FALSE(tile->required_for_activation()); | 3903 EXPECT_FALSE(tile->required_for_activation()); |
| 3859 occluded_tile_count++; | 3904 occluded_tile_count++; |
| 3860 } | 3905 } |
| 3861 } | 3906 } |
| 3862 switch (i) { | 3907 switch (i) { |
| 3863 case 0: | 3908 case 0: |
| 3864 EXPECT_EQ(occluded_tile_count, 25); | 3909 EXPECT_EQ(25, occluded_tile_count); |
| 3865 break; | 3910 break; |
| 3866 case 1: | 3911 case 1: |
| 3867 EXPECT_EQ(occluded_tile_count, 4); | 3912 EXPECT_EQ(4, occluded_tile_count); |
| 3868 break; | 3913 break; |
| 3869 default: | 3914 default: |
| 3870 NOTREACHED(); | 3915 NOTREACHED(); |
| 3871 } | 3916 } |
| 3872 } | 3917 } |
| 3873 } | 3918 } |
| 3874 | 3919 |
| 3875 TEST_F(OcclusionTrackingPictureLayerImplTest, OcclusionForDifferentScales) { | 3920 TEST_F(OcclusionTrackingPictureLayerImplTest, OcclusionForDifferentScales) { |
| 3876 gfx::Size tile_size(102, 102); | 3921 gfx::Size tile_size(102, 102); |
| 3877 gfx::Size layer_bounds(1000, 1000); | 3922 gfx::Size layer_bounds(1000, 1000); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 3904 | 3949 |
| 3905 host_impl_.SetViewportSize(viewport_size); | 3950 host_impl_.SetViewportSize(viewport_size); |
| 3906 host_impl_.pending_tree()->UpdateDrawProperties(); | 3951 host_impl_.pending_tree()->UpdateDrawProperties(); |
| 3907 | 3952 |
| 3908 int tiling_count = 0; | 3953 int tiling_count = 0; |
| 3909 int occluded_tile_count = 0; | 3954 int occluded_tile_count = 0; |
| 3910 for (std::vector<PictureLayerTiling*>::iterator tiling_iterator = | 3955 for (std::vector<PictureLayerTiling*>::iterator tiling_iterator = |
| 3911 tilings.begin(); | 3956 tilings.begin(); |
| 3912 tiling_iterator != tilings.end(); | 3957 tiling_iterator != tilings.end(); |
| 3913 ++tiling_iterator) { | 3958 ++tiling_iterator) { |
| 3959 (*tiling_iterator)->UpdateAllTilePrioritiesForTesting(); |
| 3914 std::vector<Tile*> tiles = (*tiling_iterator)->AllTilesForTesting(); | 3960 std::vector<Tile*> tiles = (*tiling_iterator)->AllTilesForTesting(); |
| 3915 | 3961 |
| 3916 occluded_tile_count = 0; | 3962 occluded_tile_count = 0; |
| 3917 for (size_t i = 0; i < tiles.size(); ++i) { | 3963 for (size_t i = 0; i < tiles.size(); ++i) { |
| 3918 if (tiles[i]->is_occluded(PENDING_TREE)) { | 3964 if (tiles[i]->is_occluded(PENDING_TREE)) { |
| 3919 gfx::Rect scaled_content_rect = ScaleToEnclosingRect( | 3965 gfx::Rect scaled_content_rect = ScaleToEnclosingRect( |
| 3920 tiles[i]->content_rect(), 1.0f / tiles[i]->contents_scale()); | 3966 tiles[i]->content_rect(), 1.0f / tiles[i]->contents_scale()); |
| 3921 EXPECT_GE(scaled_content_rect.x(), occluding_layer_position.x()); | 3967 EXPECT_GE(scaled_content_rect.x(), occluding_layer_position.x()); |
| 3922 occluded_tile_count++; | 3968 occluded_tile_count++; |
| 3923 } | 3969 } |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3971 // Partially invalidate the pending layer. | 4017 // Partially invalidate the pending layer. |
| 3972 pending_layer_->set_invalidation(invalidation_rect); | 4018 pending_layer_->set_invalidation(invalidation_rect); |
| 3973 | 4019 |
| 3974 host_impl_.SetViewportSize(viewport_size); | 4020 host_impl_.SetViewportSize(viewport_size); |
| 3975 | 4021 |
| 3976 active_layer_->CreateDefaultTilingsAndTiles(); | 4022 active_layer_->CreateDefaultTilingsAndTiles(); |
| 3977 pending_layer_->CreateDefaultTilingsAndTiles(); | 4023 pending_layer_->CreateDefaultTilingsAndTiles(); |
| 3978 | 4024 |
| 3979 for (size_t i = 0; i < pending_layer_->num_tilings(); ++i) { | 4025 for (size_t i = 0; i < pending_layer_->num_tilings(); ++i) { |
| 3980 PictureLayerTiling* tiling = pending_layer_->tilings()->tiling_at(i); | 4026 PictureLayerTiling* tiling = pending_layer_->tilings()->tiling_at(i); |
| 4027 tiling->UpdateAllTilePrioritiesForTesting(); |
| 3981 | 4028 |
| 3982 for (PictureLayerTiling::CoverageIterator iter( | 4029 for (PictureLayerTiling::CoverageIterator iter( |
| 3983 tiling, | 4030 tiling, |
| 3984 pending_layer_->contents_scale_x(), | 4031 pending_layer_->contents_scale_x(), |
| 3985 gfx::Rect(layer_bounds)); | 4032 gfx::Rect(layer_bounds)); |
| 3986 iter; | 4033 iter; |
| 3987 ++iter) { | 4034 ++iter) { |
| 3988 if (!*iter) | 4035 if (!*iter) |
| 3989 continue; | 4036 continue; |
| 3990 const Tile* tile = *iter; | 4037 const Tile* tile = *iter; |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4115 // The total expected number of occluded tiles on all tilings for each of the | 4162 // The total expected number of occluded tiles on all tilings for each of the |
| 4116 // 3 tree priorities. | 4163 // 3 tree priorities. |
| 4117 size_t total_expected_occluded_tile_count[] = {13u, 43u, 43u}; | 4164 size_t total_expected_occluded_tile_count[] = {13u, 43u, 43u}; |
| 4118 | 4165 |
| 4119 ASSERT_EQ(arraysize(total_expected_occluded_tile_count), NUM_TREE_PRIORITIES); | 4166 ASSERT_EQ(arraysize(total_expected_occluded_tile_count), NUM_TREE_PRIORITIES); |
| 4120 | 4167 |
| 4121 // Verify number of occluded tiles on the pending layer for each tiling. | 4168 // Verify number of occluded tiles on the pending layer for each tiling. |
| 4122 for (size_t i = 0; i < pending_layer_->num_tilings(); ++i) { | 4169 for (size_t i = 0; i < pending_layer_->num_tilings(); ++i) { |
| 4123 PictureLayerTiling* tiling = pending_layer_->tilings()->tiling_at(i); | 4170 PictureLayerTiling* tiling = pending_layer_->tilings()->tiling_at(i); |
| 4124 tiling->CreateAllTilesForTesting(); | 4171 tiling->CreateAllTilesForTesting(); |
| 4172 tiling->UpdateAllTilePrioritiesForTesting(); |
| 4125 | 4173 |
| 4126 size_t occluded_tile_count_on_pending = 0u; | 4174 size_t occluded_tile_count_on_pending = 0u; |
| 4127 size_t occluded_tile_count_on_active = 0u; | 4175 size_t occluded_tile_count_on_active = 0u; |
| 4128 size_t occluded_tile_count_on_both = 0u; | 4176 size_t occluded_tile_count_on_both = 0u; |
| 4129 for (PictureLayerTiling::CoverageIterator iter( | 4177 for (PictureLayerTiling::CoverageIterator iter( |
| 4130 tiling, | 4178 tiling, |
| 4131 pending_layer_->contents_scale_x(), | 4179 pending_layer_->contents_scale_x(), |
| 4132 gfx::Rect(layer_bounds)); | 4180 gfx::Rect(layer_bounds)); |
| 4133 iter; | 4181 iter; |
| 4134 ++iter) { | 4182 ++iter) { |
| (...skipping 14 matching lines...) Expand all Loading... |
| 4149 << i; | 4197 << i; |
| 4150 EXPECT_EQ(expected_occluded_tile_count_on_both[i], | 4198 EXPECT_EQ(expected_occluded_tile_count_on_both[i], |
| 4151 occluded_tile_count_on_both) | 4199 occluded_tile_count_on_both) |
| 4152 << i; | 4200 << i; |
| 4153 } | 4201 } |
| 4154 | 4202 |
| 4155 // Verify number of occluded tiles on the active layer for each tiling. | 4203 // Verify number of occluded tiles on the active layer for each tiling. |
| 4156 for (size_t i = 0; i < active_layer_->num_tilings(); ++i) { | 4204 for (size_t i = 0; i < active_layer_->num_tilings(); ++i) { |
| 4157 PictureLayerTiling* tiling = active_layer_->tilings()->tiling_at(i); | 4205 PictureLayerTiling* tiling = active_layer_->tilings()->tiling_at(i); |
| 4158 tiling->CreateAllTilesForTesting(); | 4206 tiling->CreateAllTilesForTesting(); |
| 4207 tiling->UpdateAllTilePrioritiesForTesting(); |
| 4159 | 4208 |
| 4160 size_t occluded_tile_count_on_pending = 0u; | 4209 size_t occluded_tile_count_on_pending = 0u; |
| 4161 size_t occluded_tile_count_on_active = 0u; | 4210 size_t occluded_tile_count_on_active = 0u; |
| 4162 size_t occluded_tile_count_on_both = 0u; | 4211 size_t occluded_tile_count_on_both = 0u; |
| 4163 for (PictureLayerTiling::CoverageIterator iter( | 4212 for (PictureLayerTiling::CoverageIterator iter( |
| 4164 tiling, | 4213 tiling, |
| 4165 pending_layer_->contents_scale_x(), | 4214 pending_layer_->contents_scale_x(), |
| 4166 gfx::Rect(layer_bounds)); | 4215 gfx::Rect(layer_bounds)); |
| 4167 iter; | 4216 iter; |
| 4168 ++iter) { | 4217 ++iter) { |
| (...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4370 SetupPendingTree(pending_pile2); | 4419 SetupPendingTree(pending_pile2); |
| 4371 ActivateTree(); | 4420 ActivateTree(); |
| 4372 | 4421 |
| 4373 // We've switched to a solid color, so we should end up with no tilings. | 4422 // We've switched to a solid color, so we should end up with no tilings. |
| 4374 ASSERT_TRUE(active_layer_->tilings()); | 4423 ASSERT_TRUE(active_layer_->tilings()); |
| 4375 EXPECT_EQ(0u, active_layer_->tilings()->num_tilings()); | 4424 EXPECT_EQ(0u, active_layer_->tilings()->num_tilings()); |
| 4376 } | 4425 } |
| 4377 | 4426 |
| 4378 } // namespace | 4427 } // namespace |
| 4379 } // namespace cc | 4428 } // namespace cc |
| OLD | NEW |