| 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, | |
| 1840 viewport, | |
| 1841 viewport, | |
| 1842 transform, | |
| 1843 resourceless_software_draw); | |
| 1844 | 1821 |
| 1845 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 1822 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = |
| 1846 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 1823 FakeDisplayListRasterSource::CreateFilled(layer_bounds); |
| 1847 SetupPendingTreeWithFixedTileSize(pending_raster_source, gfx::Size(100, 100), | 1824 SetupPendingTreeWithFixedTileSize(pending_raster_source, gfx::Size(100, 100), |
| 1848 Region()); | 1825 Region()); |
| 1849 | 1826 |
| 1850 EXPECT_EQ(1u, pending_layer_->num_tilings()); | 1827 EXPECT_EQ(1u, pending_layer_->num_tilings()); |
| 1851 EXPECT_EQ(viewport, pending_layer_->visible_rect_for_tile_priority()); | 1828 EXPECT_EQ(viewport, |
| 1829 pending_layer_->viewport_rect_for_tile_priority_in_content_space()); |
| 1852 | 1830 |
| 1853 base::TimeTicks time_ticks; | 1831 base::TimeTicks time_ticks; |
| 1854 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); | 1832 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); |
| 1855 pending_layer_->UpdateTiles(resourceless_software_draw); | 1833 pending_layer_->UpdateTiles(resourceless_software_draw); |
| 1856 | 1834 |
| 1857 int num_visible = 0; | 1835 int num_visible = 0; |
| 1858 int num_offscreen = 0; | 1836 int num_offscreen = 0; |
| 1859 | 1837 |
| 1860 scoped_ptr<TilingSetRasterQueueAll> queue(new TilingSetRasterQueueAll( | 1838 scoped_ptr<TilingSetRasterQueueAll> queue(new TilingSetRasterQueueAll( |
| 1861 pending_layer_->picture_layer_tiling_set(), false)); | 1839 pending_layer_->picture_layer_tiling_set(), false)); |
| (...skipping 25 matching lines...) Expand all 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 |