Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(77)

Side by Side Diff: cc/layers/picture_layer_impl_unittest.cc

Issue 1418273002: cc: Move draw params from SetExternalDrawConstraints to OnDraw (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: EXPECT_SCOPED Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/layers/picture_layer_impl.cc ('k') | cc/output/output_surface.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « cc/layers/picture_layer_impl.cc ('k') | cc/output/output_surface.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698