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 |