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 472 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
483 gfx::Size layer_bounds(400, 400); | 483 gfx::Size layer_bounds(400, 400); |
484 SetupDefaultTrees(layer_bounds); | 484 SetupDefaultTrees(layer_bounds); |
485 | 485 |
486 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, 0.f, | 486 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, 0.f, |
487 false); | 487 false); |
488 | 488 |
489 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); | 489 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); |
490 | 490 |
491 // Update tiles with viewport for tile priority as (0, 0, 100, 100) and the | 491 // Update tiles with viewport for tile priority as (0, 0, 100, 100) and the |
492 // identify transform for tile priority. | 492 // identify transform for tile priority. |
493 bool resourceless_software_draw = false; | 493 gfx::Rect viewport_rect_for_tile_priority = gfx::Rect(0, 0, 100, 100); |
494 gfx::Rect viewport = gfx::Rect(layer_bounds), | |
495 viewport_rect_for_tile_priority = gfx::Rect(0, 0, 100, 100); | |
496 gfx::Transform transform, transform_for_tile_priority; | 494 gfx::Transform transform, transform_for_tile_priority; |
497 | 495 |
498 host_impl_.SetExternalDrawConstraints(transform, | 496 host_impl_.SetExternalTilePriorityConstraints(viewport_rect_for_tile_priority, |
499 viewport, | 497 transform_for_tile_priority); |
500 viewport, | |
501 viewport_rect_for_tile_priority, | |
502 transform_for_tile_priority, | |
503 resourceless_software_draw); | |
504 bool update_lcd_text = false; | 498 bool update_lcd_text = false; |
505 host_impl_.active_tree()->UpdateDrawProperties(update_lcd_text); | 499 host_impl_.active_tree()->UpdateDrawProperties(update_lcd_text); |
506 | 500 |
507 gfx::Rect viewport_rect_for_tile_priority_in_view_space = | 501 gfx::Rect viewport_rect_for_tile_priority_in_view_space = |
508 viewport_rect_for_tile_priority; | 502 viewport_rect_for_tile_priority; |
509 | 503 |
510 // Verify the viewport rect for tile priority is used in picture layer tiling. | 504 // Verify the viewport rect for tile priority is used in picture layer tiling. |
511 EXPECT_EQ(viewport_rect_for_tile_priority_in_view_space, | 505 EXPECT_EQ(viewport_rect_for_tile_priority_in_view_space, |
512 active_layer_->viewport_rect_for_tile_priority_in_content_space()); | 506 active_layer_->viewport_rect_for_tile_priority_in_content_space()); |
513 PictureLayerTilingSet* tilings = active_layer_->tilings(); | 507 PictureLayerTilingSet* tilings = active_layer_->tilings(); |
514 for (size_t i = 0; i < tilings->num_tilings(); i++) { | 508 for (size_t i = 0; i < tilings->num_tilings(); i++) { |
515 PictureLayerTiling* tiling = tilings->tiling_at(i); | 509 PictureLayerTiling* tiling = tilings->tiling_at(i); |
516 EXPECT_EQ( | 510 EXPECT_EQ( |
517 tiling->GetCurrentVisibleRectForTesting(), | 511 tiling->GetCurrentVisibleRectForTesting(), |
518 gfx::ScaleToEnclosingRect(viewport_rect_for_tile_priority_in_view_space, | 512 gfx::ScaleToEnclosingRect(viewport_rect_for_tile_priority_in_view_space, |
519 tiling->contents_scale())); | 513 tiling->contents_scale())); |
520 } | 514 } |
521 | 515 |
522 // Update tiles with viewport for tile priority as (200, 200, 100, 100) in | 516 // Update tiles with viewport for tile priority as (200, 200, 100, 100) in |
523 // screen space and the transform for tile priority is translated and | 517 // screen space and the transform for tile priority is translated and |
524 // rotated. The actual viewport for tile priority used by PictureLayerImpl | 518 // rotated. The actual viewport for tile priority used by PictureLayerImpl |
525 // should be (200, 200, 100, 100) applied with the said transform. | 519 // should be (200, 200, 100, 100) applied with the said transform. |
526 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); | 520 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); |
527 | 521 |
528 viewport_rect_for_tile_priority = gfx::Rect(200, 200, 100, 100); | 522 viewport_rect_for_tile_priority = gfx::Rect(200, 200, 100, 100); |
529 transform_for_tile_priority.Translate(100, 100); | 523 transform_for_tile_priority.Translate(100, 100); |
530 transform_for_tile_priority.Rotate(45); | 524 transform_for_tile_priority.Rotate(45); |
531 host_impl_.SetExternalDrawConstraints(transform, | 525 host_impl_.SetExternalTilePriorityConstraints(viewport_rect_for_tile_priority, |
532 viewport, | 526 transform_for_tile_priority); |
533 viewport, | |
534 viewport_rect_for_tile_priority, | |
535 transform_for_tile_priority, | |
536 resourceless_software_draw); | |
537 host_impl_.active_tree()->UpdateDrawProperties(update_lcd_text); | 527 host_impl_.active_tree()->UpdateDrawProperties(update_lcd_text); |
538 | 528 |
539 gfx::Transform screen_to_view(gfx::Transform::kSkipInitialization); | 529 gfx::Transform screen_to_view(gfx::Transform::kSkipInitialization); |
540 bool success = transform_for_tile_priority.GetInverse(&screen_to_view); | 530 bool success = transform_for_tile_priority.GetInverse(&screen_to_view); |
541 EXPECT_TRUE(success); | 531 EXPECT_TRUE(success); |
542 | 532 |
543 // Note that we don't clip this to the layer bounds, since it is expected that | 533 // Note that we don't clip this to the layer bounds, since it is expected that |
544 // the rect will sometimes be outside of the layer bounds. If we clip to | 534 // the rect will sometimes be outside of the layer bounds. If we clip to |
545 // bounds, then tile priorities will end up being incorrect in cases of fully | 535 // bounds, then tile priorities will end up being incorrect in cases of fully |
546 // offscreen layer. | 536 // offscreen layer. |
(...skipping 20 matching lines...) Expand all Loading... |
567 | 557 |
568 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, 0.f, | 558 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, 0.f, |
569 false); | 559 false); |
570 | 560 |
571 // UpdateTiles with valid viewport. Should update tile viewport. | 561 // UpdateTiles with valid viewport. Should update tile viewport. |
572 // Note viewport is considered invalid if and only if in resourceless | 562 // Note viewport is considered invalid if and only if in resourceless |
573 // software draw. | 563 // software draw. |
574 bool resourceless_software_draw = false; | 564 bool resourceless_software_draw = false; |
575 gfx::Rect viewport = gfx::Rect(layer_bounds); | 565 gfx::Rect viewport = gfx::Rect(layer_bounds); |
576 gfx::Transform transform; | 566 gfx::Transform transform; |
577 host_impl_.SetExternalDrawConstraints(transform, | 567 host_impl_.SetExternalTilePriorityConstraints(viewport, transform); |
578 viewport, | |
579 viewport, | |
580 viewport, | |
581 transform, | |
582 resourceless_software_draw); | |
583 active_layer_->draw_properties().visible_layer_rect = viewport; | 568 active_layer_->draw_properties().visible_layer_rect = viewport; |
584 active_layer_->draw_properties().screen_space_transform = transform; | 569 active_layer_->draw_properties().screen_space_transform = transform; |
585 active_layer_->UpdateTiles(resourceless_software_draw); | 570 active_layer_->UpdateTiles(resourceless_software_draw); |
586 | 571 |
587 gfx::Rect visible_rect_for_tile_priority = | 572 gfx::Rect visible_rect_for_tile_priority = |
588 active_layer_->visible_rect_for_tile_priority(); | 573 active_layer_->visible_rect_for_tile_priority(); |
589 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty()); | 574 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty()); |
590 gfx::Transform screen_space_transform_for_tile_priority = | 575 gfx::Transform screen_space_transform_for_tile_priority = |
591 active_layer_->draw_properties().screen_space_transform; | 576 active_layer_->draw_properties().screen_space_transform; |
592 | 577 |
593 // Expand viewport and set it as invalid for prioritizing tiles. | 578 // Expand viewport and set it as invalid for prioritizing tiles. |
594 // Should update viewport and transform, but not update visible rect. | 579 // Should update viewport and transform, but not update visible rect. |
595 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); | 580 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); |
596 resourceless_software_draw = true; | 581 resourceless_software_draw = true; |
597 viewport = gfx::ScaleToEnclosingRect(viewport, 2); | 582 viewport = gfx::ScaleToEnclosingRect(viewport, 2); |
598 transform.Translate(1.f, 1.f); | 583 transform.Translate(1.f, 1.f); |
599 active_layer_->draw_properties().visible_layer_rect = viewport; | 584 active_layer_->draw_properties().visible_layer_rect = viewport; |
600 active_layer_->draw_properties().screen_space_transform = transform; | 585 active_layer_->draw_properties().screen_space_transform = transform; |
601 host_impl_.SetExternalDrawConstraints(transform, | 586 host_impl_.SetExternalTilePriorityConstraints(viewport, transform); |
602 viewport, | |
603 viewport, | |
604 viewport, | |
605 transform, | |
606 resourceless_software_draw); | |
607 active_layer_->UpdateTiles(resourceless_software_draw); | 587 active_layer_->UpdateTiles(resourceless_software_draw); |
608 | 588 |
609 // Transform for tile priority is updated. | 589 // Transform for tile priority is updated. |
610 EXPECT_TRANSFORMATION_MATRIX_EQ( | 590 EXPECT_TRANSFORMATION_MATRIX_EQ( |
611 transform, active_layer_->draw_properties().screen_space_transform); | 591 transform, active_layer_->draw_properties().screen_space_transform); |
612 // Visible rect for tile priority retains old value. | 592 // Visible rect for tile priority retains old value. |
613 EXPECT_EQ(visible_rect_for_tile_priority, | 593 EXPECT_EQ(visible_rect_for_tile_priority, |
614 active_layer_->visible_rect_for_tile_priority()); | 594 active_layer_->visible_rect_for_tile_priority()); |
615 | 595 |
616 // Keep expanded viewport but mark it valid. Should update tile viewport. | 596 // Keep expanded viewport but mark it valid. Should update tile viewport. |
617 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); | 597 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); |
618 resourceless_software_draw = false; | 598 resourceless_software_draw = false; |
619 host_impl_.SetExternalDrawConstraints(transform, | 599 host_impl_.SetExternalTilePriorityConstraints(viewport, transform); |
620 viewport, | |
621 viewport, | |
622 viewport, | |
623 transform, | |
624 resourceless_software_draw); | |
625 active_layer_->UpdateTiles(resourceless_software_draw); | 600 active_layer_->UpdateTiles(resourceless_software_draw); |
626 | 601 |
627 EXPECT_TRANSFORMATION_MATRIX_EQ( | 602 EXPECT_TRANSFORMATION_MATRIX_EQ( |
628 transform, active_layer_->draw_properties().screen_space_transform); | 603 transform, active_layer_->draw_properties().screen_space_transform); |
629 EXPECT_EQ(viewport, active_layer_->visible_rect_for_tile_priority()); | 604 EXPECT_EQ(viewport, active_layer_->visible_rect_for_tile_priority()); |
630 } | 605 } |
631 | 606 |
632 TEST_F(PictureLayerImplTest, ViewportRectForTilePriorityIsCached) { | 607 TEST_F(PictureLayerImplTest, ViewportRectForTilePriorityIsCached) { |
633 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); | 608 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); |
634 gfx::Size layer_bounds(400, 400); | 609 gfx::Size layer_bounds(400, 400); |
635 SetupDefaultTrees(layer_bounds); | 610 SetupDefaultTrees(layer_bounds); |
636 | 611 |
637 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, 0.f, | 612 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, 0.f, |
638 false); | 613 false); |
639 | 614 |
640 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); | 615 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); |
641 | 616 |
642 bool resourceless_software_draw = false; | |
643 gfx::Rect viewport = gfx::Rect(layer_bounds); | |
644 gfx::Rect viewport_rect_for_tile_priority(0, 0, 100, 100); | 617 gfx::Rect viewport_rect_for_tile_priority(0, 0, 100, 100); |
645 gfx::Transform transform, transform_for_tile_priority; | 618 gfx::Transform transform_for_tile_priority; |
646 | 619 |
647 host_impl_.SetExternalDrawConstraints( | 620 host_impl_.SetExternalTilePriorityConstraints(viewport_rect_for_tile_priority, |
648 transform, viewport, viewport, viewport_rect_for_tile_priority, | 621 transform_for_tile_priority); |
649 transform_for_tile_priority, resourceless_software_draw); | |
650 bool update_lcd_text = false; | 622 bool update_lcd_text = false; |
651 host_impl_.active_tree()->UpdateDrawProperties(update_lcd_text); | 623 host_impl_.active_tree()->UpdateDrawProperties(update_lcd_text); |
652 | 624 |
653 EXPECT_EQ(viewport_rect_for_tile_priority, | 625 EXPECT_EQ(viewport_rect_for_tile_priority, |
654 active_layer_->viewport_rect_for_tile_priority_in_content_space()); | 626 active_layer_->viewport_rect_for_tile_priority_in_content_space()); |
655 | 627 |
656 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); | 628 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); |
657 | 629 |
658 gfx::Rect another_viewport_rect_for_tile_priority(11, 11, 50, 50); | 630 gfx::Rect another_viewport_rect_for_tile_priority(11, 11, 50, 50); |
659 host_impl_.SetExternalDrawConstraints( | 631 host_impl_.SetExternalTilePriorityConstraints( |
660 transform, viewport, viewport, another_viewport_rect_for_tile_priority, | 632 another_viewport_rect_for_tile_priority, transform_for_tile_priority); |
661 transform_for_tile_priority, resourceless_software_draw); | |
662 | 633 |
663 // Didn't call UpdateDrawProperties yet. The viewport rect for tile priority | 634 // Didn't call UpdateDrawProperties yet. The viewport rect for tile priority |
664 // should remain to be the previously cached value. | 635 // should remain to be the previously cached value. |
665 EXPECT_EQ(viewport_rect_for_tile_priority, | 636 EXPECT_EQ(viewport_rect_for_tile_priority, |
666 active_layer_->viewport_rect_for_tile_priority_in_content_space()); | 637 active_layer_->viewport_rect_for_tile_priority_in_content_space()); |
667 host_impl_.active_tree()->UpdateDrawProperties(update_lcd_text); | 638 host_impl_.active_tree()->UpdateDrawProperties(update_lcd_text); |
668 | 639 |
669 // Now the UpdateDrawProperties is called. The viewport rect for tile | 640 // Now the UpdateDrawProperties is called. The viewport rect for tile |
670 // priority should be the latest value. | 641 // priority should be the latest value. |
671 EXPECT_EQ(another_viewport_rect_for_tile_priority, | 642 EXPECT_EQ(another_viewport_rect_for_tile_priority, |
(...skipping 1136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1808 // tilings. | 1779 // tilings. |
1809 ActivateTree(); | 1780 ActivateTree(); |
1810 EXPECT_TRUE(active_layer_->CanHaveTilings()); | 1781 EXPECT_TRUE(active_layer_->CanHaveTilings()); |
1811 EXPECT_GT(active_layer_->ideal_contents_scale(), 0.f); | 1782 EXPECT_GT(active_layer_->ideal_contents_scale(), 0.f); |
1812 } | 1783 } |
1813 | 1784 |
1814 TEST_F(NoLowResPictureLayerImplTest, MarkRequiredOffscreenTiles) { | 1785 TEST_F(NoLowResPictureLayerImplTest, MarkRequiredOffscreenTiles) { |
1815 gfx::Size layer_bounds(200, 200); | 1786 gfx::Size layer_bounds(200, 200); |
1816 | 1787 |
1817 gfx::Transform transform; | 1788 gfx::Transform transform; |
1818 gfx::Transform transform_for_tile_priority; | |
1819 bool resourceless_software_draw = false; | 1789 bool resourceless_software_draw = false; |
1820 gfx::Rect viewport(0, 0, 100, 200); | 1790 gfx::Rect viewport(0, 0, 100, 200); |
1821 host_impl_.SetExternalDrawConstraints(transform, | 1791 host_impl_.SetExternalTilePriorityConstraints(viewport, transform); |
1822 viewport, | 1792 host_impl_.SetExternalViewportForTesting(viewport); |
1823 viewport, | |
1824 viewport, | |
1825 transform, | |
1826 resourceless_software_draw); | |
1827 | 1793 |
1828 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 1794 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = |
1829 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 1795 FakeDisplayListRasterSource::CreateFilled(layer_bounds); |
1830 SetupPendingTreeWithFixedTileSize(pending_raster_source, gfx::Size(100, 100), | 1796 SetupPendingTreeWithFixedTileSize(pending_raster_source, gfx::Size(100, 100), |
1831 Region()); | 1797 Region()); |
1832 | 1798 |
1833 EXPECT_EQ(1u, pending_layer_->num_tilings()); | 1799 EXPECT_EQ(1u, pending_layer_->num_tilings()); |
1834 EXPECT_EQ(viewport, pending_layer_->visible_rect_for_tile_priority()); | 1800 EXPECT_EQ(viewport, pending_layer_->visible_rect_for_tile_priority()); |
1835 | 1801 |
1836 base::TimeTicks time_ticks; | 1802 base::TimeTicks time_ticks; |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1870 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size, Region()); | 1836 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size, Region()); |
1871 | 1837 |
1872 ASSERT_EQ(1u, pending_layer_->num_tilings()); | 1838 ASSERT_EQ(1u, pending_layer_->num_tilings()); |
1873 ASSERT_EQ(1.f, pending_layer_->HighResTiling()->contents_scale()); | 1839 ASSERT_EQ(1.f, pending_layer_->HighResTiling()->contents_scale()); |
1874 | 1840 |
1875 // Set external viewport for tile priority. | 1841 // Set external viewport for tile priority. |
1876 gfx::Rect viewport = gfx::Rect(layer_bounds); | 1842 gfx::Rect viewport = gfx::Rect(layer_bounds); |
1877 gfx::Transform transform; | 1843 gfx::Transform transform; |
1878 gfx::Transform transform_for_tile_priority; | 1844 gfx::Transform transform_for_tile_priority; |
1879 bool resourceless_software_draw = false; | 1845 bool resourceless_software_draw = false; |
1880 host_impl_.SetExternalDrawConstraints(transform, | 1846 host_impl_.SetExternalTilePriorityConstraints( |
1881 viewport, | 1847 external_viewport_for_tile_priority, transform_for_tile_priority); |
1882 viewport, | |
1883 external_viewport_for_tile_priority, | |
1884 transform_for_tile_priority, | |
1885 resourceless_software_draw); | |
1886 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); | 1848 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); |
1887 bool update_lcd_text = false; | 1849 bool update_lcd_text = false; |
1888 host_impl_.pending_tree()->UpdateDrawProperties(update_lcd_text); | 1850 host_impl_.pending_tree()->UpdateDrawProperties(update_lcd_text); |
1889 | 1851 |
1890 // Set visible content rect that is different from | 1852 // Set visible content rect that is different from |
1891 // external_viewport_for_tile_priority. | 1853 // external_viewport_for_tile_priority. |
1892 pending_layer_->draw_properties().visible_layer_rect = visible_layer_rect; | 1854 pending_layer_->draw_properties().visible_layer_rect = visible_layer_rect; |
1893 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); | 1855 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); |
1894 pending_layer_->UpdateTiles(resourceless_software_draw); | 1856 pending_layer_->UpdateTiles(resourceless_software_draw); |
1895 | 1857 |
(...skipping 1723 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3619 | 3581 |
3620 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, 0.f, | 3582 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, 0.f, |
3621 false); | 3583 false); |
3622 | 3584 |
3623 // UpdateTiles with valid viewport. Should update tile viewport. | 3585 // UpdateTiles with valid viewport. Should update tile viewport. |
3624 // Note viewport is considered invalid if and only if in resourceless | 3586 // Note viewport is considered invalid if and only if in resourceless |
3625 // software draw. | 3587 // software draw. |
3626 bool resourceless_software_draw = false; | 3588 bool resourceless_software_draw = false; |
3627 gfx::Rect viewport = gfx::Rect(layer_bounds); | 3589 gfx::Rect viewport = gfx::Rect(layer_bounds); |
3628 gfx::Transform transform; | 3590 gfx::Transform transform; |
3629 host_impl_.SetExternalDrawConstraints(transform, | 3591 host_impl_.SetExternalTilePriorityConstraints(viewport, transform); |
3630 viewport, | |
3631 viewport, | |
3632 viewport, | |
3633 transform, | |
3634 resourceless_software_draw); | |
3635 active_layer_->draw_properties().visible_layer_rect = viewport; | 3592 active_layer_->draw_properties().visible_layer_rect = viewport; |
3636 active_layer_->draw_properties().screen_space_transform = transform; | 3593 active_layer_->draw_properties().screen_space_transform = transform; |
3637 active_layer_->UpdateTiles(resourceless_software_draw); | 3594 active_layer_->UpdateTiles(resourceless_software_draw); |
3638 | 3595 |
3639 gfx::Rect visible_rect_for_tile_priority = | 3596 gfx::Rect visible_rect_for_tile_priority = |
3640 active_layer_->visible_rect_for_tile_priority(); | 3597 active_layer_->visible_rect_for_tile_priority(); |
3641 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty()); | 3598 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty()); |
3642 gfx::Transform screen_space_transform_for_tile_priority = | 3599 gfx::Transform screen_space_transform_for_tile_priority = |
3643 active_layer_->draw_properties().screen_space_transform; | 3600 active_layer_->draw_properties().screen_space_transform; |
3644 | 3601 |
3645 // Expand viewport and set it as invalid for prioritizing tiles. | 3602 // Expand viewport and set it as invalid for prioritizing tiles. |
3646 // Should update viewport and transform, but not update visible rect. | 3603 // Should update viewport and transform, but not update visible rect. |
3647 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); | 3604 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); |
3648 resourceless_software_draw = true; | 3605 resourceless_software_draw = true; |
3649 viewport = gfx::ScaleToEnclosingRect(viewport, 2); | 3606 viewport = gfx::ScaleToEnclosingRect(viewport, 2); |
3650 transform.Translate(1.f, 1.f); | 3607 transform.Translate(1.f, 1.f); |
3651 active_layer_->draw_properties().visible_layer_rect = viewport; | 3608 active_layer_->draw_properties().visible_layer_rect = viewport; |
3652 active_layer_->draw_properties().screen_space_transform = transform; | 3609 active_layer_->draw_properties().screen_space_transform = transform; |
3653 host_impl_.SetExternalDrawConstraints(transform, | 3610 host_impl_.SetExternalTilePriorityConstraints(viewport, transform); |
3654 viewport, | |
3655 viewport, | |
3656 viewport, | |
3657 transform, | |
3658 resourceless_software_draw); | |
3659 active_layer_->UpdateTiles(resourceless_software_draw); | 3611 active_layer_->UpdateTiles(resourceless_software_draw); |
3660 | 3612 |
3661 // Transform for tile priority is updated. | 3613 // Transform for tile priority is updated. |
3662 EXPECT_TRANSFORMATION_MATRIX_EQ( | 3614 EXPECT_TRANSFORMATION_MATRIX_EQ( |
3663 transform, active_layer_->draw_properties().screen_space_transform); | 3615 transform, active_layer_->draw_properties().screen_space_transform); |
3664 // Visible rect for tile priority retains old value. | 3616 // Visible rect for tile priority retains old value. |
3665 EXPECT_EQ(visible_rect_for_tile_priority, | 3617 EXPECT_EQ(visible_rect_for_tile_priority, |
3666 active_layer_->visible_rect_for_tile_priority()); | 3618 active_layer_->visible_rect_for_tile_priority()); |
3667 | 3619 |
3668 // Keep expanded viewport but mark it valid. Should update tile viewport. | 3620 // Keep expanded viewport but mark it valid. Should update tile viewport. |
3669 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); | 3621 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); |
3670 resourceless_software_draw = false; | 3622 resourceless_software_draw = false; |
3671 host_impl_.SetExternalDrawConstraints(transform, | 3623 host_impl_.SetExternalTilePriorityConstraints(viewport, transform); |
3672 viewport, | |
3673 viewport, | |
3674 viewport, | |
3675 transform, | |
3676 resourceless_software_draw); | |
3677 active_layer_->UpdateTiles(resourceless_software_draw); | 3624 active_layer_->UpdateTiles(resourceless_software_draw); |
3678 | 3625 |
3679 EXPECT_TRANSFORMATION_MATRIX_EQ( | 3626 EXPECT_TRANSFORMATION_MATRIX_EQ( |
3680 transform, active_layer_->draw_properties().screen_space_transform); | 3627 transform, active_layer_->draw_properties().screen_space_transform); |
3681 EXPECT_EQ(viewport, active_layer_->visible_rect_for_tile_priority()); | 3628 EXPECT_EQ(viewport, active_layer_->visible_rect_for_tile_priority()); |
3682 } | 3629 } |
3683 | 3630 |
3684 TEST_F(NoLowResPictureLayerImplTest, CleanUpTilings) { | 3631 TEST_F(NoLowResPictureLayerImplTest, CleanUpTilings) { |
3685 gfx::Size layer_bounds(1300, 1900); | 3632 gfx::Size layer_bounds(1300, 1900); |
3686 std::vector<PictureLayerTiling*> used_tilings; | 3633 std::vector<PictureLayerTiling*> used_tilings; |
(...skipping 1095 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4782 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 4729 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = |
4783 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 4730 FakeDisplayListRasterSource::CreateFilled(layer_bounds); |
4784 scoped_refptr<FakeDisplayListRasterSource> active_raster_source = | 4731 scoped_refptr<FakeDisplayListRasterSource> active_raster_source = |
4785 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 4732 FakeDisplayListRasterSource::CreateFilled(layer_bounds); |
4786 | 4733 |
4787 SetupPendingTreeWithFixedTileSize(active_raster_source, tile_size, Region()); | 4734 SetupPendingTreeWithFixedTileSize(active_raster_source, tile_size, Region()); |
4788 | 4735 |
4789 ActivateTree(); | 4736 ActivateTree(); |
4790 EXPECT_TRUE(active_layer_->HighResTiling()->has_tiles()); | 4737 EXPECT_TRUE(active_layer_->HighResTiling()->has_tiles()); |
4791 | 4738 |
4792 host_impl_.SetExternalDrawConstraints( | 4739 host_impl_.SetExternalTilePriorityConstraints(gfx::Rect(0, 5000, 100, 100), |
4793 gfx::Transform(), // transform | 4740 gfx::Transform()); |
4794 gfx::Rect(), // clip | |
4795 gfx::Rect(), // viewport | |
4796 gfx::Rect(0, 5000, 100, 100), // viewport_rect_for_tile_priority | |
4797 gfx::Transform(), // transform_for_tile_priority | |
4798 false); | |
4799 | 4741 |
4800 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size, | 4742 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size, |
4801 gfx::Rect()); | 4743 gfx::Rect()); |
4802 | 4744 |
4803 EXPECT_FALSE(pending_layer_->HighResTiling()->has_tiles()); | 4745 EXPECT_FALSE(pending_layer_->HighResTiling()->has_tiles()); |
4804 EXPECT_TRUE(pending_layer_->HighResTiling()->live_tiles_rect().IsEmpty()); | 4746 EXPECT_TRUE(pending_layer_->HighResTiling()->live_tiles_rect().IsEmpty()); |
4805 ActivateTree(); | 4747 ActivateTree(); |
4806 EXPECT_FALSE(active_layer_->HighResTiling()->has_tiles()); | 4748 EXPECT_FALSE(active_layer_->HighResTiling()->has_tiles()); |
4807 EXPECT_TRUE(active_layer_->HighResTiling()->live_tiles_rect().IsEmpty()); | 4749 EXPECT_TRUE(active_layer_->HighResTiling()->live_tiles_rect().IsEmpty()); |
4808 | 4750 |
4809 host_impl_.SetExternalDrawConstraints( | 4751 host_impl_.SetExternalTilePriorityConstraints(gfx::Rect(0, 110, 100, 100), |
4810 gfx::Transform(), // transform | 4752 gfx::Transform()); |
4811 gfx::Rect(), // clip | |
4812 gfx::Rect(), // viewport | |
4813 gfx::Rect(0, 110, 100, 100), // viewport_rect_for_tile_priority | |
4814 gfx::Transform(), // transform_for_tile_priority | |
4815 false); | |
4816 | 4753 |
4817 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size, | 4754 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size, |
4818 gfx::Rect()); | 4755 gfx::Rect()); |
4819 | 4756 |
4820 EXPECT_FALSE(pending_layer_->HighResTiling()->has_tiles()); | 4757 EXPECT_FALSE(pending_layer_->HighResTiling()->has_tiles()); |
4821 EXPECT_FALSE(pending_layer_->HighResTiling()->live_tiles_rect().IsEmpty()); | 4758 EXPECT_FALSE(pending_layer_->HighResTiling()->live_tiles_rect().IsEmpty()); |
4822 ActivateTree(); | 4759 ActivateTree(); |
4823 EXPECT_TRUE(active_layer_->HighResTiling()->has_tiles()); | 4760 EXPECT_TRUE(active_layer_->HighResTiling()->has_tiles()); |
4824 EXPECT_FALSE(active_layer_->HighResTiling()->live_tiles_rect().IsEmpty()); | 4761 EXPECT_FALSE(active_layer_->HighResTiling()->live_tiles_rect().IsEmpty()); |
4825 } | 4762 } |
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5084 // New low res tiling. | 5021 // New low res tiling. |
5085 EXPECT_TRUE(tilings->tiling_at(2)->may_contain_low_resolution_tiles()); | 5022 EXPECT_TRUE(tilings->tiling_at(2)->may_contain_low_resolution_tiles()); |
5086 | 5023 |
5087 // This tiling will be high res now, it won't contain low res content since it | 5024 // This tiling will be high res now, it won't contain low res content since it |
5088 // was all destroyed. | 5025 // was all destroyed. |
5089 EXPECT_FALSE(tilings->tiling_at(1)->may_contain_low_resolution_tiles()); | 5026 EXPECT_FALSE(tilings->tiling_at(1)->may_contain_low_resolution_tiles()); |
5090 } | 5027 } |
5091 | 5028 |
5092 } // namespace | 5029 } // namespace |
5093 } // namespace cc | 5030 } // namespace cc |
OLD | NEW |