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 1370 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1381 | 1381 |
1382 AppendQuadsData data; | 1382 AppendQuadsData data; |
1383 active_layer_->WillDraw(DRAW_MODE_RESOURCELESS_SOFTWARE, NULL); | 1383 active_layer_->WillDraw(DRAW_MODE_RESOURCELESS_SOFTWARE, NULL); |
1384 active_layer_->AppendQuads(render_pass.get(), occlusion_tracker, &data); | 1384 active_layer_->AppendQuads(render_pass.get(), occlusion_tracker, &data); |
1385 active_layer_->DidDraw(NULL); | 1385 active_layer_->DidDraw(NULL); |
1386 | 1386 |
1387 ASSERT_EQ(1U, render_pass->quad_list.size()); | 1387 ASSERT_EQ(1U, render_pass->quad_list.size()); |
1388 EXPECT_EQ(DrawQuad::PICTURE_CONTENT, render_pass->quad_list[0]->material); | 1388 EXPECT_EQ(DrawQuad::PICTURE_CONTENT, render_pass->quad_list[0]->material); |
1389 } | 1389 } |
1390 | 1390 |
1391 TEST_F(PictureLayerImplTest, MarkRequiredNullTiles) { | |
1392 gfx::Size tile_size(100, 100); | |
1393 gfx::Size layer_bounds(1000, 1000); | |
1394 | |
1395 scoped_refptr<FakePicturePileImpl> pending_pile = | |
1396 FakePicturePileImpl::CreateEmptyPile(tile_size, layer_bounds); | |
1397 // Layers with entirely empty piles can't get tilings. | |
1398 pending_pile->AddRecordingAt(0, 0); | |
1399 | |
1400 SetupPendingTree(pending_pile); | |
1401 | |
1402 ASSERT_TRUE(pending_layer_->CanHaveTilings()); | |
1403 pending_layer_->AddTiling(1.0f); | |
1404 pending_layer_->AddTiling(2.0f); | |
1405 | |
1406 // It should be safe to call this (and MarkVisibleResourcesAsRequired) | |
1407 // on a layer with no recordings. | |
1408 host_impl_.pending_tree()->UpdateDrawProperties(); | |
1409 pending_layer_->MarkVisibleResourcesAsRequired(); | |
1410 } | |
1411 | |
1412 TEST_F(PictureLayerImplTest, MarkRequiredOffscreenTiles) { | 1391 TEST_F(PictureLayerImplTest, MarkRequiredOffscreenTiles) { |
1413 gfx::Size tile_size(100, 100); | 1392 gfx::Size tile_size(100, 100); |
1414 gfx::Size layer_bounds(200, 200); | 1393 gfx::Size layer_bounds(200, 200); |
1415 | 1394 |
1416 scoped_refptr<FakePicturePileImpl> pending_pile = | 1395 scoped_refptr<FakePicturePileImpl> pending_pile = |
1417 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 1396 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
1418 SetupPendingTree(pending_pile); | 1397 SetupPendingTree(pending_pile); |
1419 | 1398 |
1420 pending_layer_->set_fixed_tile_size(tile_size); | 1399 pending_layer_->set_fixed_tile_size(tile_size); |
1421 ASSERT_TRUE(pending_layer_->CanHaveTilings()); | 1400 ASSERT_TRUE(pending_layer_->CanHaveTilings()); |
1422 PictureLayerTiling* tiling = pending_layer_->AddTiling(1.f); | 1401 PictureLayerTiling* tiling = pending_layer_->AddTiling(1.f); |
1423 host_impl_.pending_tree()->UpdateDrawProperties(); | 1402 host_impl_.pending_tree()->UpdateDrawProperties(); |
1424 EXPECT_EQ(tiling->resolution(), HIGH_RESOLUTION); | |
1425 | |
1426 pending_layer_->draw_properties().visible_content_rect = | 1403 pending_layer_->draw_properties().visible_content_rect = |
1427 gfx::Rect(0, 0, 100, 200); | 1404 gfx::Rect(0, 0, 100, 200); |
1428 | 1405 base::TimeTicks time_ticks; |
1429 // Fake set priorities. | 1406 time_ticks += base::TimeDelta::FromMilliseconds(16); |
danakj
2014/09/19 01:41:46
1 is enough right? avoid magic numbers, 1 is less
vmpstr
2014/09/19 21:22:52
*mumble*expected frame time*mumble*. Changed to 1.
| |
1430 for (PictureLayerTiling::CoverageIterator iter( | 1407 host_impl_.SetCurrentBeginFrameArgs( |
1431 tiling, pending_layer_->contents_scale_x(), gfx::Rect(layer_bounds)); | 1408 CreateBeginFrameArgsForTesting(time_ticks)); |
1432 iter; | 1409 pending_layer_->UpdateTiles(Occlusion()); |
1433 ++iter) { | 1410 EXPECT_EQ(HIGH_RESOLUTION, tiling->resolution()); |
1434 if (!*iter) | |
1435 continue; | |
1436 Tile* tile = *iter; | |
1437 TilePriority priority; | |
1438 priority.resolution = HIGH_RESOLUTION; | |
1439 gfx::Rect tile_bounds = iter.geometry_rect(); | |
1440 if (pending_layer_->visible_content_rect().Intersects(tile_bounds)) { | |
1441 priority.priority_bin = TilePriority::NOW; | |
1442 priority.distance_to_visible = 0.f; | |
1443 } else { | |
1444 priority.priority_bin = TilePriority::SOON; | |
1445 priority.distance_to_visible = 1.f; | |
1446 } | |
1447 tile->SetPriority(PENDING_TREE, priority); | |
1448 } | |
1449 | |
1450 pending_layer_->MarkVisibleResourcesAsRequired(); | |
1451 | 1411 |
1452 int num_visible = 0; | 1412 int num_visible = 0; |
1453 int num_offscreen = 0; | 1413 int num_offscreen = 0; |
1454 | 1414 |
1455 for (PictureLayerTiling::CoverageIterator iter( | 1415 for (PictureLayerTiling::TilingRasterTileIterator iter(tiling, PENDING_TREE); |
1456 tiling, pending_layer_->contents_scale_x(), gfx::Rect(layer_bounds)); | |
1457 iter; | 1416 iter; |
1458 ++iter) { | 1417 ++iter) { |
1459 if (!*iter) | |
1460 continue; | |
1461 const Tile* tile = *iter; | 1418 const Tile* tile = *iter; |
1419 DCHECK(tile); | |
1462 if (tile->priority(PENDING_TREE).distance_to_visible == 0.f) { | 1420 if (tile->priority(PENDING_TREE).distance_to_visible == 0.f) { |
1463 EXPECT_TRUE(tile->required_for_activation()); | 1421 EXPECT_TRUE(tile->required_for_activation()); |
1464 num_visible++; | 1422 num_visible++; |
1465 } else { | 1423 } else { |
1466 EXPECT_FALSE(tile->required_for_activation()); | 1424 EXPECT_FALSE(tile->required_for_activation()); |
1467 num_offscreen++; | 1425 num_offscreen++; |
1468 } | 1426 } |
1469 } | 1427 } |
1470 | 1428 |
1471 EXPECT_GT(num_visible, 0); | 1429 EXPECT_GT(num_visible, 0); |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1508 host_impl_.pending_tree()->UpdateDrawProperties(); | 1466 host_impl_.pending_tree()->UpdateDrawProperties(); |
1509 | 1467 |
1510 // Set visible content rect that is different from | 1468 // Set visible content rect that is different from |
1511 // external_viewport_for_tile_priority. | 1469 // external_viewport_for_tile_priority. |
1512 pending_layer_->draw_properties().visible_content_rect = visible_content_rect; | 1470 pending_layer_->draw_properties().visible_content_rect = visible_content_rect; |
1513 time_ticks += base::TimeDelta::FromMilliseconds(200); | 1471 time_ticks += base::TimeDelta::FromMilliseconds(200); |
1514 host_impl_.SetCurrentBeginFrameArgs( | 1472 host_impl_.SetCurrentBeginFrameArgs( |
1515 CreateBeginFrameArgsForTesting(time_ticks)); | 1473 CreateBeginFrameArgsForTesting(time_ticks)); |
1516 pending_layer_->UpdateTiles(Occlusion()); | 1474 pending_layer_->UpdateTiles(Occlusion()); |
1517 | 1475 |
1518 pending_layer_->MarkVisibleResourcesAsRequired(); | |
1519 | |
1520 // Intersect the two rects. Any tile outside should not be required for | 1476 // Intersect the two rects. Any tile outside should not be required for |
1521 // activation. | 1477 // activation. |
1522 gfx::Rect viewport_for_tile_priority = | 1478 gfx::Rect viewport_for_tile_priority = |
1523 pending_layer_->GetViewportForTilePriorityInContentSpace(); | 1479 pending_layer_->GetViewportForTilePriorityInContentSpace(); |
1524 viewport_for_tile_priority.Intersect(pending_layer_->visible_content_rect()); | 1480 viewport_for_tile_priority.Intersect(pending_layer_->visible_content_rect()); |
1525 | 1481 |
1526 int num_inside = 0; | 1482 int num_inside = 0; |
1527 int num_outside = 0; | 1483 int num_outside = 0; |
1528 for (PictureLayerTiling::CoverageIterator iter( | 1484 for (PictureLayerTiling::CoverageIterator iter( |
1529 tiling, pending_layer_->contents_scale_x(), gfx::Rect(layer_bounds)); | 1485 tiling, pending_layer_->contents_scale_x(), gfx::Rect(layer_bounds)); |
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1720 | 1676 |
1721 // No tiles shared. | 1677 // No tiles shared. |
1722 pending_layer_->set_invalidation(gfx::Rect(layer_bounds)); | 1678 pending_layer_->set_invalidation(gfx::Rect(layer_bounds)); |
1723 | 1679 |
1724 CreateHighLowResAndSetAllTilesVisible(); | 1680 CreateHighLowResAndSetAllTilesVisible(); |
1725 | 1681 |
1726 active_layer_->SetAllTilesReady(); | 1682 active_layer_->SetAllTilesReady(); |
1727 | 1683 |
1728 // No shared tiles and all active tiles ready, so pending can only | 1684 // No shared tiles and all active tiles ready, so pending can only |
1729 // activate with all high res tiles. | 1685 // activate with all high res tiles. |
1730 pending_layer_->MarkVisibleResourcesAsRequired(); | 1686 pending_layer_->HighResTiling()->UpdateAllTilePrioritiesForTesting(); |
danakj
2014/09/19 01:41:46
can you update all tilings here before doing any i
vmpstr
2014/09/19 21:22:52
Done.
| |
1731 AssertAllTilesRequired(pending_layer_->HighResTiling()); | 1687 AssertAllTilesRequired(pending_layer_->HighResTiling()); |
1688 | |
1689 pending_layer_->LowResTiling()->UpdateAllTilePrioritiesForTesting(); | |
1732 AssertNoTilesRequired(pending_layer_->LowResTiling()); | 1690 AssertNoTilesRequired(pending_layer_->LowResTiling()); |
1733 } | 1691 } |
1734 | 1692 |
1735 TEST_F(PictureLayerImplTest, HighResRequiredWhenMissingHighResFlagOn) { | 1693 TEST_F(PictureLayerImplTest, HighResRequiredWhenMissingHighResFlagOn) { |
1736 gfx::Size layer_bounds(400, 400); | 1694 gfx::Size layer_bounds(400, 400); |
1737 gfx::Size tile_size(100, 100); | 1695 gfx::Size tile_size(100, 100); |
1738 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size); | 1696 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size); |
1739 | 1697 |
1740 // All tiles shared (no invalidation). | 1698 // All tiles shared (no invalidation). |
1741 CreateHighLowResAndSetAllTilesVisible(); | 1699 CreateHighLowResAndSetAllTilesVisible(); |
1742 | 1700 |
1743 // Verify active tree not ready. | 1701 // Verify active tree not ready. |
1744 Tile* some_active_tile = | 1702 Tile* some_active_tile = |
1745 active_layer_->HighResTiling()->AllTilesForTesting()[0]; | 1703 active_layer_->HighResTiling()->AllTilesForTesting()[0]; |
1746 EXPECT_FALSE(some_active_tile->IsReadyToDraw()); | 1704 EXPECT_FALSE(some_active_tile->IsReadyToDraw()); |
1747 | 1705 |
1748 // When high res are required, even if the active tree is not ready, | 1706 // When high res are required, even if the active tree is not ready, |
1749 // the high res tiles must be ready. | 1707 // the high res tiles must be ready. |
1750 host_impl_.active_tree()->SetRequiresHighResToDraw(); | 1708 host_impl_.active_tree()->SetRequiresHighResToDraw(); |
1751 pending_layer_->MarkVisibleResourcesAsRequired(); | 1709 |
1710 pending_layer_->HighResTiling()->UpdateAllTilePrioritiesForTesting(); | |
danakj
2014/09/19 01:41:46
same here
vmpstr
2014/09/19 21:22:52
Done.
| |
1752 AssertAllTilesRequired(pending_layer_->HighResTiling()); | 1711 AssertAllTilesRequired(pending_layer_->HighResTiling()); |
1712 | |
1713 pending_layer_->LowResTiling()->UpdateAllTilePrioritiesForTesting(); | |
1753 AssertNoTilesRequired(pending_layer_->LowResTiling()); | 1714 AssertNoTilesRequired(pending_layer_->LowResTiling()); |
1754 } | 1715 } |
1755 | 1716 |
1756 TEST_F(PictureLayerImplTest, NothingRequiredIfAllHighResTilesShared) { | 1717 TEST_F(PictureLayerImplTest, NothingRequiredIfAllHighResTilesShared) { |
1757 gfx::Size layer_bounds(400, 400); | 1718 gfx::Size layer_bounds(400, 400); |
1758 gfx::Size tile_size(100, 100); | 1719 gfx::Size tile_size(100, 100); |
1759 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size); | 1720 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size); |
1760 | 1721 |
1761 CreateHighLowResAndSetAllTilesVisible(); | 1722 CreateHighLowResAndSetAllTilesVisible(); |
1762 | 1723 |
1763 Tile* some_active_tile = | 1724 Tile* some_active_tile = |
1764 active_layer_->HighResTiling()->AllTilesForTesting()[0]; | 1725 active_layer_->HighResTiling()->AllTilesForTesting()[0]; |
1765 EXPECT_FALSE(some_active_tile->IsReadyToDraw()); | 1726 EXPECT_FALSE(some_active_tile->IsReadyToDraw()); |
1766 | 1727 |
1767 // All tiles shared (no invalidation), so even though the active tree's | 1728 // All tiles shared (no invalidation), so even though the active tree's |
1768 // tiles aren't ready, there is nothing required. | 1729 // tiles aren't ready, there is nothing required. |
1769 pending_layer_->MarkVisibleResourcesAsRequired(); | 1730 pending_layer_->HighResTiling()->UpdateAllTilePrioritiesForTesting(); |
danakj
2014/09/19 01:41:47
etc..
vmpstr
2014/09/19 21:22:52
Done.
| |
1770 AssertNoTilesRequired(pending_layer_->HighResTiling()); | 1731 AssertNoTilesRequired(pending_layer_->HighResTiling()); |
1732 | |
1733 pending_layer_->LowResTiling()->UpdateAllTilePrioritiesForTesting(); | |
1771 AssertNoTilesRequired(pending_layer_->LowResTiling()); | 1734 AssertNoTilesRequired(pending_layer_->LowResTiling()); |
1772 } | 1735 } |
1773 | 1736 |
1774 TEST_F(PictureLayerImplTest, NothingRequiredIfActiveMissingTiles) { | 1737 TEST_F(PictureLayerImplTest, NothingRequiredIfActiveMissingTiles) { |
1775 gfx::Size layer_bounds(400, 400); | 1738 gfx::Size layer_bounds(400, 400); |
1776 gfx::Size tile_size(100, 100); | 1739 gfx::Size tile_size(100, 100); |
1777 scoped_refptr<FakePicturePileImpl> pending_pile = | 1740 scoped_refptr<FakePicturePileImpl> pending_pile = |
1778 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 1741 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
1779 // This pile will create tilings, but has no recordings so will not create any | 1742 // This pile will create tilings, but has no recordings so will not create any |
1780 // tiles. This is attempting to simulate scrolling past the end of recorded | 1743 // tiles. This is attempting to simulate scrolling past the end of recorded |
1781 // content on the active layer, where the recordings are so far away that | 1744 // content on the active layer, where the recordings are so far away that |
1782 // no tiles are created. | 1745 // no tiles are created. |
1783 scoped_refptr<FakePicturePileImpl> active_pile = | 1746 scoped_refptr<FakePicturePileImpl> active_pile = |
1784 FakePicturePileImpl::CreateEmptyPileThatThinksItHasRecordings( | 1747 FakePicturePileImpl::CreateEmptyPileThatThinksItHasRecordings( |
1785 tile_size, layer_bounds); | 1748 tile_size, layer_bounds); |
1786 SetupTrees(pending_pile, active_pile); | 1749 SetupTrees(pending_pile, active_pile); |
1787 pending_layer_->set_fixed_tile_size(tile_size); | 1750 pending_layer_->set_fixed_tile_size(tile_size); |
1788 active_layer_->set_fixed_tile_size(tile_size); | 1751 active_layer_->set_fixed_tile_size(tile_size); |
1789 | 1752 |
1790 CreateHighLowResAndSetAllTilesVisible(); | 1753 CreateHighLowResAndSetAllTilesVisible(); |
1791 | 1754 |
1792 // Active layer has tilings, but no tiles due to missing recordings. | 1755 // Active layer has tilings, but no tiles due to missing recordings. |
1793 EXPECT_TRUE(active_layer_->CanHaveTilings()); | 1756 EXPECT_TRUE(active_layer_->CanHaveTilings()); |
1794 EXPECT_EQ(active_layer_->tilings()->num_tilings(), 2u); | 1757 EXPECT_EQ(active_layer_->tilings()->num_tilings(), 2u); |
1795 EXPECT_EQ(active_layer_->HighResTiling()->AllTilesForTesting().size(), 0u); | 1758 EXPECT_EQ(active_layer_->HighResTiling()->AllTilesForTesting().size(), 0u); |
1796 | 1759 |
1797 // Since the active layer has no tiles at all, the pending layer doesn't | 1760 // Since the active layer has no tiles at all, the pending layer doesn't |
1798 // need content in order to activate. | 1761 // need content in order to activate. |
1799 pending_layer_->MarkVisibleResourcesAsRequired(); | 1762 pending_layer_->HighResTiling()->UpdateAllTilePrioritiesForTesting(); |
1800 AssertNoTilesRequired(pending_layer_->HighResTiling()); | 1763 AssertNoTilesRequired(pending_layer_->HighResTiling()); |
1764 | |
1765 pending_layer_->LowResTiling()->UpdateAllTilePrioritiesForTesting(); | |
1801 AssertNoTilesRequired(pending_layer_->LowResTiling()); | 1766 AssertNoTilesRequired(pending_layer_->LowResTiling()); |
1802 } | 1767 } |
1803 | 1768 |
1804 TEST_F(PictureLayerImplTest, HighResRequiredIfActiveCantHaveTiles) { | 1769 TEST_F(PictureLayerImplTest, HighResRequiredIfActiveCantHaveTiles) { |
1805 gfx::Size layer_bounds(400, 400); | 1770 gfx::Size layer_bounds(400, 400); |
1806 gfx::Size tile_size(100, 100); | 1771 gfx::Size tile_size(100, 100); |
1807 scoped_refptr<FakePicturePileImpl> pending_pile = | 1772 scoped_refptr<FakePicturePileImpl> pending_pile = |
1808 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 1773 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
1809 scoped_refptr<FakePicturePileImpl> active_pile = | 1774 scoped_refptr<FakePicturePileImpl> active_pile = |
1810 FakePicturePileImpl::CreateEmptyPile(tile_size, layer_bounds); | 1775 FakePicturePileImpl::CreateEmptyPile(tile_size, layer_bounds); |
1811 SetupTrees(pending_pile, active_pile); | 1776 SetupTrees(pending_pile, active_pile); |
1812 pending_layer_->set_fixed_tile_size(tile_size); | 1777 pending_layer_->set_fixed_tile_size(tile_size); |
1813 active_layer_->set_fixed_tile_size(tile_size); | 1778 active_layer_->set_fixed_tile_size(tile_size); |
1814 | 1779 |
1815 CreateHighLowResAndSetAllTilesVisible(); | 1780 CreateHighLowResAndSetAllTilesVisible(); |
1816 | 1781 |
1817 // Active layer can't have tiles. | 1782 // Active layer can't have tiles. |
1818 EXPECT_FALSE(active_layer_->CanHaveTilings()); | 1783 EXPECT_FALSE(active_layer_->CanHaveTilings()); |
1819 | 1784 |
1820 // All high res tiles required. This should be considered identical | 1785 // All high res tiles required. This should be considered identical |
1821 // to the case where there is no active layer, to avoid flashing content. | 1786 // to the case where there is no active layer, to avoid flashing content. |
1822 // This can happen if a layer exists for a while and switches from | 1787 // This can happen if a layer exists for a while and switches from |
1823 // not being able to have content to having content. | 1788 // not being able to have content to having content. |
1824 pending_layer_->MarkVisibleResourcesAsRequired(); | 1789 pending_layer_->HighResTiling()->UpdateAllTilePrioritiesForTesting(); |
1825 AssertAllTilesRequired(pending_layer_->HighResTiling()); | 1790 AssertAllTilesRequired(pending_layer_->HighResTiling()); |
1791 | |
1792 pending_layer_->LowResTiling()->UpdateAllTilePrioritiesForTesting(); | |
1826 AssertNoTilesRequired(pending_layer_->LowResTiling()); | 1793 AssertNoTilesRequired(pending_layer_->LowResTiling()); |
1827 } | 1794 } |
1828 | 1795 |
1829 TEST_F(PictureLayerImplTest, HighResRequiredWhenActiveHasDifferentBounds) { | 1796 TEST_F(PictureLayerImplTest, HighResRequiredWhenActiveHasDifferentBounds) { |
1830 gfx::Size layer_bounds(200, 200); | 1797 gfx::Size layer_bounds(200, 200); |
1831 gfx::Size tile_size(100, 100); | 1798 gfx::Size tile_size(100, 100); |
1832 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size); | 1799 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size); |
1833 | 1800 |
1834 gfx::Size pending_layer_bounds(400, 400); | 1801 gfx::Size pending_layer_bounds(400, 400); |
1835 pending_layer_->SetBounds(pending_layer_bounds); | 1802 pending_layer_->SetBounds(pending_layer_bounds); |
1836 | 1803 |
1837 CreateHighLowResAndSetAllTilesVisible(); | 1804 CreateHighLowResAndSetAllTilesVisible(); |
1805 pending_layer_->HighResTiling()->UpdateTilePriorities( | |
danakj
2014/09/19 01:41:46
This confused me again. Can you maybe reorder this
vmpstr
2014/09/19 21:22:52
I've added a TODO and the function name change. Le
| |
1806 PENDING_TREE, gfx::Rect(pending_layer_bounds), 1.f, 1.f, Occlusion()); | |
1807 pending_layer_->HighResTiling()->UpdateAllTilePrioritiesForTesting(); | |
1838 | 1808 |
1839 active_layer_->SetAllTilesReady(); | 1809 active_layer_->SetAllTilesReady(); |
1840 | 1810 |
1841 // Since the active layer has different bounds, the pending layer needs all | 1811 // Since the active layer has different bounds, the pending layer needs all |
1842 // high res tiles in order to activate. | 1812 // high res tiles in order to activate. |
1843 pending_layer_->MarkVisibleResourcesAsRequired(); | 1813 pending_layer_->HighResTiling()->UpdateAllTilePrioritiesForTesting(); |
1844 AssertAllTilesRequired(pending_layer_->HighResTiling()); | 1814 AssertAllTilesRequired(pending_layer_->HighResTiling()); |
1815 | |
1816 pending_layer_->LowResTiling()->UpdateAllTilePrioritiesForTesting(); | |
1845 AssertNoTilesRequired(pending_layer_->LowResTiling()); | 1817 AssertNoTilesRequired(pending_layer_->LowResTiling()); |
1846 } | 1818 } |
1847 | 1819 |
1848 TEST_F(PictureLayerImplTest, ActivateUninitializedLayer) { | 1820 TEST_F(PictureLayerImplTest, ActivateUninitializedLayer) { |
1849 gfx::Size tile_size(100, 100); | 1821 gfx::Size tile_size(100, 100); |
1850 gfx::Size layer_bounds(400, 400); | 1822 gfx::Size layer_bounds(400, 400); |
1851 scoped_refptr<FakePicturePileImpl> pending_pile = | 1823 scoped_refptr<FakePicturePileImpl> pending_pile = |
1852 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 1824 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
1853 | 1825 |
1854 host_impl_.CreatePendingTree(); | 1826 host_impl_.CreatePendingTree(); |
(...skipping 829 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2684 for (size_t i = 0; i < tilings.size(); ++i) { | 2656 for (size_t i = 0; i < tilings.size(); ++i) { |
2685 PictureLayerTiling* tiling = tilings.at(i); | 2657 PictureLayerTiling* tiling = tilings.at(i); |
2686 for (PictureLayerTiling::CoverageIterator iter( | 2658 for (PictureLayerTiling::CoverageIterator iter( |
2687 tiling, | 2659 tiling, |
2688 pending_layer_->contents_scale_x(), | 2660 pending_layer_->contents_scale_x(), |
2689 pending_layer_->visible_content_rect()); | 2661 pending_layer_->visible_content_rect()); |
2690 iter; | 2662 iter; |
2691 ++iter) { | 2663 ++iter) { |
2692 if (mark_required) { | 2664 if (mark_required) { |
2693 number_of_marked_tiles++; | 2665 number_of_marked_tiles++; |
2694 iter->MarkRequiredForActivation(); | 2666 iter->set_required_for_activation(true); |
2695 } else { | 2667 } else { |
2696 number_of_unmarked_tiles++; | 2668 number_of_unmarked_tiles++; |
2697 } | 2669 } |
2698 mark_required = !mark_required; | 2670 mark_required = !mark_required; |
2699 } | 2671 } |
2700 } | 2672 } |
2701 | 2673 |
2702 // Sanity checks. | 2674 // Sanity checks. |
2703 EXPECT_EQ(91u, all_tiles.size()); | 2675 EXPECT_EQ(91u, all_tiles.size()); |
2704 EXPECT_EQ(91u, all_tiles_set.size()); | 2676 EXPECT_EQ(91u, all_tiles_set.size()); |
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2899 gfx::Size tile_size(100, 100); | 2871 gfx::Size tile_size(100, 100); |
2900 gfx::Size layer_bounds(1000, 1000); | 2872 gfx::Size layer_bounds(1000, 1000); |
2901 | 2873 |
2902 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size); | 2874 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size); |
2903 | 2875 |
2904 // Make sure some tiles are not shared. | 2876 // Make sure some tiles are not shared. |
2905 pending_layer_->set_invalidation(gfx::Rect(gfx::Point(50, 50), tile_size)); | 2877 pending_layer_->set_invalidation(gfx::Rect(gfx::Point(50, 50), tile_size)); |
2906 | 2878 |
2907 CreateHighLowResAndSetAllTilesVisible(); | 2879 CreateHighLowResAndSetAllTilesVisible(); |
2908 active_layer_->SetAllTilesReady(); | 2880 active_layer_->SetAllTilesReady(); |
2909 pending_layer_->MarkVisibleResourcesAsRequired(); | |
2910 | 2881 |
2911 // All pending layer tiles required are not ready. | 2882 // All pending layer tiles required are not ready. |
2912 EXPECT_FALSE(pending_layer_->AllTilesRequiredForActivationAreReadyToDraw()); | 2883 EXPECT_FALSE(pending_layer_->AllTilesRequiredForActivationAreReadyToDraw()); |
2913 | 2884 |
2914 // Initialize all low-res tiles. | 2885 // Initialize all low-res tiles. |
2915 pending_layer_->SetAllTilesReadyInTiling(pending_layer_->LowResTiling()); | 2886 pending_layer_->SetAllTilesReadyInTiling(pending_layer_->LowResTiling()); |
2916 | 2887 |
2917 // Low-res tiles should not be enough. | 2888 // Low-res tiles should not be enough. |
2918 EXPECT_FALSE(pending_layer_->AllTilesRequiredForActivationAreReadyToDraw()); | 2889 EXPECT_FALSE(pending_layer_->AllTilesRequiredForActivationAreReadyToDraw()); |
2919 | 2890 |
2920 // Initialize remaining tiles. | 2891 // Initialize remaining tiles. |
2921 pending_layer_->SetAllTilesReady(); | 2892 pending_layer_->SetAllTilesReady(); |
2922 | 2893 |
2923 EXPECT_TRUE(pending_layer_->AllTilesRequiredForActivationAreReadyToDraw()); | 2894 EXPECT_TRUE(pending_layer_->AllTilesRequiredForActivationAreReadyToDraw()); |
2924 } | 2895 } |
2925 | 2896 |
2926 TEST_F(PictureLayerImplTest, HighResReadyToDrawEnoughToActivate) { | 2897 TEST_F(PictureLayerImplTest, HighResReadyToDrawEnoughToActivate) { |
2927 gfx::Size tile_size(100, 100); | 2898 gfx::Size tile_size(100, 100); |
2928 gfx::Size layer_bounds(1000, 1000); | 2899 gfx::Size layer_bounds(1000, 1000); |
2929 | 2900 |
2930 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size); | 2901 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size); |
2931 | 2902 |
2932 // Make sure some tiles are not shared. | 2903 // Make sure some tiles are not shared. |
2933 pending_layer_->set_invalidation(gfx::Rect(gfx::Point(50, 50), tile_size)); | 2904 pending_layer_->set_invalidation(gfx::Rect(gfx::Point(50, 50), tile_size)); |
2934 | 2905 |
2935 CreateHighLowResAndSetAllTilesVisible(); | 2906 CreateHighLowResAndSetAllTilesVisible(); |
2936 active_layer_->SetAllTilesReady(); | 2907 active_layer_->SetAllTilesReady(); |
2937 pending_layer_->MarkVisibleResourcesAsRequired(); | |
2938 | 2908 |
2939 // All pending layer tiles required are not ready. | 2909 // All pending layer tiles required are not ready. |
2940 EXPECT_FALSE(pending_layer_->AllTilesRequiredForActivationAreReadyToDraw()); | 2910 EXPECT_FALSE(pending_layer_->AllTilesRequiredForActivationAreReadyToDraw()); |
2941 | 2911 |
2942 // Initialize all high-res tiles. | 2912 // Initialize all high-res tiles. |
2943 pending_layer_->SetAllTilesReadyInTiling(pending_layer_->HighResTiling()); | 2913 pending_layer_->SetAllTilesReadyInTiling(pending_layer_->HighResTiling()); |
2944 | 2914 |
2945 // High-res tiles should be enough, since they cover everything visible. | 2915 // High-res tiles should be enough, since they cover everything visible. |
2946 EXPECT_TRUE(pending_layer_->AllTilesRequiredForActivationAreReadyToDraw()); | 2916 EXPECT_TRUE(pending_layer_->AllTilesRequiredForActivationAreReadyToDraw()); |
2947 } | 2917 } |
2948 | 2918 |
2949 TEST_F(PictureLayerImplTest, | 2919 TEST_F(PictureLayerImplTest, |
2950 SharedActiveHighResReadyAndPendingLowResReadyNotEnoughToActivate) { | 2920 SharedActiveHighResReadyAndPendingLowResReadyNotEnoughToActivate) { |
2951 gfx::Size tile_size(100, 100); | 2921 gfx::Size tile_size(100, 100); |
2952 gfx::Size layer_bounds(1000, 1000); | 2922 gfx::Size layer_bounds(1000, 1000); |
2953 | 2923 |
2954 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size); | 2924 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size); |
2955 | 2925 |
2956 // Make sure some tiles are not shared. | 2926 // Make sure some tiles are not shared. |
2957 pending_layer_->set_invalidation(gfx::Rect(gfx::Point(50, 50), tile_size)); | 2927 pending_layer_->set_invalidation(gfx::Rect(gfx::Point(50, 50), tile_size)); |
2958 | 2928 |
2959 CreateHighLowResAndSetAllTilesVisible(); | 2929 CreateHighLowResAndSetAllTilesVisible(); |
2960 | 2930 |
2961 // Initialize all high-res tiles in the active layer. | 2931 // Initialize all high-res tiles in the active layer. |
2962 active_layer_->SetAllTilesReadyInTiling(active_layer_->HighResTiling()); | 2932 active_layer_->SetAllTilesReadyInTiling(active_layer_->HighResTiling()); |
2963 // And all the low-res tiles in the pending layer. | 2933 // And all the low-res tiles in the pending layer. |
2964 pending_layer_->SetAllTilesReadyInTiling(pending_layer_->LowResTiling()); | 2934 pending_layer_->SetAllTilesReadyInTiling(pending_layer_->LowResTiling()); |
2965 | 2935 |
2966 pending_layer_->MarkVisibleResourcesAsRequired(); | |
2967 | |
2968 // The unshared high-res tiles are not ready, so we cannot activate. | 2936 // The unshared high-res tiles are not ready, so we cannot activate. |
2969 EXPECT_FALSE(pending_layer_->AllTilesRequiredForActivationAreReadyToDraw()); | 2937 EXPECT_FALSE(pending_layer_->AllTilesRequiredForActivationAreReadyToDraw()); |
2970 | 2938 |
2971 // When the unshared pending high-res tiles are ready, we can activate. | 2939 // When the unshared pending high-res tiles are ready, we can activate. |
2972 pending_layer_->SetAllTilesReadyInTiling(pending_layer_->HighResTiling()); | 2940 pending_layer_->SetAllTilesReadyInTiling(pending_layer_->HighResTiling()); |
2973 EXPECT_TRUE(pending_layer_->AllTilesRequiredForActivationAreReadyToDraw()); | 2941 EXPECT_TRUE(pending_layer_->AllTilesRequiredForActivationAreReadyToDraw()); |
2974 } | 2942 } |
2975 | 2943 |
2976 TEST_F(PictureLayerImplTest, SharedActiveHighResReadyNotEnoughToActivate) { | 2944 TEST_F(PictureLayerImplTest, SharedActiveHighResReadyNotEnoughToActivate) { |
2977 gfx::Size tile_size(100, 100); | 2945 gfx::Size tile_size(100, 100); |
2978 gfx::Size layer_bounds(1000, 1000); | 2946 gfx::Size layer_bounds(1000, 1000); |
2979 | 2947 |
2980 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size); | 2948 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size); |
2981 | 2949 |
2982 // Make sure some tiles are not shared. | 2950 // Make sure some tiles are not shared. |
2983 pending_layer_->set_invalidation(gfx::Rect(gfx::Point(50, 50), tile_size)); | 2951 pending_layer_->set_invalidation(gfx::Rect(gfx::Point(50, 50), tile_size)); |
2984 | 2952 |
2985 CreateHighLowResAndSetAllTilesVisible(); | 2953 CreateHighLowResAndSetAllTilesVisible(); |
2986 | 2954 |
2987 // Initialize all high-res tiles in the active layer. | 2955 // Initialize all high-res tiles in the active layer. |
2988 active_layer_->SetAllTilesReadyInTiling(active_layer_->HighResTiling()); | 2956 active_layer_->SetAllTilesReadyInTiling(active_layer_->HighResTiling()); |
2989 | 2957 |
2990 pending_layer_->MarkVisibleResourcesAsRequired(); | |
2991 | |
2992 // The unshared high-res tiles are not ready, so we cannot activate. | 2958 // The unshared high-res tiles are not ready, so we cannot activate. |
2993 EXPECT_FALSE(pending_layer_->AllTilesRequiredForActivationAreReadyToDraw()); | 2959 EXPECT_FALSE(pending_layer_->AllTilesRequiredForActivationAreReadyToDraw()); |
2994 | 2960 |
2995 // When the unshared pending high-res tiles are ready, we can activate. | 2961 // When the unshared pending high-res tiles are ready, we can activate. |
2996 pending_layer_->SetAllTilesReadyInTiling(pending_layer_->HighResTiling()); | 2962 pending_layer_->SetAllTilesReadyInTiling(pending_layer_->HighResTiling()); |
2997 EXPECT_TRUE(pending_layer_->AllTilesRequiredForActivationAreReadyToDraw()); | 2963 EXPECT_TRUE(pending_layer_->AllTilesRequiredForActivationAreReadyToDraw()); |
2998 } | 2964 } |
2999 | 2965 |
3000 class NoLowResPictureLayerImplTest : public PictureLayerImplTest { | 2966 class NoLowResPictureLayerImplTest : public PictureLayerImplTest { |
3001 public: | 2967 public: |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3056 7.26f, // ideal contents scale | 3022 7.26f, // ideal contents scale |
3057 2.2f, // device scale | 3023 2.2f, // device scale |
3058 3.3f, // page scale | 3024 3.3f, // page scale |
3059 1.f, // maximum animation scale | 3025 1.f, // maximum animation scale |
3060 false); | 3026 false); |
3061 ASSERT_EQ(3u, pending_layer_->tilings()->num_tilings()); | 3027 ASSERT_EQ(3u, pending_layer_->tilings()->num_tilings()); |
3062 EXPECT_FLOAT_EQ(7.26f, | 3028 EXPECT_FLOAT_EQ(7.26f, |
3063 pending_layer_->tilings()->tiling_at(0)->contents_scale()); | 3029 pending_layer_->tilings()->tiling_at(0)->contents_scale()); |
3064 } | 3030 } |
3065 | 3031 |
3066 TEST_F(NoLowResPictureLayerImplTest, MarkRequiredNullTiles) { | |
3067 gfx::Size tile_size(100, 100); | |
3068 gfx::Size layer_bounds(1000, 1000); | |
3069 | |
3070 scoped_refptr<FakePicturePileImpl> pending_pile = | |
3071 FakePicturePileImpl::CreateEmptyPile(tile_size, layer_bounds); | |
3072 // Layers with entirely empty piles can't get tilings. | |
3073 pending_pile->AddRecordingAt(0, 0); | |
3074 | |
3075 SetupPendingTree(pending_pile); | |
3076 | |
3077 ASSERT_TRUE(pending_layer_->CanHaveTilings()); | |
3078 pending_layer_->AddTiling(1.0f); | |
3079 pending_layer_->AddTiling(2.0f); | |
3080 | |
3081 // It should be safe to call this (and MarkVisibleResourcesAsRequired) | |
3082 // on a layer with no recordings. | |
3083 host_impl_.pending_tree()->UpdateDrawProperties(); | |
3084 pending_layer_->MarkVisibleResourcesAsRequired(); | |
3085 } | |
3086 | |
3087 TEST_F(NoLowResPictureLayerImplTest, NothingRequiredIfAllHighResTilesShared) { | 3032 TEST_F(NoLowResPictureLayerImplTest, NothingRequiredIfAllHighResTilesShared) { |
3088 gfx::Size layer_bounds(400, 400); | 3033 gfx::Size layer_bounds(400, 400); |
3089 gfx::Size tile_size(100, 100); | 3034 gfx::Size tile_size(100, 100); |
3090 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size); | 3035 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size); |
3091 | 3036 |
3092 CreateHighLowResAndSetAllTilesVisible(); | 3037 CreateHighLowResAndSetAllTilesVisible(); |
3093 | 3038 |
3094 Tile* some_active_tile = | 3039 Tile* some_active_tile = |
3095 active_layer_->HighResTiling()->AllTilesForTesting()[0]; | 3040 active_layer_->HighResTiling()->AllTilesForTesting()[0]; |
3096 EXPECT_FALSE(some_active_tile->IsReadyToDraw()); | 3041 EXPECT_FALSE(some_active_tile->IsReadyToDraw()); |
3097 | 3042 |
3098 // All tiles shared (no invalidation), so even though the active tree's | 3043 // All tiles shared (no invalidation), so even though the active tree's |
3099 // tiles aren't ready, there is nothing required. | 3044 // tiles aren't ready, there is nothing required. |
3100 pending_layer_->MarkVisibleResourcesAsRequired(); | 3045 pending_layer_->HighResTiling()->UpdateAllTilePrioritiesForTesting(); |
3101 AssertNoTilesRequired(pending_layer_->HighResTiling()); | 3046 AssertNoTilesRequired(pending_layer_->HighResTiling()); |
3102 if (host_impl_.settings().create_low_res_tiling) { | 3047 if (host_impl_.settings().create_low_res_tiling) { |
3048 pending_layer_->LowResTiling()->UpdateAllTilePrioritiesForTesting(); | |
3103 AssertNoTilesRequired(pending_layer_->LowResTiling()); | 3049 AssertNoTilesRequired(pending_layer_->LowResTiling()); |
3104 } | 3050 } |
3105 } | 3051 } |
3106 | 3052 |
3107 TEST_F(NoLowResPictureLayerImplTest, NothingRequiredIfActiveMissingTiles) { | 3053 TEST_F(NoLowResPictureLayerImplTest, NothingRequiredIfActiveMissingTiles) { |
3108 gfx::Size layer_bounds(400, 400); | 3054 gfx::Size layer_bounds(400, 400); |
3109 gfx::Size tile_size(100, 100); | 3055 gfx::Size tile_size(100, 100); |
3110 scoped_refptr<FakePicturePileImpl> pending_pile = | 3056 scoped_refptr<FakePicturePileImpl> pending_pile = |
3111 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 3057 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
3112 // This pile will create tilings, but has no recordings so will not create any | 3058 // This pile will create tilings, but has no recordings so will not create any |
(...skipping 10 matching lines...) Expand all Loading... | |
3123 CreateHighLowResAndSetAllTilesVisible(); | 3069 CreateHighLowResAndSetAllTilesVisible(); |
3124 | 3070 |
3125 // Active layer has tilings, but no tiles due to missing recordings. | 3071 // Active layer has tilings, but no tiles due to missing recordings. |
3126 EXPECT_TRUE(active_layer_->CanHaveTilings()); | 3072 EXPECT_TRUE(active_layer_->CanHaveTilings()); |
3127 EXPECT_EQ(active_layer_->tilings()->num_tilings(), | 3073 EXPECT_EQ(active_layer_->tilings()->num_tilings(), |
3128 host_impl_.settings().create_low_res_tiling ? 2u : 1u); | 3074 host_impl_.settings().create_low_res_tiling ? 2u : 1u); |
3129 EXPECT_EQ(active_layer_->HighResTiling()->AllTilesForTesting().size(), 0u); | 3075 EXPECT_EQ(active_layer_->HighResTiling()->AllTilesForTesting().size(), 0u); |
3130 | 3076 |
3131 // Since the active layer has no tiles at all, the pending layer doesn't | 3077 // Since the active layer has no tiles at all, the pending layer doesn't |
3132 // need content in order to activate. | 3078 // need content in order to activate. |
3133 pending_layer_->MarkVisibleResourcesAsRequired(); | 3079 pending_layer_->HighResTiling()->UpdateAllTilePrioritiesForTesting(); |
3134 AssertNoTilesRequired(pending_layer_->HighResTiling()); | 3080 AssertNoTilesRequired(pending_layer_->HighResTiling()); |
3135 if (host_impl_.settings().create_low_res_tiling) | 3081 if (host_impl_.settings().create_low_res_tiling) { |
3082 pending_layer_->LowResTiling()->UpdateAllTilePrioritiesForTesting(); | |
3136 AssertNoTilesRequired(pending_layer_->LowResTiling()); | 3083 AssertNoTilesRequired(pending_layer_->LowResTiling()); |
3084 } | |
3137 } | 3085 } |
3138 | 3086 |
3139 TEST_F(NoLowResPictureLayerImplTest, | 3087 TEST_F(NoLowResPictureLayerImplTest, |
3140 ResourcelessSoftwareDrawHasValidViewportForTilePriority) { | 3088 ResourcelessSoftwareDrawHasValidViewportForTilePriority) { |
3141 base::TimeTicks time_ticks; | 3089 base::TimeTicks time_ticks; |
3142 time_ticks += base::TimeDelta::FromMilliseconds(1); | 3090 time_ticks += base::TimeDelta::FromMilliseconds(1); |
3143 host_impl_.SetCurrentBeginFrameArgs( | 3091 host_impl_.SetCurrentBeginFrameArgs( |
3144 CreateBeginFrameArgsForTesting(time_ticks)); | 3092 CreateBeginFrameArgsForTesting(time_ticks)); |
3145 | 3093 |
3146 gfx::Size tile_size(100, 100); | 3094 gfx::Size tile_size(100, 100); |
(...skipping 555 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3702 ++it) { | 3650 ++it) { |
3703 Tile* tile = *it; | 3651 Tile* tile = *it; |
3704 | 3652 |
3705 EXPECT_FALSE(tile->is_occluded(PENDING_TREE)); | 3653 EXPECT_FALSE(tile->is_occluded(PENDING_TREE)); |
3706 | 3654 |
3707 bool tile_is_visible = | 3655 bool tile_is_visible = |
3708 tile->content_rect().Intersects(pending_layer_->visible_content_rect()); | 3656 tile->content_rect().Intersects(pending_layer_->visible_content_rect()); |
3709 if (tile_is_visible) | 3657 if (tile_is_visible) |
3710 unoccluded_tile_count++; | 3658 unoccluded_tile_count++; |
3711 } | 3659 } |
3712 EXPECT_EQ(unoccluded_tile_count, 20 + 2); | 3660 EXPECT_EQ(20 + 2, unoccluded_tile_count); |
3713 | 3661 |
3714 // Full occlusion. | 3662 // Full occlusion. |
3715 layer1->SetPosition(gfx::Point(0, 0)); | 3663 layer1->SetPosition(gfx::Point(0, 0)); |
3716 | 3664 |
3717 time_ticks += base::TimeDelta::FromMilliseconds(200); | 3665 time_ticks += base::TimeDelta::FromMilliseconds(200); |
3718 host_impl_.SetCurrentBeginFrameArgs( | 3666 host_impl_.SetCurrentBeginFrameArgs( |
3719 CreateBeginFrameArgsForTesting(time_ticks)); | 3667 CreateBeginFrameArgsForTesting(time_ticks)); |
3720 host_impl_.pending_tree()->UpdateDrawProperties(); | 3668 host_impl_.pending_tree()->UpdateDrawProperties(); |
3721 | 3669 |
3722 unoccluded_tile_count = 0; | 3670 unoccluded_tile_count = 0; |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3790 layer1->SetContentsOpaque(true); | 3738 layer1->SetContentsOpaque(true); |
3791 layer1->SetPosition(occluding_layer_position); | 3739 layer1->SetPosition(occluding_layer_position); |
3792 | 3740 |
3793 time_ticks += base::TimeDelta::FromMilliseconds(200); | 3741 time_ticks += base::TimeDelta::FromMilliseconds(200); |
3794 host_impl_.SetCurrentBeginFrameArgs( | 3742 host_impl_.SetCurrentBeginFrameArgs( |
3795 CreateBeginFrameArgsForTesting(time_ticks)); | 3743 CreateBeginFrameArgsForTesting(time_ticks)); |
3796 host_impl_.pending_tree()->UpdateDrawProperties(); | 3744 host_impl_.pending_tree()->UpdateDrawProperties(); |
3797 | 3745 |
3798 for (size_t i = 0; i < pending_layer_->num_tilings(); ++i) { | 3746 for (size_t i = 0; i < pending_layer_->num_tilings(); ++i) { |
3799 PictureLayerTiling* tiling = pending_layer_->tilings()->tiling_at(i); | 3747 PictureLayerTiling* tiling = pending_layer_->tilings()->tiling_at(i); |
3748 tiling->UpdateAllTilePrioritiesForTesting(); | |
3800 | 3749 |
3801 occluded_tile_count = 0; | 3750 occluded_tile_count = 0; |
3802 for (PictureLayerTiling::CoverageIterator iter( | 3751 for (PictureLayerTiling::CoverageIterator iter( |
3803 tiling, | 3752 tiling, |
3804 pending_layer_->contents_scale_x(), | 3753 pending_layer_->contents_scale_x(), |
3805 gfx::Rect(layer_bounds)); | 3754 gfx::Rect(layer_bounds)); |
3806 iter; | 3755 iter; |
3807 ++iter) { | 3756 ++iter) { |
3808 if (!*iter) | 3757 if (!*iter) |
3809 continue; | 3758 continue; |
(...skipping 19 matching lines...) Expand all Loading... | |
3829 // Full occlusion. | 3778 // Full occlusion. |
3830 layer1->SetPosition(gfx::PointF(0, 0)); | 3779 layer1->SetPosition(gfx::PointF(0, 0)); |
3831 | 3780 |
3832 time_ticks += base::TimeDelta::FromMilliseconds(200); | 3781 time_ticks += base::TimeDelta::FromMilliseconds(200); |
3833 host_impl_.SetCurrentBeginFrameArgs( | 3782 host_impl_.SetCurrentBeginFrameArgs( |
3834 CreateBeginFrameArgsForTesting(time_ticks)); | 3783 CreateBeginFrameArgsForTesting(time_ticks)); |
3835 host_impl_.pending_tree()->UpdateDrawProperties(); | 3784 host_impl_.pending_tree()->UpdateDrawProperties(); |
3836 | 3785 |
3837 for (size_t i = 0; i < pending_layer_->num_tilings(); ++i) { | 3786 for (size_t i = 0; i < pending_layer_->num_tilings(); ++i) { |
3838 PictureLayerTiling* tiling = pending_layer_->tilings()->tiling_at(i); | 3787 PictureLayerTiling* tiling = pending_layer_->tilings()->tiling_at(i); |
3788 tiling->UpdateAllTilePrioritiesForTesting(); | |
3789 tiling->UpdateAllTilePrioritiesForTesting(); | |
danakj
2014/09/19 01:41:46
Why twice?
vmpstr
2014/09/19 21:22:52
For good measure? :P Removed.
| |
3839 | 3790 |
3840 occluded_tile_count = 0; | 3791 occluded_tile_count = 0; |
3841 for (PictureLayerTiling::CoverageIterator iter( | 3792 for (PictureLayerTiling::CoverageIterator iter( |
3842 tiling, | 3793 tiling, |
3843 pending_layer_->contents_scale_x(), | 3794 pending_layer_->contents_scale_x(), |
3844 gfx::Rect(layer_bounds)); | 3795 gfx::Rect(layer_bounds)); |
3845 iter; | 3796 iter; |
3846 ++iter) { | 3797 ++iter) { |
3847 if (!*iter) | 3798 if (!*iter) |
3848 continue; | 3799 continue; |
3849 const Tile* tile = *iter; | 3800 const Tile* tile = *iter; |
3850 | 3801 |
3851 if (tile->is_occluded(PENDING_TREE)) { | 3802 if (tile->is_occluded(PENDING_TREE)) { |
3852 EXPECT_FALSE(tile->required_for_activation()); | 3803 EXPECT_FALSE(tile->required_for_activation()); |
3853 occluded_tile_count++; | 3804 occluded_tile_count++; |
3854 } | 3805 } |
3855 } | 3806 } |
3856 switch (i) { | 3807 switch (i) { |
3857 case 0: | 3808 case 0: |
3858 EXPECT_EQ(occluded_tile_count, 25); | 3809 EXPECT_EQ(25, occluded_tile_count); |
3859 break; | 3810 break; |
3860 case 1: | 3811 case 1: |
3861 EXPECT_EQ(occluded_tile_count, 4); | 3812 EXPECT_EQ(4, occluded_tile_count); |
3862 break; | 3813 break; |
3863 default: | 3814 default: |
3864 NOTREACHED(); | 3815 NOTREACHED(); |
3865 } | 3816 } |
3866 } | 3817 } |
3867 } | 3818 } |
3868 | 3819 |
3869 TEST_F(OcclusionTrackingPictureLayerImplTest, OcclusionForDifferentScales) { | 3820 TEST_F(OcclusionTrackingPictureLayerImplTest, OcclusionForDifferentScales) { |
3870 gfx::Size tile_size(102, 102); | 3821 gfx::Size tile_size(102, 102); |
3871 gfx::Size layer_bounds(1000, 1000); | 3822 gfx::Size layer_bounds(1000, 1000); |
(...skipping 26 matching lines...) Expand all Loading... | |
3898 | 3849 |
3899 host_impl_.SetViewportSize(viewport_size); | 3850 host_impl_.SetViewportSize(viewport_size); |
3900 host_impl_.pending_tree()->UpdateDrawProperties(); | 3851 host_impl_.pending_tree()->UpdateDrawProperties(); |
3901 | 3852 |
3902 int tiling_count = 0; | 3853 int tiling_count = 0; |
3903 int occluded_tile_count = 0; | 3854 int occluded_tile_count = 0; |
3904 for (std::vector<PictureLayerTiling*>::iterator tiling_iterator = | 3855 for (std::vector<PictureLayerTiling*>::iterator tiling_iterator = |
3905 tilings.begin(); | 3856 tilings.begin(); |
3906 tiling_iterator != tilings.end(); | 3857 tiling_iterator != tilings.end(); |
3907 ++tiling_iterator) { | 3858 ++tiling_iterator) { |
3859 (*tiling_iterator)->UpdateAllTilePrioritiesForTesting(); | |
3908 std::vector<Tile*> tiles = (*tiling_iterator)->AllTilesForTesting(); | 3860 std::vector<Tile*> tiles = (*tiling_iterator)->AllTilesForTesting(); |
3909 | 3861 |
3910 occluded_tile_count = 0; | 3862 occluded_tile_count = 0; |
3911 for (size_t i = 0; i < tiles.size(); ++i) { | 3863 for (size_t i = 0; i < tiles.size(); ++i) { |
3912 if (tiles[i]->is_occluded(PENDING_TREE)) { | 3864 if (tiles[i]->is_occluded(PENDING_TREE)) { |
3913 gfx::Rect scaled_content_rect = ScaleToEnclosingRect( | 3865 gfx::Rect scaled_content_rect = ScaleToEnclosingRect( |
3914 tiles[i]->content_rect(), 1.0f / tiles[i]->contents_scale()); | 3866 tiles[i]->content_rect(), 1.0f / tiles[i]->contents_scale()); |
3915 EXPECT_GE(scaled_content_rect.x(), occluding_layer_position.x()); | 3867 EXPECT_GE(scaled_content_rect.x(), occluding_layer_position.x()); |
3916 occluded_tile_count++; | 3868 occluded_tile_count++; |
3917 } | 3869 } |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3965 // Partially invalidate the pending layer. | 3917 // Partially invalidate the pending layer. |
3966 pending_layer_->set_invalidation(invalidation_rect); | 3918 pending_layer_->set_invalidation(invalidation_rect); |
3967 | 3919 |
3968 host_impl_.SetViewportSize(viewport_size); | 3920 host_impl_.SetViewportSize(viewport_size); |
3969 | 3921 |
3970 active_layer_->CreateDefaultTilingsAndTiles(); | 3922 active_layer_->CreateDefaultTilingsAndTiles(); |
3971 pending_layer_->CreateDefaultTilingsAndTiles(); | 3923 pending_layer_->CreateDefaultTilingsAndTiles(); |
3972 | 3924 |
3973 for (size_t i = 0; i < pending_layer_->num_tilings(); ++i) { | 3925 for (size_t i = 0; i < pending_layer_->num_tilings(); ++i) { |
3974 PictureLayerTiling* tiling = pending_layer_->tilings()->tiling_at(i); | 3926 PictureLayerTiling* tiling = pending_layer_->tilings()->tiling_at(i); |
3927 tiling->UpdateAllTilePrioritiesForTesting(); | |
3975 | 3928 |
3976 for (PictureLayerTiling::CoverageIterator iter( | 3929 for (PictureLayerTiling::CoverageIterator iter( |
3977 tiling, | 3930 tiling, |
3978 pending_layer_->contents_scale_x(), | 3931 pending_layer_->contents_scale_x(), |
3979 gfx::Rect(layer_bounds)); | 3932 gfx::Rect(layer_bounds)); |
3980 iter; | 3933 iter; |
3981 ++iter) { | 3934 ++iter) { |
3982 if (!*iter) | 3935 if (!*iter) |
3983 continue; | 3936 continue; |
3984 const Tile* tile = *iter; | 3937 const Tile* tile = *iter; |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4109 // The total expected number of occluded tiles on all tilings for each of the | 4062 // The total expected number of occluded tiles on all tilings for each of the |
4110 // 3 tree priorities. | 4063 // 3 tree priorities. |
4111 size_t total_expected_occluded_tile_count[] = {13u, 43u, 43u}; | 4064 size_t total_expected_occluded_tile_count[] = {13u, 43u, 43u}; |
4112 | 4065 |
4113 ASSERT_EQ(arraysize(total_expected_occluded_tile_count), NUM_TREE_PRIORITIES); | 4066 ASSERT_EQ(arraysize(total_expected_occluded_tile_count), NUM_TREE_PRIORITIES); |
4114 | 4067 |
4115 // Verify number of occluded tiles on the pending layer for each tiling. | 4068 // Verify number of occluded tiles on the pending layer for each tiling. |
4116 for (size_t i = 0; i < pending_layer_->num_tilings(); ++i) { | 4069 for (size_t i = 0; i < pending_layer_->num_tilings(); ++i) { |
4117 PictureLayerTiling* tiling = pending_layer_->tilings()->tiling_at(i); | 4070 PictureLayerTiling* tiling = pending_layer_->tilings()->tiling_at(i); |
4118 tiling->CreateAllTilesForTesting(); | 4071 tiling->CreateAllTilesForTesting(); |
4072 tiling->UpdateAllTilePrioritiesForTesting(); | |
4119 | 4073 |
4120 size_t occluded_tile_count_on_pending = 0u; | 4074 size_t occluded_tile_count_on_pending = 0u; |
4121 size_t occluded_tile_count_on_active = 0u; | 4075 size_t occluded_tile_count_on_active = 0u; |
4122 size_t occluded_tile_count_on_both = 0u; | 4076 size_t occluded_tile_count_on_both = 0u; |
4123 for (PictureLayerTiling::CoverageIterator iter( | 4077 for (PictureLayerTiling::CoverageIterator iter( |
4124 tiling, | 4078 tiling, |
4125 pending_layer_->contents_scale_x(), | 4079 pending_layer_->contents_scale_x(), |
4126 gfx::Rect(layer_bounds)); | 4080 gfx::Rect(layer_bounds)); |
4127 iter; | 4081 iter; |
4128 ++iter) { | 4082 ++iter) { |
(...skipping 14 matching lines...) Expand all Loading... | |
4143 << i; | 4097 << i; |
4144 EXPECT_EQ(expected_occluded_tile_count_on_both[i], | 4098 EXPECT_EQ(expected_occluded_tile_count_on_both[i], |
4145 occluded_tile_count_on_both) | 4099 occluded_tile_count_on_both) |
4146 << i; | 4100 << i; |
4147 } | 4101 } |
4148 | 4102 |
4149 // Verify number of occluded tiles on the active layer for each tiling. | 4103 // Verify number of occluded tiles on the active layer for each tiling. |
4150 for (size_t i = 0; i < active_layer_->num_tilings(); ++i) { | 4104 for (size_t i = 0; i < active_layer_->num_tilings(); ++i) { |
4151 PictureLayerTiling* tiling = active_layer_->tilings()->tiling_at(i); | 4105 PictureLayerTiling* tiling = active_layer_->tilings()->tiling_at(i); |
4152 tiling->CreateAllTilesForTesting(); | 4106 tiling->CreateAllTilesForTesting(); |
4107 tiling->UpdateAllTilePrioritiesForTesting(); | |
4153 | 4108 |
4154 size_t occluded_tile_count_on_pending = 0u; | 4109 size_t occluded_tile_count_on_pending = 0u; |
4155 size_t occluded_tile_count_on_active = 0u; | 4110 size_t occluded_tile_count_on_active = 0u; |
4156 size_t occluded_tile_count_on_both = 0u; | 4111 size_t occluded_tile_count_on_both = 0u; |
4157 for (PictureLayerTiling::CoverageIterator iter( | 4112 for (PictureLayerTiling::CoverageIterator iter( |
4158 tiling, | 4113 tiling, |
4159 pending_layer_->contents_scale_x(), | 4114 pending_layer_->contents_scale_x(), |
4160 gfx::Rect(layer_bounds)); | 4115 gfx::Rect(layer_bounds)); |
4161 iter; | 4116 iter; |
4162 ++iter) { | 4117 ++iter) { |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4217 ActivateTree(); | 4172 ActivateTree(); |
4218 EXPECT_TRUE(active_layer_->GetRecycledTwinLayer()); | 4173 EXPECT_TRUE(active_layer_->GetRecycledTwinLayer()); |
4219 EXPECT_EQ(old_pending_layer_, active_layer_->GetRecycledTwinLayer()); | 4174 EXPECT_EQ(old_pending_layer_, active_layer_->GetRecycledTwinLayer()); |
4220 | 4175 |
4221 host_impl_.ResetRecycleTreeForTesting(); | 4176 host_impl_.ResetRecycleTreeForTesting(); |
4222 EXPECT_FALSE(active_layer_->GetRecycledTwinLayer()); | 4177 EXPECT_FALSE(active_layer_->GetRecycledTwinLayer()); |
4223 } | 4178 } |
4224 | 4179 |
4225 } // namespace | 4180 } // namespace |
4226 } // namespace cc | 4181 } // namespace cc |
OLD | NEW |