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

Side by Side Diff: cc/trees/layer_tree_host_unittest_delegated.cc

Issue 311253004: Invert DSF to map from delegated frame to layer space (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: scale android layer up, remove cc::DRL::SetDisplaySize Created 6 years, 6 months 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 | Annotate | Revision Log
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/trees/layer_tree_host.h" 5 #include "cc/trees/layer_tree_host.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/location.h" 10 #include "base/location.h"
(...skipping 468 matching lines...) Expand 10 before | Expand all | Expand 10 after
479 // damaged. 479 // damaged.
480 SetFrameData( 480 SetFrameData(
481 CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1))); 481 CreateFrameData(gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1)));
482 break; 482 break;
483 case 2: 483 case 2:
484 // A different frame size will damage the whole layer. 484 // A different frame size will damage the whole layer.
485 SetFrameData( 485 SetFrameData(
486 CreateFrameData(gfx::Rect(0, 0, 20, 20), gfx::Rect(0, 0, 0, 0))); 486 CreateFrameData(gfx::Rect(0, 0, 20, 20), gfx::Rect(0, 0, 0, 0)));
487 break; 487 break;
488 case 3: 488 case 3:
489 // Should create a total amount of gfx::Rect(2, 2, 10, 6) damage. 489 // Should create a total amount of gfx::Rect(2, 2, 8, 6) damage:
490 // The frame size is 20x20 while the layer is 10x10, so this should 490 // (2, 2, 10, 6) clamped to the root output rect.
491 // produce a gfx::Rect(1, 1, 5, 3) damage rect.
492 SetFrameData( 491 SetFrameData(
493 CreateFrameData(gfx::Rect(0, 0, 20, 20), gfx::Rect(2, 2, 5, 5))); 492 CreateFrameData(gfx::Rect(0, 0, 20, 20), gfx::Rect(2, 2, 5, 5)));
494 SetFrameData( 493 SetFrameData(
495 CreateFrameData(gfx::Rect(0, 0, 20, 20), gfx::Rect(7, 2, 5, 6))); 494 CreateFrameData(gfx::Rect(0, 0, 20, 20), gfx::Rect(7, 2, 5, 6)));
496 break; 495 break;
497 case 4: 496 case 4:
498 // Should create zero damage. 497 // Should create zero damage.
499 layer_tree_host()->SetNeedsCommit(); 498 layer_tree_host()->SetNeedsCommit();
500 break; 499 break;
501 case 5: 500 case 5:
502 // Should damage the full viewport. 501 // Should damage the full viewport.
503 delegated_->SetBounds(gfx::Size(2, 2)); 502 delegated_->SetBounds(gfx::Size(2, 2));
504 break; 503 break;
505 case 6: 504 case 6:
506 // Should create zero damage. 505 // Should create zero damage.
507 layer_tree_host()->SetNeedsCommit(); 506 layer_tree_host()->SetNeedsCommit();
508 break; 507 break;
509 case 7: 508 case 7:
510 // Should damage the full layer, tho the frame size is not changing. 509 // Should damage the full layer, tho the frame size is not changing.
511 delegated_->SetBounds(gfx::Size(6, 6)); 510 delegated_->SetBounds(gfx::Size(6, 6));
512 SetFrameData( 511 SetFrameData(
513 CreateFrameData(gfx::Rect(0, 0, 20, 20), gfx::Rect(1, 1, 2, 2))); 512 CreateFrameData(gfx::Rect(0, 0, 20, 20), gfx::Rect(1, 1, 2, 2)));
514 break; 513 break;
515 case 8: 514 case 8:
516 // Should create zero damage. 515 // Should create zero damage.
517 layer_tree_host()->SetNeedsCommit(); 516 layer_tree_host()->SetNeedsCommit();
518 break; 517 break;
519 case 9: 518 case 9:
520 // Should damage the full layer.
521 delegated_->SetDisplaySize(gfx::Size(10, 10));
522 break;
523 case 10:
524 // Should create zero damage. 519 // Should create zero damage.
525 layer_tree_host()->SetNeedsCommit(); 520 layer_tree_host()->SetNeedsCommit();
526 break; 521 break;
527 case 11: 522 case 10:
528 // Changing the frame size damages the full layer. 523 // Changing the frame size damages the full layer.
529 SetFrameData( 524 SetFrameData(
530 CreateFrameData(gfx::Rect(0, 0, 5, 5), gfx::Rect(4, 4, 1, 1))); 525 CreateFrameData(gfx::Rect(0, 0, 5, 5), gfx::Rect(4, 4, 1, 1)));
531 break; 526 break;
532 case 12: 527 case 11:
533 // An invalid frame isn't used, so it should not cause damage. 528 // An invalid frame isn't used, so it should not cause damage.
534 SetFrameData(CreateInvalidFrameData(gfx::Rect(0, 0, 5, 5), 529 SetFrameData(CreateInvalidFrameData(gfx::Rect(0, 0, 5, 5),
535 gfx::Rect(4, 4, 1, 1))); 530 gfx::Rect(4, 4, 1, 1)));
536 break; 531 break;
537 case 13: 532 case 12:
538 // Should create gfx::Rect(1, 1, 2, 2) of damage. The frame size is 533 // Should create gfx::Rect(1, 1, 2, 2) of damage.
539 // 5x5 and the display size is now set to 10x10, so this should result
540 // in a gfx::Rect(2, 2, 4, 4) damage rect.
541 SetFrameData( 534 SetFrameData(
542 CreateFrameData(gfx::Rect(0, 0, 5, 5), gfx::Rect(1, 1, 2, 2))); 535 CreateFrameData(gfx::Rect(0, 0, 5, 5), gfx::Rect(1, 1, 2, 2)));
543 break; 536 break;
544 case 14: 537 case 13:
545 // Should create zero damage. 538 // Should create zero damage.
546 layer_tree_host()->SetNeedsCommit(); 539 layer_tree_host()->SetNeedsCommit();
547 break; 540 break;
548 case 15: 541 case 14:
549 // Moving the layer out of the tree and back in will damage the whole 542 // Moving the layer out of the tree and back in will damage the whole
550 // impl layer. 543 // impl layer.
551 delegated_->RemoveFromParent(); 544 delegated_->RemoveFromParent();
552 layer_tree_host()->root_layer()->AddChild(delegated_); 545 layer_tree_host()->root_layer()->AddChild(delegated_);
553 break; 546 break;
554 case 16: 547 case 15:
555 // Make a larger frame with lots of damage. Then a frame smaller than 548 // Make a larger frame with lots of damage. Then a frame smaller than
556 // the first frame's damage. The entire layer should be damaged, but 549 // the first frame's damage. The entire layer should be damaged, but
557 // nothing more. 550 // nothing more.
558 SetFrameData( 551 SetFrameData(
559 CreateFrameData(gfx::Rect(0, 0, 10, 10), gfx::Rect(0, 0, 10, 10))); 552 CreateFrameData(gfx::Rect(0, 0, 10, 10), gfx::Rect(0, 0, 10, 10)));
560 SetFrameData( 553 SetFrameData(
561 CreateFrameData(gfx::Rect(0, 0, 5, 5), gfx::Rect(1, 1, 2, 2))); 554 CreateFrameData(gfx::Rect(0, 0, 5, 5), gfx::Rect(1, 1, 2, 2)));
562 break; 555 break;
563 case 17: 556 case 16:
564 // Make a frame with lots of damage. Then replace it with a frame with 557 // Make a frame with lots of damage. Then replace it with a frame with
565 // no damage. The entire layer should be damaged, but nothing more. 558 // no damage. The entire layer should be damaged, but nothing more.
566 SetFrameData( 559 SetFrameData(
567 CreateFrameData(gfx::Rect(0, 0, 10, 10), gfx::Rect(0, 0, 10, 10))); 560 CreateFrameData(gfx::Rect(0, 0, 10, 10), gfx::Rect(0, 0, 10, 10)));
568 SetFrameData( 561 SetFrameData(
569 CreateFrameData(gfx::Rect(0, 0, 10, 10), gfx::Rect(0, 0, 0, 0))); 562 CreateFrameData(gfx::Rect(0, 0, 10, 10), gfx::Rect(0, 0, 0, 0)));
570 break; 563 break;
571 case 18: 564 case 17:
572 // Make another layer that uses the same frame provider. The new layer 565 // Make another layer that uses the same frame provider. The new layer
573 // should be damaged. 566 // should be damaged.
574 delegated_copy_ = CreateDelegatedLayer(frame_provider_); 567 delegated_copy_ = CreateDelegatedLayer(frame_provider_);
575 delegated_copy_->SetPosition(gfx::Point(5, 0)); 568 delegated_copy_->SetPosition(gfx::Point(5, 0));
576 569
577 // Also set a new frame. 570 // Also set a new frame.
578 SetFrameData( 571 SetFrameData(
579 CreateFrameData(gfx::Rect(0, 0, 10, 10), gfx::Rect(4, 0, 1, 1))); 572 CreateFrameData(gfx::Rect(0, 0, 10, 10), gfx::Rect(4, 0, 1, 1)));
580 break; 573 break;
581 case 19: 574 case 18:
582 // Set another new frame, both layers should be damaged in the same 575 // Set another new frame, both layers should be damaged in the same
583 // ways. 576 // ways.
584 SetFrameData( 577 SetFrameData(
585 CreateFrameData(gfx::Rect(0, 0, 10, 10), gfx::Rect(3, 3, 1, 1))); 578 CreateFrameData(gfx::Rect(0, 0, 10, 10), gfx::Rect(3, 3, 1, 1)));
579 break;
586 } 580 }
587 first_draw_for_source_frame_ = true; 581 first_draw_for_source_frame_ = true;
588 } 582 }
589 583
590 virtual DrawResult PrepareToDrawOnThread( 584 virtual DrawResult PrepareToDrawOnThread(
591 LayerTreeHostImpl* host_impl, 585 LayerTreeHostImpl* host_impl,
592 LayerTreeHostImpl::FrameData* frame, 586 LayerTreeHostImpl::FrameData* frame,
593 DrawResult draw_result) OVERRIDE { 587 DrawResult draw_result) OVERRIDE {
594 EXPECT_EQ(DRAW_SUCCESS, draw_result); 588 EXPECT_EQ(DRAW_SUCCESS, draw_result);
595 589
(...skipping 13 matching lines...) Expand all
609 // First frame is damaged because of viewport resize. 603 // First frame is damaged because of viewport resize.
610 EXPECT_EQ(gfx::Rect(15, 15).ToString(), damage_rect.ToString()); 604 EXPECT_EQ(gfx::Rect(15, 15).ToString(), damage_rect.ToString());
611 break; 605 break;
612 case 1: 606 case 1:
613 EXPECT_EQ(gfx::Rect(10, 10).ToString(), damage_rect.ToString()); 607 EXPECT_EQ(gfx::Rect(10, 10).ToString(), damage_rect.ToString());
614 break; 608 break;
615 case 2: 609 case 2:
616 EXPECT_EQ(gfx::Rect(10, 10).ToString(), damage_rect.ToString()); 610 EXPECT_EQ(gfx::Rect(10, 10).ToString(), damage_rect.ToString());
617 break; 611 break;
618 case 3: 612 case 3:
619 EXPECT_EQ(gfx::Rect(1, 1, 5, 3).ToString(), damage_rect.ToString()); 613 EXPECT_EQ(gfx::Rect(2, 2, 8, 6).ToString(), damage_rect.ToString());
620 break; 614 break;
621 case 4: 615 case 4:
622 EXPECT_EQ(gfx::Rect().ToString(), damage_rect.ToString()); 616 EXPECT_EQ(gfx::Rect().ToString(), damage_rect.ToString());
623 break; 617 break;
624 case 5: 618 case 5:
625 EXPECT_EQ(gfx::Rect(10, 10).ToString(), damage_rect.ToString()); 619 EXPECT_EQ(gfx::Rect(10, 10).ToString(), damage_rect.ToString());
626 break; 620 break;
627 case 6: 621 case 6:
628 EXPECT_EQ(gfx::Rect().ToString(), damage_rect.ToString()); 622 EXPECT_EQ(gfx::Rect().ToString(), damage_rect.ToString());
629 break; 623 break;
630 case 7: 624 case 7:
631 EXPECT_EQ(gfx::Rect(6, 6).ToString(), damage_rect.ToString()); 625 EXPECT_EQ(gfx::Rect(6, 6).ToString(), damage_rect.ToString());
632 break; 626 break;
633 case 8: 627 case 8:
634 EXPECT_EQ(gfx::Rect().ToString(), damage_rect.ToString()); 628 EXPECT_EQ(gfx::Rect().ToString(), damage_rect.ToString());
635 break; 629 break;
636 case 9: 630 case 9:
637 EXPECT_EQ(gfx::Rect(6, 6).ToString(), damage_rect.ToString()); 631 EXPECT_EQ(gfx::Rect().ToString(), damage_rect.ToString());
638 break; 632 break;
639 case 10: 633 case 10:
634 EXPECT_EQ(gfx::Rect(10, 10).ToString(), damage_rect.ToString());
635 break;
636 case 11:
640 EXPECT_EQ(gfx::Rect().ToString(), damage_rect.ToString()); 637 EXPECT_EQ(gfx::Rect().ToString(), damage_rect.ToString());
641 break; 638 break;
642 case 11: 639 case 12:
643 EXPECT_EQ(gfx::Rect(10, 10).ToString(), damage_rect.ToString()); 640 EXPECT_EQ(gfx::Rect(1, 1, 2, 2).ToString(), damage_rect.ToString());
644 break; 641 break;
645 case 12: 642 case 13:
646 EXPECT_EQ(gfx::Rect().ToString(), damage_rect.ToString()); 643 EXPECT_EQ(gfx::Rect().ToString(), damage_rect.ToString());
647 break; 644 break;
648 case 13:
649 EXPECT_EQ(gfx::Rect(2, 2, 4, 4).ToString(), damage_rect.ToString());
650 break;
651 case 14: 645 case 14:
652 EXPECT_EQ(gfx::Rect().ToString(), damage_rect.ToString()); 646 EXPECT_EQ(gfx::Rect(10, 10).ToString(), damage_rect.ToString());
653 break; 647 break;
654 case 15: 648 case 15:
655 EXPECT_EQ(gfx::Rect(10, 10).ToString(), damage_rect.ToString()); 649 EXPECT_EQ(gfx::Rect(10, 10).ToString(), damage_rect.ToString());
656 break; 650 break;
657 case 16: 651 case 16:
658 EXPECT_EQ(gfx::Rect(10, 10).ToString(), damage_rect.ToString()); 652 EXPECT_EQ(gfx::Rect(10, 10).ToString(), damage_rect.ToString());
659 break; 653 break;
660 case 17: 654 case 17:
661 EXPECT_EQ(gfx::Rect(10, 10).ToString(), damage_rect.ToString());
662 break;
663 case 18:
664 EXPECT_EQ(gfx::UnionRects(gfx::Rect(5, 0, 10, 10), 655 EXPECT_EQ(gfx::UnionRects(gfx::Rect(5, 0, 10, 10),
665 gfx::Rect(4, 0, 1, 1)).ToString(), 656 gfx::Rect(4, 0, 1, 1)).ToString(),
666 damage_rect.ToString()); 657 damage_rect.ToString());
667 break; 658 break;
668 case 19: 659 case 18:
669 EXPECT_EQ(gfx::Rect(3, 3, 6, 1).ToString(), damage_rect.ToString()); 660 EXPECT_EQ(gfx::Rect(3, 3, 6, 1).ToString(), damage_rect.ToString());
670 EndTest(); 661 EndTest();
671 break; 662 break;
672 } 663 }
673 664
674 return draw_result; 665 return draw_result;
675 } 666 }
676 667
677 protected: 668 protected:
678 scoped_refptr<DelegatedRendererLayer> delegated_copy_; 669 scoped_refptr<DelegatedRendererLayer> delegated_copy_;
(...skipping 1514 matching lines...) Expand 10 before | Expand all | Expand 10 after
2193 } 2184 }
2194 2185
2195 scoped_refptr<DelegatedRendererLayer> delegated_thief_; 2186 scoped_refptr<DelegatedRendererLayer> delegated_thief_;
2196 }; 2187 };
2197 2188
2198 SINGLE_AND_MULTI_THREAD_TEST_F( 2189 SINGLE_AND_MULTI_THREAD_TEST_F(
2199 LayerTreeHostDelegatedTestRemoveAndChangeResources); 2190 LayerTreeHostDelegatedTestRemoveAndChangeResources);
2200 2191
2201 } // namespace 2192 } // namespace
2202 } // namespace cc 2193 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698