Chromium Code Reviews| 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 469 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 480 gfx::Size layer_bounds(400, 400); | 480 gfx::Size layer_bounds(400, 400); |
| 481 SetupDefaultTrees(layer_bounds); | 481 SetupDefaultTrees(layer_bounds); |
| 482 | 482 |
| 483 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, 0.f, | 483 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, 0.f, |
| 484 false); | 484 false); |
| 485 | 485 |
| 486 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); | 486 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); |
| 487 | 487 |
| 488 // Update tiles with viewport for tile priority as (0, 0, 100, 100) and the | 488 // Update tiles with viewport for tile priority as (0, 0, 100, 100) and the |
| 489 // identify transform for tile priority. | 489 // identify transform for tile priority. |
| 490 bool resourceless_software_draw = false; | 490 gfx::Rect viewport_rect_for_tile_priority = gfx::Rect(0, 0, 100, 100); |
| 491 gfx::Rect viewport = gfx::Rect(layer_bounds), | |
| 492 viewport_rect_for_tile_priority = gfx::Rect(0, 0, 100, 100); | |
| 493 gfx::Transform transform, transform_for_tile_priority; | 491 gfx::Transform transform, transform_for_tile_priority; |
| 494 | 492 |
| 495 host_impl_.SetExternalDrawConstraints(transform, | 493 host_impl_.SetExternalDrawConstraints(viewport_rect_for_tile_priority, |
| 496 viewport, | 494 transform_for_tile_priority); |
| 497 viewport, | |
| 498 viewport_rect_for_tile_priority, | |
| 499 transform_for_tile_priority, | |
| 500 resourceless_software_draw); | |
| 501 bool update_lcd_text = false; | 495 bool update_lcd_text = false; |
| 502 host_impl_.active_tree()->UpdateDrawProperties(update_lcd_text); | 496 host_impl_.active_tree()->UpdateDrawProperties(update_lcd_text); |
| 503 | 497 |
| 504 gfx::Rect viewport_rect_for_tile_priority_in_view_space = | 498 gfx::Rect viewport_rect_for_tile_priority_in_view_space = |
| 505 viewport_rect_for_tile_priority; | 499 viewport_rect_for_tile_priority; |
| 506 | 500 |
| 507 // Verify the viewport rect for tile priority is used in picture layer tiling. | 501 // Verify the viewport rect for tile priority is used in picture layer tiling. |
| 508 EXPECT_EQ(viewport_rect_for_tile_priority_in_view_space, | 502 EXPECT_EQ(viewport_rect_for_tile_priority_in_view_space, |
| 509 active_layer_->viewport_rect_for_tile_priority_in_content_space()); | 503 active_layer_->viewport_rect_for_tile_priority_in_content_space()); |
| 510 PictureLayerTilingSet* tilings = active_layer_->tilings(); | 504 PictureLayerTilingSet* tilings = active_layer_->tilings(); |
| 511 for (size_t i = 0; i < tilings->num_tilings(); i++) { | 505 for (size_t i = 0; i < tilings->num_tilings(); i++) { |
| 512 PictureLayerTiling* tiling = tilings->tiling_at(i); | 506 PictureLayerTiling* tiling = tilings->tiling_at(i); |
| 513 EXPECT_EQ( | 507 EXPECT_EQ( |
| 514 tiling->GetCurrentVisibleRectForTesting(), | 508 tiling->GetCurrentVisibleRectForTesting(), |
| 515 gfx::ScaleToEnclosingRect(viewport_rect_for_tile_priority_in_view_space, | 509 gfx::ScaleToEnclosingRect(viewport_rect_for_tile_priority_in_view_space, |
| 516 tiling->contents_scale())); | 510 tiling->contents_scale())); |
| 517 } | 511 } |
| 518 | 512 |
| 519 // Update tiles with viewport for tile priority as (200, 200, 100, 100) in | 513 // Update tiles with viewport for tile priority as (200, 200, 100, 100) in |
| 520 // screen space and the transform for tile priority is translated and | 514 // screen space and the transform for tile priority is translated and |
| 521 // rotated. The actual viewport for tile priority used by PictureLayerImpl | 515 // rotated. The actual viewport for tile priority used by PictureLayerImpl |
| 522 // should be (200, 200, 100, 100) applied with the said transform. | 516 // should be (200, 200, 100, 100) applied with the said transform. |
| 523 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); | 517 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); |
| 524 | 518 |
| 525 viewport_rect_for_tile_priority = gfx::Rect(200, 200, 100, 100); | 519 viewport_rect_for_tile_priority = gfx::Rect(200, 200, 100, 100); |
| 526 transform_for_tile_priority.Translate(100, 100); | 520 transform_for_tile_priority.Translate(100, 100); |
| 527 transform_for_tile_priority.Rotate(45); | 521 transform_for_tile_priority.Rotate(45); |
| 528 host_impl_.SetExternalDrawConstraints(transform, | 522 host_impl_.SetExternalDrawConstraints(viewport_rect_for_tile_priority, |
| 529 viewport, | 523 transform_for_tile_priority); |
| 530 viewport, | |
| 531 viewport_rect_for_tile_priority, | |
| 532 transform_for_tile_priority, | |
| 533 resourceless_software_draw); | |
| 534 host_impl_.active_tree()->UpdateDrawProperties(update_lcd_text); | 524 host_impl_.active_tree()->UpdateDrawProperties(update_lcd_text); |
| 535 | 525 |
| 536 gfx::Transform screen_to_view(gfx::Transform::kSkipInitialization); | 526 gfx::Transform screen_to_view(gfx::Transform::kSkipInitialization); |
| 537 bool success = transform_for_tile_priority.GetInverse(&screen_to_view); | 527 bool success = transform_for_tile_priority.GetInverse(&screen_to_view); |
| 538 EXPECT_TRUE(success); | 528 EXPECT_TRUE(success); |
| 539 | 529 |
| 540 // Note that we don't clip this to the layer bounds, since it is expected that | 530 // Note that we don't clip this to the layer bounds, since it is expected that |
| 541 // the rect will sometimes be outside of the layer bounds. If we clip to | 531 // the rect will sometimes be outside of the layer bounds. If we clip to |
| 542 // bounds, then tile priorities will end up being incorrect in cases of fully | 532 // bounds, then tile priorities will end up being incorrect in cases of fully |
| 543 // offscreen layer. | 533 // offscreen layer. |
| (...skipping 20 matching lines...) Expand all Loading... | |
| 564 | 554 |
| 565 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, 0.f, | 555 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, 0.f, |
| 566 false); | 556 false); |
| 567 | 557 |
| 568 // UpdateTiles with valid viewport. Should update tile viewport. | 558 // UpdateTiles with valid viewport. Should update tile viewport. |
| 569 // Note viewport is considered invalid if and only if in resourceless | 559 // Note viewport is considered invalid if and only if in resourceless |
| 570 // software draw. | 560 // software draw. |
| 571 bool resourceless_software_draw = false; | 561 bool resourceless_software_draw = false; |
| 572 gfx::Rect viewport = gfx::Rect(layer_bounds); | 562 gfx::Rect viewport = gfx::Rect(layer_bounds); |
| 573 gfx::Transform transform; | 563 gfx::Transform transform; |
| 574 host_impl_.SetExternalDrawConstraints(transform, | 564 host_impl_.SetExternalDrawConstraints(viewport, transform); |
| 575 viewport, | |
| 576 viewport, | |
| 577 viewport, | |
| 578 transform, | |
| 579 resourceless_software_draw); | |
| 580 active_layer_->draw_properties().visible_layer_rect = viewport; | 565 active_layer_->draw_properties().visible_layer_rect = viewport; |
| 581 active_layer_->draw_properties().screen_space_transform = transform; | 566 active_layer_->draw_properties().screen_space_transform = transform; |
| 582 active_layer_->UpdateTiles(resourceless_software_draw); | 567 active_layer_->UpdateTiles(resourceless_software_draw); |
| 583 | 568 |
| 584 gfx::Rect visible_rect_for_tile_priority = | 569 gfx::Rect visible_rect_for_tile_priority = |
| 585 active_layer_->visible_rect_for_tile_priority(); | 570 active_layer_->visible_rect_for_tile_priority(); |
| 586 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty()); | 571 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty()); |
| 587 gfx::Transform screen_space_transform_for_tile_priority = | 572 gfx::Transform screen_space_transform_for_tile_priority = |
| 588 active_layer_->screen_space_transform(); | 573 active_layer_->screen_space_transform(); |
| 589 | 574 |
| 590 // Expand viewport and set it as invalid for prioritizing tiles. | 575 // Expand viewport and set it as invalid for prioritizing tiles. |
| 591 // Should update viewport and transform, but not update visible rect. | 576 // Should update viewport and transform, but not update visible rect. |
| 592 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); | 577 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); |
| 593 resourceless_software_draw = true; | 578 resourceless_software_draw = true; |
| 594 viewport = gfx::ScaleToEnclosingRect(viewport, 2); | 579 viewport = gfx::ScaleToEnclosingRect(viewport, 2); |
| 595 transform.Translate(1.f, 1.f); | 580 transform.Translate(1.f, 1.f); |
| 596 active_layer_->draw_properties().visible_layer_rect = viewport; | 581 active_layer_->draw_properties().visible_layer_rect = viewport; |
| 597 active_layer_->draw_properties().screen_space_transform = transform; | 582 active_layer_->draw_properties().screen_space_transform = transform; |
| 598 host_impl_.SetExternalDrawConstraints(transform, | 583 host_impl_.SetExternalDrawConstraints(viewport, transform); |
| 599 viewport, | |
| 600 viewport, | |
| 601 viewport, | |
| 602 transform, | |
| 603 resourceless_software_draw); | |
| 604 active_layer_->UpdateTiles(resourceless_software_draw); | 584 active_layer_->UpdateTiles(resourceless_software_draw); |
| 605 | 585 |
| 606 // Transform for tile priority is updated. | 586 // Transform for tile priority is updated. |
| 607 EXPECT_TRANSFORMATION_MATRIX_EQ(transform, | 587 EXPECT_TRANSFORMATION_MATRIX_EQ(transform, |
| 608 active_layer_->screen_space_transform()); | 588 active_layer_->screen_space_transform()); |
| 609 // Visible rect for tile priority retains old value. | 589 // Visible rect for tile priority retains old value. |
| 610 EXPECT_EQ(visible_rect_for_tile_priority, | 590 EXPECT_EQ(visible_rect_for_tile_priority, |
| 611 active_layer_->visible_rect_for_tile_priority()); | 591 active_layer_->visible_rect_for_tile_priority()); |
| 612 | 592 |
| 613 // Keep expanded viewport but mark it valid. Should update tile viewport. | 593 // Keep expanded viewport but mark it valid. Should update tile viewport. |
| 614 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); | 594 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); |
| 615 resourceless_software_draw = false; | 595 resourceless_software_draw = false; |
| 616 host_impl_.SetExternalDrawConstraints(transform, | 596 host_impl_.SetExternalDrawConstraints(viewport, transform); |
| 617 viewport, | |
| 618 viewport, | |
| 619 viewport, | |
| 620 transform, | |
| 621 resourceless_software_draw); | |
| 622 active_layer_->UpdateTiles(resourceless_software_draw); | 597 active_layer_->UpdateTiles(resourceless_software_draw); |
| 623 | 598 |
| 624 EXPECT_TRANSFORMATION_MATRIX_EQ(transform, | 599 EXPECT_TRANSFORMATION_MATRIX_EQ(transform, |
| 625 active_layer_->screen_space_transform()); | 600 active_layer_->screen_space_transform()); |
| 626 EXPECT_EQ(viewport, active_layer_->visible_rect_for_tile_priority()); | 601 EXPECT_EQ(viewport, active_layer_->visible_rect_for_tile_priority()); |
| 627 } | 602 } |
| 628 | 603 |
| 629 TEST_F(PictureLayerImplTest, ViewportRectForTilePriorityIsCached) { | 604 TEST_F(PictureLayerImplTest, ViewportRectForTilePriorityIsCached) { |
| 630 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); | 605 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); |
| 631 gfx::Size layer_bounds(400, 400); | 606 gfx::Size layer_bounds(400, 400); |
| 632 SetupDefaultTrees(layer_bounds); | 607 SetupDefaultTrees(layer_bounds); |
| 633 | 608 |
| 634 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, 0.f, | 609 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, 0.f, |
| 635 false); | 610 false); |
| 636 | 611 |
| 637 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); | 612 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); |
| 638 | 613 |
| 639 bool resourceless_software_draw = false; | |
| 640 gfx::Rect viewport = gfx::Rect(layer_bounds); | |
| 641 gfx::Rect viewport_rect_for_tile_priority(0, 0, 100, 100); | 614 gfx::Rect viewport_rect_for_tile_priority(0, 0, 100, 100); |
| 642 gfx::Transform transform, transform_for_tile_priority; | 615 gfx::Transform transform_for_tile_priority; |
| 643 | 616 |
| 644 host_impl_.SetExternalDrawConstraints( | 617 host_impl_.SetExternalDrawConstraints(viewport_rect_for_tile_priority, |
| 645 transform, viewport, viewport, viewport_rect_for_tile_priority, | 618 transform_for_tile_priority); |
| 646 transform_for_tile_priority, resourceless_software_draw); | |
| 647 bool update_lcd_text = false; | 619 bool update_lcd_text = false; |
| 648 host_impl_.active_tree()->UpdateDrawProperties(update_lcd_text); | 620 host_impl_.active_tree()->UpdateDrawProperties(update_lcd_text); |
| 649 | 621 |
| 650 EXPECT_EQ(viewport_rect_for_tile_priority, | 622 EXPECT_EQ(viewport_rect_for_tile_priority, |
| 651 active_layer_->viewport_rect_for_tile_priority_in_content_space()); | 623 active_layer_->viewport_rect_for_tile_priority_in_content_space()); |
| 652 | 624 |
| 653 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); | 625 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); |
| 654 | 626 |
| 655 gfx::Rect another_viewport_rect_for_tile_priority(11, 11, 50, 50); | 627 gfx::Rect another_viewport_rect_for_tile_priority(11, 11, 50, 50); |
| 656 host_impl_.SetExternalDrawConstraints( | 628 host_impl_.SetExternalDrawConstraints(another_viewport_rect_for_tile_priority, |
| 657 transform, viewport, viewport, another_viewport_rect_for_tile_priority, | 629 transform_for_tile_priority); |
| 658 transform_for_tile_priority, resourceless_software_draw); | |
| 659 | 630 |
| 660 // Didn't call UpdateDrawProperties yet. The viewport rect for tile priority | 631 // Didn't call UpdateDrawProperties yet. The viewport rect for tile priority |
| 661 // should remain to be the previously cached value. | 632 // should remain to be the previously cached value. |
| 662 EXPECT_EQ(viewport_rect_for_tile_priority, | 633 EXPECT_EQ(viewport_rect_for_tile_priority, |
| 663 active_layer_->viewport_rect_for_tile_priority_in_content_space()); | 634 active_layer_->viewport_rect_for_tile_priority_in_content_space()); |
| 664 host_impl_.active_tree()->UpdateDrawProperties(update_lcd_text); | 635 host_impl_.active_tree()->UpdateDrawProperties(update_lcd_text); |
| 665 | 636 |
| 666 // Now the UpdateDrawProperties is called. The viewport rect for tile | 637 // Now the UpdateDrawProperties is called. The viewport rect for tile |
| 667 // priority should be the latest value. | 638 // priority should be the latest value. |
| 668 EXPECT_EQ(another_viewport_rect_for_tile_priority, | 639 EXPECT_EQ(another_viewport_rect_for_tile_priority, |
| (...skipping 1102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1771 // tilings. | 1742 // tilings. |
| 1772 ActivateTree(); | 1743 ActivateTree(); |
| 1773 EXPECT_TRUE(active_layer_->CanHaveTilings()); | 1744 EXPECT_TRUE(active_layer_->CanHaveTilings()); |
| 1774 EXPECT_GT(active_layer_->ideal_contents_scale(), 0.f); | 1745 EXPECT_GT(active_layer_->ideal_contents_scale(), 0.f); |
| 1775 } | 1746 } |
| 1776 | 1747 |
| 1777 TEST_F(NoLowResPictureLayerImplTest, MarkRequiredOffscreenTiles) { | 1748 TEST_F(NoLowResPictureLayerImplTest, MarkRequiredOffscreenTiles) { |
| 1778 gfx::Size layer_bounds(200, 200); | 1749 gfx::Size layer_bounds(200, 200); |
| 1779 | 1750 |
| 1780 gfx::Transform transform; | 1751 gfx::Transform transform; |
| 1781 gfx::Transform transform_for_tile_priority; | |
| 1782 bool resourceless_software_draw = false; | 1752 bool resourceless_software_draw = false; |
| 1783 gfx::Rect viewport(0, 0, 100, 200); | 1753 gfx::Rect viewport(0, 0, 100, 200); |
| 1784 host_impl_.SetExternalDrawConstraints(transform, | 1754 host_impl_.SetExternalDrawConstraints(viewport, transform); |
| 1785 viewport, | 1755 host_impl_.SetExternalViewporForTesting(viewport); |
|
danakj
2015/11/24 21:17:30
Why is this needed for this test?
boliu
2015/11/24 23:27:37
Good question..
It's needed for the for the EXPEC
danakj
2015/12/10 22:33:54
There's a typo "SetExternalViewporForTesting" -> V
| |
| 1786 viewport, | |
| 1787 viewport, | |
| 1788 transform, | |
| 1789 resourceless_software_draw); | |
| 1790 | 1756 |
| 1791 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 1757 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = |
| 1792 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 1758 FakeDisplayListRasterSource::CreateFilled(layer_bounds); |
| 1793 SetupPendingTreeWithFixedTileSize(pending_raster_source, gfx::Size(100, 100), | 1759 SetupPendingTreeWithFixedTileSize(pending_raster_source, gfx::Size(100, 100), |
| 1794 Region()); | 1760 Region()); |
| 1795 | 1761 |
| 1796 EXPECT_EQ(1u, pending_layer_->num_tilings()); | 1762 EXPECT_EQ(1u, pending_layer_->num_tilings()); |
| 1797 EXPECT_EQ(viewport, pending_layer_->visible_rect_for_tile_priority()); | 1763 EXPECT_EQ(viewport, pending_layer_->visible_rect_for_tile_priority()); |
| 1798 | 1764 |
| 1799 base::TimeTicks time_ticks; | 1765 base::TimeTicks time_ticks; |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1833 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size, Region()); | 1799 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size, Region()); |
| 1834 | 1800 |
| 1835 ASSERT_EQ(1u, pending_layer_->num_tilings()); | 1801 ASSERT_EQ(1u, pending_layer_->num_tilings()); |
| 1836 ASSERT_EQ(1.f, pending_layer_->HighResTiling()->contents_scale()); | 1802 ASSERT_EQ(1.f, pending_layer_->HighResTiling()->contents_scale()); |
| 1837 | 1803 |
| 1838 // Set external viewport for tile priority. | 1804 // Set external viewport for tile priority. |
| 1839 gfx::Rect viewport = gfx::Rect(layer_bounds); | 1805 gfx::Rect viewport = gfx::Rect(layer_bounds); |
| 1840 gfx::Transform transform; | 1806 gfx::Transform transform; |
| 1841 gfx::Transform transform_for_tile_priority; | 1807 gfx::Transform transform_for_tile_priority; |
| 1842 bool resourceless_software_draw = false; | 1808 bool resourceless_software_draw = false; |
| 1843 host_impl_.SetExternalDrawConstraints(transform, | 1809 host_impl_.SetExternalDrawConstraints(external_viewport_for_tile_priority, |
| 1844 viewport, | 1810 transform_for_tile_priority); |
| 1845 viewport, | |
| 1846 external_viewport_for_tile_priority, | |
| 1847 transform_for_tile_priority, | |
| 1848 resourceless_software_draw); | |
| 1849 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); | 1811 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); |
| 1850 bool update_lcd_text = false; | 1812 bool update_lcd_text = false; |
| 1851 host_impl_.pending_tree()->UpdateDrawProperties(update_lcd_text); | 1813 host_impl_.pending_tree()->UpdateDrawProperties(update_lcd_text); |
| 1852 | 1814 |
| 1853 // Set visible content rect that is different from | 1815 // Set visible content rect that is different from |
| 1854 // external_viewport_for_tile_priority. | 1816 // external_viewport_for_tile_priority. |
| 1855 pending_layer_->draw_properties().visible_layer_rect = visible_layer_rect; | 1817 pending_layer_->draw_properties().visible_layer_rect = visible_layer_rect; |
| 1856 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); | 1818 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); |
| 1857 pending_layer_->UpdateTiles(resourceless_software_draw); | 1819 pending_layer_->UpdateTiles(resourceless_software_draw); |
| 1858 | 1820 |
| (...skipping 1724 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3583 | 3545 |
| 3584 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, 0.f, | 3546 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, 0.f, |
| 3585 false); | 3547 false); |
| 3586 | 3548 |
| 3587 // UpdateTiles with valid viewport. Should update tile viewport. | 3549 // UpdateTiles with valid viewport. Should update tile viewport. |
| 3588 // Note viewport is considered invalid if and only if in resourceless | 3550 // Note viewport is considered invalid if and only if in resourceless |
| 3589 // software draw. | 3551 // software draw. |
| 3590 bool resourceless_software_draw = false; | 3552 bool resourceless_software_draw = false; |
| 3591 gfx::Rect viewport = gfx::Rect(layer_bounds); | 3553 gfx::Rect viewport = gfx::Rect(layer_bounds); |
| 3592 gfx::Transform transform; | 3554 gfx::Transform transform; |
| 3593 host_impl_.SetExternalDrawConstraints(transform, | 3555 host_impl_.SetExternalDrawConstraints(viewport, transform); |
| 3594 viewport, | |
| 3595 viewport, | |
| 3596 viewport, | |
| 3597 transform, | |
| 3598 resourceless_software_draw); | |
| 3599 active_layer_->draw_properties().visible_layer_rect = viewport; | 3556 active_layer_->draw_properties().visible_layer_rect = viewport; |
| 3600 active_layer_->draw_properties().screen_space_transform = transform; | 3557 active_layer_->draw_properties().screen_space_transform = transform; |
| 3601 active_layer_->UpdateTiles(resourceless_software_draw); | 3558 active_layer_->UpdateTiles(resourceless_software_draw); |
| 3602 | 3559 |
| 3603 gfx::Rect visible_rect_for_tile_priority = | 3560 gfx::Rect visible_rect_for_tile_priority = |
| 3604 active_layer_->visible_rect_for_tile_priority(); | 3561 active_layer_->visible_rect_for_tile_priority(); |
| 3605 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty()); | 3562 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty()); |
| 3606 gfx::Transform screen_space_transform_for_tile_priority = | 3563 gfx::Transform screen_space_transform_for_tile_priority = |
| 3607 active_layer_->screen_space_transform(); | 3564 active_layer_->screen_space_transform(); |
| 3608 | 3565 |
| 3609 // Expand viewport and set it as invalid for prioritizing tiles. | 3566 // Expand viewport and set it as invalid for prioritizing tiles. |
| 3610 // Should update viewport and transform, but not update visible rect. | 3567 // Should update viewport and transform, but not update visible rect. |
| 3611 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); | 3568 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); |
| 3612 resourceless_software_draw = true; | 3569 resourceless_software_draw = true; |
| 3613 viewport = gfx::ScaleToEnclosingRect(viewport, 2); | 3570 viewport = gfx::ScaleToEnclosingRect(viewport, 2); |
| 3614 transform.Translate(1.f, 1.f); | 3571 transform.Translate(1.f, 1.f); |
| 3615 active_layer_->draw_properties().visible_layer_rect = viewport; | 3572 active_layer_->draw_properties().visible_layer_rect = viewport; |
| 3616 active_layer_->draw_properties().screen_space_transform = transform; | 3573 active_layer_->draw_properties().screen_space_transform = transform; |
| 3617 host_impl_.SetExternalDrawConstraints(transform, | 3574 host_impl_.SetExternalDrawConstraints(viewport, transform); |
| 3618 viewport, | |
| 3619 viewport, | |
| 3620 viewport, | |
| 3621 transform, | |
| 3622 resourceless_software_draw); | |
| 3623 active_layer_->UpdateTiles(resourceless_software_draw); | 3575 active_layer_->UpdateTiles(resourceless_software_draw); |
| 3624 | 3576 |
| 3625 // Transform for tile priority is updated. | 3577 // Transform for tile priority is updated. |
| 3626 EXPECT_TRANSFORMATION_MATRIX_EQ(transform, | 3578 EXPECT_TRANSFORMATION_MATRIX_EQ(transform, |
| 3627 active_layer_->screen_space_transform()); | 3579 active_layer_->screen_space_transform()); |
| 3628 // Visible rect for tile priority retains old value. | 3580 // Visible rect for tile priority retains old value. |
| 3629 EXPECT_EQ(visible_rect_for_tile_priority, | 3581 EXPECT_EQ(visible_rect_for_tile_priority, |
| 3630 active_layer_->visible_rect_for_tile_priority()); | 3582 active_layer_->visible_rect_for_tile_priority()); |
| 3631 | 3583 |
| 3632 // Keep expanded viewport but mark it valid. Should update tile viewport. | 3584 // Keep expanded viewport but mark it valid. Should update tile viewport. |
| 3633 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); | 3585 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); |
| 3634 resourceless_software_draw = false; | 3586 resourceless_software_draw = false; |
| 3635 host_impl_.SetExternalDrawConstraints(transform, | 3587 host_impl_.SetExternalDrawConstraints(viewport, transform); |
| 3636 viewport, | |
| 3637 viewport, | |
| 3638 viewport, | |
| 3639 transform, | |
| 3640 resourceless_software_draw); | |
| 3641 active_layer_->UpdateTiles(resourceless_software_draw); | 3588 active_layer_->UpdateTiles(resourceless_software_draw); |
| 3642 | 3589 |
| 3643 EXPECT_TRANSFORMATION_MATRIX_EQ(transform, | 3590 EXPECT_TRANSFORMATION_MATRIX_EQ(transform, |
| 3644 active_layer_->screen_space_transform()); | 3591 active_layer_->screen_space_transform()); |
| 3645 EXPECT_EQ(viewport, active_layer_->visible_rect_for_tile_priority()); | 3592 EXPECT_EQ(viewport, active_layer_->visible_rect_for_tile_priority()); |
| 3646 } | 3593 } |
| 3647 | 3594 |
| 3648 TEST_F(NoLowResPictureLayerImplTest, CleanUpTilings) { | 3595 TEST_F(NoLowResPictureLayerImplTest, CleanUpTilings) { |
| 3649 gfx::Size layer_bounds(1300, 1900); | 3596 gfx::Size layer_bounds(1300, 1900); |
| 3650 std::vector<PictureLayerTiling*> used_tilings; | 3597 std::vector<PictureLayerTiling*> used_tilings; |
| (...skipping 1087 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4738 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 4685 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = |
| 4739 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 4686 FakeDisplayListRasterSource::CreateFilled(layer_bounds); |
| 4740 scoped_refptr<FakeDisplayListRasterSource> active_raster_source = | 4687 scoped_refptr<FakeDisplayListRasterSource> active_raster_source = |
| 4741 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 4688 FakeDisplayListRasterSource::CreateFilled(layer_bounds); |
| 4742 | 4689 |
| 4743 SetupPendingTreeWithFixedTileSize(active_raster_source, tile_size, Region()); | 4690 SetupPendingTreeWithFixedTileSize(active_raster_source, tile_size, Region()); |
| 4744 | 4691 |
| 4745 ActivateTree(); | 4692 ActivateTree(); |
| 4746 EXPECT_TRUE(active_layer_->HighResTiling()->has_tiles()); | 4693 EXPECT_TRUE(active_layer_->HighResTiling()->has_tiles()); |
| 4747 | 4694 |
| 4748 host_impl_.SetExternalDrawConstraints( | 4695 host_impl_.SetExternalDrawConstraints(gfx::Rect(0, 5000, 100, 100), |
| 4749 gfx::Transform(), // transform | 4696 gfx::Transform()); |
| 4750 gfx::Rect(), // clip | |
| 4751 gfx::Rect(), // viewport | |
| 4752 gfx::Rect(0, 5000, 100, 100), // viewport_rect_for_tile_priority | |
| 4753 gfx::Transform(), // transform_for_tile_priority | |
| 4754 false); | |
| 4755 | 4697 |
| 4756 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size, | 4698 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size, |
| 4757 gfx::Rect()); | 4699 gfx::Rect()); |
| 4758 | 4700 |
| 4759 EXPECT_FALSE(pending_layer_->HighResTiling()->has_tiles()); | 4701 EXPECT_FALSE(pending_layer_->HighResTiling()->has_tiles()); |
| 4760 EXPECT_TRUE(pending_layer_->HighResTiling()->live_tiles_rect().IsEmpty()); | 4702 EXPECT_TRUE(pending_layer_->HighResTiling()->live_tiles_rect().IsEmpty()); |
| 4761 ActivateTree(); | 4703 ActivateTree(); |
| 4762 EXPECT_FALSE(active_layer_->HighResTiling()->has_tiles()); | 4704 EXPECT_FALSE(active_layer_->HighResTiling()->has_tiles()); |
| 4763 EXPECT_TRUE(active_layer_->HighResTiling()->live_tiles_rect().IsEmpty()); | 4705 EXPECT_TRUE(active_layer_->HighResTiling()->live_tiles_rect().IsEmpty()); |
| 4764 | 4706 |
| 4765 host_impl_.SetExternalDrawConstraints( | 4707 host_impl_.SetExternalDrawConstraints(gfx::Rect(0, 110, 100, 100), |
| 4766 gfx::Transform(), // transform | 4708 gfx::Transform()); |
| 4767 gfx::Rect(), // clip | |
| 4768 gfx::Rect(), // viewport | |
| 4769 gfx::Rect(0, 110, 100, 100), // viewport_rect_for_tile_priority | |
| 4770 gfx::Transform(), // transform_for_tile_priority | |
| 4771 false); | |
| 4772 | 4709 |
| 4773 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size, | 4710 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size, |
| 4774 gfx::Rect()); | 4711 gfx::Rect()); |
| 4775 | 4712 |
| 4776 EXPECT_FALSE(pending_layer_->HighResTiling()->has_tiles()); | 4713 EXPECT_FALSE(pending_layer_->HighResTiling()->has_tiles()); |
| 4777 EXPECT_FALSE(pending_layer_->HighResTiling()->live_tiles_rect().IsEmpty()); | 4714 EXPECT_FALSE(pending_layer_->HighResTiling()->live_tiles_rect().IsEmpty()); |
| 4778 ActivateTree(); | 4715 ActivateTree(); |
| 4779 EXPECT_TRUE(active_layer_->HighResTiling()->has_tiles()); | 4716 EXPECT_TRUE(active_layer_->HighResTiling()->has_tiles()); |
| 4780 EXPECT_FALSE(active_layer_->HighResTiling()->live_tiles_rect().IsEmpty()); | 4717 EXPECT_FALSE(active_layer_->HighResTiling()->live_tiles_rect().IsEmpty()); |
| 4781 } | 4718 } |
| (...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 5040 // New low res tiling. | 4977 // New low res tiling. |
| 5041 EXPECT_TRUE(tilings->tiling_at(2)->may_contain_low_resolution_tiles()); | 4978 EXPECT_TRUE(tilings->tiling_at(2)->may_contain_low_resolution_tiles()); |
| 5042 | 4979 |
| 5043 // This tiling will be high res now, it won't contain low res content since it | 4980 // This tiling will be high res now, it won't contain low res content since it |
| 5044 // was all destroyed. | 4981 // was all destroyed. |
| 5045 EXPECT_FALSE(tilings->tiling_at(1)->may_contain_low_resolution_tiles()); | 4982 EXPECT_FALSE(tilings->tiling_at(1)->may_contain_low_resolution_tiles()); |
| 5046 } | 4983 } |
| 5047 | 4984 |
| 5048 } // namespace | 4985 } // namespace |
| 5049 } // namespace cc | 4986 } // namespace cc |
| OLD | NEW |