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 21 matching lines...) Expand all Loading... | |
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 draw_transform; | 566 gfx::Transform draw_transform; |
577 gfx::Transform tile_priority_transform; | 567 gfx::Transform tile_priority_transform; |
578 host_impl_.SetExternalDrawConstraints(draw_transform, viewport, viewport, | 568 host_impl_.SetExternalTilePriorityConstraints(viewport, |
579 viewport, tile_priority_transform, | 569 tile_priority_transform); |
580 resourceless_software_draw); | |
581 active_layer_->draw_properties().visible_layer_rect = viewport; | 570 active_layer_->draw_properties().visible_layer_rect = viewport; |
582 active_layer_->draw_properties().screen_space_transform = draw_transform; | 571 active_layer_->draw_properties().screen_space_transform = draw_transform; |
583 active_layer_->UpdateTiles(resourceless_software_draw); | 572 active_layer_->UpdateTiles(resourceless_software_draw); |
584 | 573 |
585 gfx::Rect visible_rect_for_tile_priority = | 574 gfx::Rect visible_rect_for_tile_priority = |
586 active_layer_->visible_rect_for_tile_priority(); | 575 active_layer_->visible_rect_for_tile_priority(); |
587 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty()); | 576 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty()); |
588 gfx::Transform screen_space_transform_for_tile_priority = | 577 gfx::Transform screen_space_transform_for_tile_priority = |
589 active_layer_->draw_properties().screen_space_transform; | 578 active_layer_->draw_properties().screen_space_transform; |
590 | 579 |
591 // Expand viewport and set it as invalid for prioritizing tiles. | 580 // Expand viewport and set it as invalid for prioritizing tiles. |
592 // Should update viewport and transform, but not update visible rect. | 581 // Should update viewport and transform, but not update visible rect. |
593 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); | 582 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); |
594 resourceless_software_draw = true; | 583 resourceless_software_draw = true; |
595 viewport = gfx::ScaleToEnclosingRect(viewport, 2); | 584 viewport = gfx::ScaleToEnclosingRect(viewport, 2); |
596 tile_priority_transform.Translate(1.f, 0.f); | 585 tile_priority_transform.Translate(1.f, 0.f); |
597 draw_transform.Translate(0.f, 1.f); | 586 draw_transform.Translate(0.f, 1.f); |
598 active_layer_->draw_properties().visible_layer_rect = viewport; | 587 active_layer_->draw_properties().visible_layer_rect = viewport; |
599 active_layer_->draw_properties().screen_space_transform = draw_transform; | 588 active_layer_->draw_properties().screen_space_transform = draw_transform; |
600 host_impl_.SetExternalDrawConstraints(draw_transform, viewport, viewport, | 589 host_impl_.SetExternalTilePriorityConstraints(viewport, |
601 viewport, tile_priority_transform, | 590 tile_priority_transform); |
602 resourceless_software_draw); | |
603 active_layer_->UpdateTiles(resourceless_software_draw); | 591 active_layer_->UpdateTiles(resourceless_software_draw); |
604 | 592 |
605 // Transform for tile priority is not updated. | 593 // Transform for tile priority is not updated. |
606 EXPECT_TRANSFORMATION_MATRIX_EQ( | 594 EXPECT_TRANSFORMATION_MATRIX_EQ( |
607 screen_space_transform_for_tile_priority, | 595 screen_space_transform_for_tile_priority, |
608 active_layer_->screen_space_transform_for_tile_priority()); | 596 active_layer_->screen_space_transform_for_tile_priority()); |
609 // Visible rect for tile priority retains old value. | 597 // Visible rect for tile priority retains old value. |
610 EXPECT_EQ(visible_rect_for_tile_priority, | 598 EXPECT_EQ(visible_rect_for_tile_priority, |
611 active_layer_->visible_rect_for_tile_priority()); | 599 active_layer_->visible_rect_for_tile_priority()); |
612 ASSERT_GT(active_layer_->picture_layer_tiling_set()->num_tilings(), 0u); | 600 ASSERT_GT(active_layer_->picture_layer_tiling_set()->num_tilings(), 0u); |
613 EXPECT_EQ(active_layer_->viewport_rect_for_tile_priority_in_content_space(), | 601 EXPECT_EQ(active_layer_->viewport_rect_for_tile_priority_in_content_space(), |
614 active_layer_->picture_layer_tiling_set() | 602 active_layer_->picture_layer_tiling_set() |
615 ->tiling_at(0) | 603 ->tiling_at(0) |
616 ->GetCurrentVisibleRectForTesting()); | 604 ->GetCurrentVisibleRectForTesting()); |
617 | 605 |
618 // Keep expanded viewport but mark it valid. Should update tile viewport. | 606 // Keep expanded viewport but mark it valid. Should update tile viewport. |
619 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); | 607 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); |
620 resourceless_software_draw = false; | 608 resourceless_software_draw = false; |
621 host_impl_.SetExternalDrawConstraints(draw_transform, viewport, viewport, | 609 host_impl_.SetExternalTilePriorityConstraints(viewport, |
622 viewport, tile_priority_transform, | 610 tile_priority_transform); |
623 resourceless_software_draw); | |
624 active_layer_->UpdateTiles(resourceless_software_draw); | 611 active_layer_->UpdateTiles(resourceless_software_draw); |
625 | 612 |
626 EXPECT_TRANSFORMATION_MATRIX_EQ( | 613 EXPECT_TRANSFORMATION_MATRIX_EQ( |
627 draw_transform, | 614 draw_transform, |
628 active_layer_->screen_space_transform_for_tile_priority()); | 615 active_layer_->screen_space_transform_for_tile_priority()); |
629 EXPECT_EQ(viewport, active_layer_->visible_rect_for_tile_priority()); | 616 EXPECT_EQ(viewport, active_layer_->visible_rect_for_tile_priority()); |
630 | 617 |
631 gfx::RectF visible_rect_in_content_space(viewport); | 618 gfx::RectF visible_rect_in_content_space(viewport); |
632 gfx::Transform inverse_draw_transform; | 619 gfx::Transform inverse_draw_transform; |
633 gfx::Transform inverse_tile_priority_transform; | 620 gfx::Transform inverse_tile_priority_transform; |
(...skipping 15 matching lines...) Expand all Loading... | |
649 TEST_F(PictureLayerImplTest, ViewportRectForTilePriorityIsCached) { | 636 TEST_F(PictureLayerImplTest, ViewportRectForTilePriorityIsCached) { |
650 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); | 637 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); |
651 gfx::Size layer_bounds(400, 400); | 638 gfx::Size layer_bounds(400, 400); |
652 SetupDefaultTrees(layer_bounds); | 639 SetupDefaultTrees(layer_bounds); |
653 | 640 |
654 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, 0.f, | 641 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, 0.f, |
655 false); | 642 false); |
656 | 643 |
657 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); | 644 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); |
658 | 645 |
659 bool resourceless_software_draw = false; | |
660 gfx::Rect viewport = gfx::Rect(layer_bounds); | |
661 gfx::Rect viewport_rect_for_tile_priority(0, 0, 100, 100); | 646 gfx::Rect viewport_rect_for_tile_priority(0, 0, 100, 100); |
662 gfx::Transform transform, transform_for_tile_priority; | 647 gfx::Transform transform_for_tile_priority; |
663 | 648 |
664 host_impl_.SetExternalDrawConstraints( | 649 host_impl_.SetExternalTilePriorityConstraints(viewport_rect_for_tile_priority, |
665 transform, viewport, viewport, viewport_rect_for_tile_priority, | 650 transform_for_tile_priority); |
666 transform_for_tile_priority, resourceless_software_draw); | |
667 bool update_lcd_text = false; | 651 bool update_lcd_text = false; |
668 host_impl_.active_tree()->UpdateDrawProperties(update_lcd_text); | 652 host_impl_.active_tree()->UpdateDrawProperties(update_lcd_text); |
669 | 653 |
670 EXPECT_EQ(viewport_rect_for_tile_priority, | 654 EXPECT_EQ(viewport_rect_for_tile_priority, |
671 active_layer_->viewport_rect_for_tile_priority_in_content_space()); | 655 active_layer_->viewport_rect_for_tile_priority_in_content_space()); |
672 | 656 |
673 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); | 657 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); |
674 | 658 |
675 gfx::Rect another_viewport_rect_for_tile_priority(11, 11, 50, 50); | 659 gfx::Rect another_viewport_rect_for_tile_priority(11, 11, 50, 50); |
676 host_impl_.SetExternalDrawConstraints( | 660 host_impl_.SetExternalTilePriorityConstraints( |
677 transform, viewport, viewport, another_viewport_rect_for_tile_priority, | 661 another_viewport_rect_for_tile_priority, transform_for_tile_priority); |
678 transform_for_tile_priority, resourceless_software_draw); | |
679 | 662 |
680 // Didn't call UpdateDrawProperties yet. The viewport rect for tile priority | 663 // Didn't call UpdateDrawProperties yet. The viewport rect for tile priority |
681 // should remain to be the previously cached value. | 664 // should remain to be the previously cached value. |
682 EXPECT_EQ(viewport_rect_for_tile_priority, | 665 EXPECT_EQ(viewport_rect_for_tile_priority, |
683 active_layer_->viewport_rect_for_tile_priority_in_content_space()); | 666 active_layer_->viewport_rect_for_tile_priority_in_content_space()); |
684 host_impl_.active_tree()->UpdateDrawProperties(update_lcd_text); | 667 host_impl_.active_tree()->UpdateDrawProperties(update_lcd_text); |
685 | 668 |
686 // Now the UpdateDrawProperties is called. The viewport rect for tile | 669 // Now the UpdateDrawProperties is called. The viewport rect for tile |
687 // priority should be the latest value. | 670 // priority should be the latest value. |
688 EXPECT_EQ(another_viewport_rect_for_tile_priority, | 671 EXPECT_EQ(another_viewport_rect_for_tile_priority, |
(...skipping 1136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1825 // tilings. | 1808 // tilings. |
1826 ActivateTree(); | 1809 ActivateTree(); |
1827 EXPECT_TRUE(active_layer_->CanHaveTilings()); | 1810 EXPECT_TRUE(active_layer_->CanHaveTilings()); |
1828 EXPECT_GT(active_layer_->ideal_contents_scale(), 0.f); | 1811 EXPECT_GT(active_layer_->ideal_contents_scale(), 0.f); |
1829 } | 1812 } |
1830 | 1813 |
1831 TEST_F(NoLowResPictureLayerImplTest, MarkRequiredOffscreenTiles) { | 1814 TEST_F(NoLowResPictureLayerImplTest, MarkRequiredOffscreenTiles) { |
1832 gfx::Size layer_bounds(200, 200); | 1815 gfx::Size layer_bounds(200, 200); |
1833 | 1816 |
1834 gfx::Transform transform; | 1817 gfx::Transform transform; |
1835 gfx::Transform transform_for_tile_priority; | |
1836 bool resourceless_software_draw = false; | 1818 bool resourceless_software_draw = false; |
1837 gfx::Rect viewport(0, 0, 100, 200); | 1819 gfx::Rect viewport(0, 0, 100, 200); |
1838 host_impl_.SetExternalDrawConstraints(transform, | 1820 host_impl_.SetExternalTilePriorityConstraints(viewport, transform); |
1839 viewport, | 1821 host_impl_.SetExternalViewportForTesting(viewport); |
boliu
2015/12/15 23:46:45
Removed this one. Can check the computed rect inst
| |
1840 viewport, | |
1841 viewport, | |
1842 transform, | |
1843 resourceless_software_draw); | |
1844 | 1822 |
1845 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 1823 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = |
1846 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 1824 FakeDisplayListRasterSource::CreateFilled(layer_bounds); |
1847 SetupPendingTreeWithFixedTileSize(pending_raster_source, gfx::Size(100, 100), | 1825 SetupPendingTreeWithFixedTileSize(pending_raster_source, gfx::Size(100, 100), |
1848 Region()); | 1826 Region()); |
1849 | 1827 |
1850 EXPECT_EQ(1u, pending_layer_->num_tilings()); | 1828 EXPECT_EQ(1u, pending_layer_->num_tilings()); |
1851 EXPECT_EQ(viewport, pending_layer_->visible_rect_for_tile_priority()); | 1829 EXPECT_EQ(viewport, pending_layer_->visible_rect_for_tile_priority()); |
1852 | 1830 |
1853 base::TimeTicks time_ticks; | 1831 base::TimeTicks time_ticks; |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1887 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size, Region()); | 1865 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size, Region()); |
1888 | 1866 |
1889 ASSERT_EQ(1u, pending_layer_->num_tilings()); | 1867 ASSERT_EQ(1u, pending_layer_->num_tilings()); |
1890 ASSERT_EQ(1.f, pending_layer_->HighResTiling()->contents_scale()); | 1868 ASSERT_EQ(1.f, pending_layer_->HighResTiling()->contents_scale()); |
1891 | 1869 |
1892 // Set external viewport for tile priority. | 1870 // Set external viewport for tile priority. |
1893 gfx::Rect viewport = gfx::Rect(layer_bounds); | 1871 gfx::Rect viewport = gfx::Rect(layer_bounds); |
1894 gfx::Transform transform; | 1872 gfx::Transform transform; |
1895 gfx::Transform transform_for_tile_priority; | 1873 gfx::Transform transform_for_tile_priority; |
1896 bool resourceless_software_draw = false; | 1874 bool resourceless_software_draw = false; |
1897 host_impl_.SetExternalDrawConstraints(transform, | 1875 host_impl_.SetExternalTilePriorityConstraints( |
1898 viewport, | 1876 external_viewport_for_tile_priority, transform_for_tile_priority); |
1899 viewport, | |
1900 external_viewport_for_tile_priority, | |
1901 transform_for_tile_priority, | |
1902 resourceless_software_draw); | |
1903 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); | 1877 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); |
1904 bool update_lcd_text = false; | 1878 bool update_lcd_text = false; |
1905 host_impl_.pending_tree()->UpdateDrawProperties(update_lcd_text); | 1879 host_impl_.pending_tree()->UpdateDrawProperties(update_lcd_text); |
1906 | 1880 |
1907 // Set visible content rect that is different from | 1881 // Set visible content rect that is different from |
1908 // external_viewport_for_tile_priority. | 1882 // external_viewport_for_tile_priority. |
1909 pending_layer_->draw_properties().visible_layer_rect = visible_layer_rect; | 1883 pending_layer_->draw_properties().visible_layer_rect = visible_layer_rect; |
1910 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); | 1884 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); |
1911 pending_layer_->UpdateTiles(resourceless_software_draw); | 1885 pending_layer_->UpdateTiles(resourceless_software_draw); |
1912 | 1886 |
(...skipping 1723 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3636 | 3610 |
3637 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, 0.f, | 3611 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, 0.f, |
3638 false); | 3612 false); |
3639 | 3613 |
3640 // UpdateTiles with valid viewport. Should update tile viewport. | 3614 // UpdateTiles with valid viewport. Should update tile viewport. |
3641 // Note viewport is considered invalid if and only if in resourceless | 3615 // Note viewport is considered invalid if and only if in resourceless |
3642 // software draw. | 3616 // software draw. |
3643 bool resourceless_software_draw = false; | 3617 bool resourceless_software_draw = false; |
3644 gfx::Rect viewport = gfx::Rect(layer_bounds); | 3618 gfx::Rect viewport = gfx::Rect(layer_bounds); |
3645 gfx::Transform transform; | 3619 gfx::Transform transform; |
3646 host_impl_.SetExternalDrawConstraints(transform, | 3620 host_impl_.SetExternalTilePriorityConstraints(viewport, transform); |
3647 viewport, | |
3648 viewport, | |
3649 viewport, | |
3650 transform, | |
3651 resourceless_software_draw); | |
3652 active_layer_->draw_properties().visible_layer_rect = viewport; | 3621 active_layer_->draw_properties().visible_layer_rect = viewport; |
3653 active_layer_->draw_properties().screen_space_transform = transform; | 3622 active_layer_->draw_properties().screen_space_transform = transform; |
3654 active_layer_->UpdateTiles(resourceless_software_draw); | 3623 active_layer_->UpdateTiles(resourceless_software_draw); |
3655 | 3624 |
3656 gfx::Rect visible_rect_for_tile_priority = | 3625 gfx::Rect visible_rect_for_tile_priority = |
3657 active_layer_->visible_rect_for_tile_priority(); | 3626 active_layer_->visible_rect_for_tile_priority(); |
3658 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty()); | 3627 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty()); |
3659 gfx::Transform screen_space_transform_for_tile_priority = | 3628 gfx::Transform screen_space_transform_for_tile_priority = |
3660 active_layer_->draw_properties().screen_space_transform; | 3629 active_layer_->draw_properties().screen_space_transform; |
3661 | 3630 |
3662 // Expand viewport and set it as invalid for prioritizing tiles. | 3631 // Expand viewport and set it as invalid for prioritizing tiles. |
3663 // Should update viewport and transform, but not update visible rect. | 3632 // Should update viewport and transform, but not update visible rect. |
3664 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); | 3633 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); |
3665 resourceless_software_draw = true; | 3634 resourceless_software_draw = true; |
3666 viewport = gfx::ScaleToEnclosingRect(viewport, 2); | 3635 viewport = gfx::ScaleToEnclosingRect(viewport, 2); |
3667 transform.Translate(1.f, 1.f); | 3636 transform.Translate(1.f, 1.f); |
3668 active_layer_->draw_properties().visible_layer_rect = viewport; | 3637 active_layer_->draw_properties().visible_layer_rect = viewport; |
3669 active_layer_->draw_properties().screen_space_transform = transform; | 3638 active_layer_->draw_properties().screen_space_transform = transform; |
3670 host_impl_.SetExternalDrawConstraints(transform, | 3639 host_impl_.SetExternalTilePriorityConstraints(viewport, transform); |
3671 viewport, | |
3672 viewport, | |
3673 viewport, | |
3674 transform, | |
3675 resourceless_software_draw); | |
3676 active_layer_->UpdateTiles(resourceless_software_draw); | 3640 active_layer_->UpdateTiles(resourceless_software_draw); |
3677 | 3641 |
3678 // Transform for tile priority is updated. | 3642 // Transform for tile priority is updated. |
3679 EXPECT_TRANSFORMATION_MATRIX_EQ( | 3643 EXPECT_TRANSFORMATION_MATRIX_EQ( |
3680 transform, active_layer_->draw_properties().screen_space_transform); | 3644 transform, active_layer_->draw_properties().screen_space_transform); |
3681 // Visible rect for tile priority retains old value. | 3645 // Visible rect for tile priority retains old value. |
3682 EXPECT_EQ(visible_rect_for_tile_priority, | 3646 EXPECT_EQ(visible_rect_for_tile_priority, |
3683 active_layer_->visible_rect_for_tile_priority()); | 3647 active_layer_->visible_rect_for_tile_priority()); |
3684 | 3648 |
3685 // Keep expanded viewport but mark it valid. Should update tile viewport. | 3649 // Keep expanded viewport but mark it valid. Should update tile viewport. |
3686 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); | 3650 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); |
3687 resourceless_software_draw = false; | 3651 resourceless_software_draw = false; |
3688 host_impl_.SetExternalDrawConstraints(transform, | 3652 host_impl_.SetExternalTilePriorityConstraints(viewport, transform); |
3689 viewport, | |
3690 viewport, | |
3691 viewport, | |
3692 transform, | |
3693 resourceless_software_draw); | |
3694 active_layer_->UpdateTiles(resourceless_software_draw); | 3653 active_layer_->UpdateTiles(resourceless_software_draw); |
3695 | 3654 |
3696 EXPECT_TRANSFORMATION_MATRIX_EQ( | 3655 EXPECT_TRANSFORMATION_MATRIX_EQ( |
3697 transform, active_layer_->draw_properties().screen_space_transform); | 3656 transform, active_layer_->draw_properties().screen_space_transform); |
3698 EXPECT_EQ(viewport, active_layer_->visible_rect_for_tile_priority()); | 3657 EXPECT_EQ(viewport, active_layer_->visible_rect_for_tile_priority()); |
3699 } | 3658 } |
3700 | 3659 |
3701 TEST_F(NoLowResPictureLayerImplTest, CleanUpTilings) { | 3660 TEST_F(NoLowResPictureLayerImplTest, CleanUpTilings) { |
3702 gfx::Size layer_bounds(1300, 1900); | 3661 gfx::Size layer_bounds(1300, 1900); |
3703 std::vector<PictureLayerTiling*> used_tilings; | 3662 std::vector<PictureLayerTiling*> used_tilings; |
(...skipping 1095 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4799 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 4758 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = |
4800 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 4759 FakeDisplayListRasterSource::CreateFilled(layer_bounds); |
4801 scoped_refptr<FakeDisplayListRasterSource> active_raster_source = | 4760 scoped_refptr<FakeDisplayListRasterSource> active_raster_source = |
4802 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 4761 FakeDisplayListRasterSource::CreateFilled(layer_bounds); |
4803 | 4762 |
4804 SetupPendingTreeWithFixedTileSize(active_raster_source, tile_size, Region()); | 4763 SetupPendingTreeWithFixedTileSize(active_raster_source, tile_size, Region()); |
4805 | 4764 |
4806 ActivateTree(); | 4765 ActivateTree(); |
4807 EXPECT_TRUE(active_layer_->HighResTiling()->has_tiles()); | 4766 EXPECT_TRUE(active_layer_->HighResTiling()->has_tiles()); |
4808 | 4767 |
4809 host_impl_.SetExternalDrawConstraints( | 4768 host_impl_.SetExternalTilePriorityConstraints(gfx::Rect(0, 5000, 100, 100), |
4810 gfx::Transform(), // transform | 4769 gfx::Transform()); |
4811 gfx::Rect(), // clip | |
4812 gfx::Rect(), // viewport | |
4813 gfx::Rect(0, 5000, 100, 100), // viewport_rect_for_tile_priority | |
4814 gfx::Transform(), // transform_for_tile_priority | |
4815 false); | |
4816 | 4770 |
4817 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size, | 4771 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size, |
4818 gfx::Rect()); | 4772 gfx::Rect()); |
4819 | 4773 |
4820 EXPECT_FALSE(pending_layer_->HighResTiling()->has_tiles()); | 4774 EXPECT_FALSE(pending_layer_->HighResTiling()->has_tiles()); |
4821 EXPECT_TRUE(pending_layer_->HighResTiling()->live_tiles_rect().IsEmpty()); | 4775 EXPECT_TRUE(pending_layer_->HighResTiling()->live_tiles_rect().IsEmpty()); |
4822 ActivateTree(); | 4776 ActivateTree(); |
4823 EXPECT_FALSE(active_layer_->HighResTiling()->has_tiles()); | 4777 EXPECT_FALSE(active_layer_->HighResTiling()->has_tiles()); |
4824 EXPECT_TRUE(active_layer_->HighResTiling()->live_tiles_rect().IsEmpty()); | 4778 EXPECT_TRUE(active_layer_->HighResTiling()->live_tiles_rect().IsEmpty()); |
4825 | 4779 |
4826 host_impl_.SetExternalDrawConstraints( | 4780 host_impl_.SetExternalTilePriorityConstraints(gfx::Rect(0, 110, 100, 100), |
4827 gfx::Transform(), // transform | 4781 gfx::Transform()); |
4828 gfx::Rect(), // clip | |
4829 gfx::Rect(), // viewport | |
4830 gfx::Rect(0, 110, 100, 100), // viewport_rect_for_tile_priority | |
4831 gfx::Transform(), // transform_for_tile_priority | |
4832 false); | |
4833 | 4782 |
4834 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size, | 4783 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size, |
4835 gfx::Rect()); | 4784 gfx::Rect()); |
4836 | 4785 |
4837 EXPECT_FALSE(pending_layer_->HighResTiling()->has_tiles()); | 4786 EXPECT_FALSE(pending_layer_->HighResTiling()->has_tiles()); |
4838 EXPECT_FALSE(pending_layer_->HighResTiling()->live_tiles_rect().IsEmpty()); | 4787 EXPECT_FALSE(pending_layer_->HighResTiling()->live_tiles_rect().IsEmpty()); |
4839 ActivateTree(); | 4788 ActivateTree(); |
4840 EXPECT_TRUE(active_layer_->HighResTiling()->has_tiles()); | 4789 EXPECT_TRUE(active_layer_->HighResTiling()->has_tiles()); |
4841 EXPECT_FALSE(active_layer_->HighResTiling()->live_tiles_rect().IsEmpty()); | 4790 EXPECT_FALSE(active_layer_->HighResTiling()->live_tiles_rect().IsEmpty()); |
4842 } | 4791 } |
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
5103 // New low res tiling. | 5052 // New low res tiling. |
5104 EXPECT_TRUE(tilings->tiling_at(2)->may_contain_low_resolution_tiles()); | 5053 EXPECT_TRUE(tilings->tiling_at(2)->may_contain_low_resolution_tiles()); |
5105 | 5054 |
5106 // This tiling will be high res now, it won't contain low res content since it | 5055 // This tiling will be high res now, it won't contain low res content since it |
5107 // was all destroyed. | 5056 // was all destroyed. |
5108 EXPECT_FALSE(tilings->tiling_at(1)->may_contain_low_resolution_tiles()); | 5057 EXPECT_FALSE(tilings->tiling_at(1)->may_contain_low_resolution_tiles()); |
5109 } | 5058 } |
5110 | 5059 |
5111 } // namespace | 5060 } // namespace |
5112 } // namespace cc | 5061 } // namespace cc |
OLD | NEW |