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

Side by Side Diff: cc/CCLayerTreeHostImplTest.cpp

Issue 10984053: cc: Use ui/gfx geometry types for the CCRenderPass and CCDrawQuad classes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 2 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 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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 "config.h" 5 #include "config.h"
6 6
7 #include "CCLayerTreeHostImpl.h" 7 #include "CCLayerTreeHostImpl.h"
8 8
9 #include "CCAnimationTestCommon.h" 9 #include "CCAnimationTestCommon.h"
10 #include "CCDelegatedRendererLayerImpl.h" 10 #include "CCDelegatedRendererLayerImpl.h"
(...skipping 2920 matching lines...) Expand 10 before | Expand all | Expand 10 after
2931 { 2931 {
2932 CCLayerTreeHostImpl::FrameData frame; 2932 CCLayerTreeHostImpl::FrameData frame;
2933 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); 2933 EXPECT_TRUE(myHostImpl->prepareToDraw(frame));
2934 2934
2935 // Must receive two render passes, each with one quad 2935 // Must receive two render passes, each with one quad
2936 ASSERT_EQ(2U, frame.renderPasses.size()); 2936 ASSERT_EQ(2U, frame.renderPasses.size());
2937 EXPECT_EQ(2U, frame.renderPasses[0]->quadList().size()); 2937 EXPECT_EQ(2U, frame.renderPasses[0]->quadList().size());
2938 ASSERT_EQ(1U, frame.renderPasses[1]->quadList().size()); 2938 ASSERT_EQ(1U, frame.renderPasses[1]->quadList().size());
2939 2939
2940 // Verify that the child layers are being clipped. 2940 // Verify that the child layers are being clipped.
2941 IntRect quadVisibleRect = frame.renderPasses[0]->quadList()[0]->quadVisi bleRect(); 2941 ccmath::IntRect quadVisibleRect = frame.renderPasses[0]->quadList()[0]-> quadVisibleRect();
2942 EXPECT_LT(quadVisibleRect.width(), 100); 2942 EXPECT_LT(quadVisibleRect.width(), 100);
2943 2943
2944 quadVisibleRect = frame.renderPasses[0]->quadList()[1]->quadVisibleRect( ); 2944 quadVisibleRect = frame.renderPasses[0]->quadList()[1]->quadVisibleRect( );
2945 EXPECT_LT(quadVisibleRect.width(), 100); 2945 EXPECT_LT(quadVisibleRect.width(), 100);
2946 2946
2947 // Verify that the render surface texture is *not* clipped. 2947 // Verify that the render surface texture is *not* clipped.
2948 EXPECT_RECT_EQ(IntRect(0, 0, 100, 100), frame.renderPasses[0]->outputRec t()); 2948 EXPECT_RECT_EQ(IntRect(0, 0, 100, 100), frame.renderPasses[0]->outputRec t());
2949 2949
2950 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]-> material()); 2950 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]-> material());
2951 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[1]->quadList()[0]); 2951 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[1]->quadList()[0]);
2952 EXPECT_FALSE(quad->contentsChangedSinceLastFrame().isEmpty()); 2952 EXPECT_FALSE(quad->contentsChangedSinceLastFrame().IsEmpty());
2953 2953
2954 myHostImpl->drawLayers(frame); 2954 myHostImpl->drawLayers(frame);
2955 myHostImpl->didDrawAllLayers(frame); 2955 myHostImpl->didDrawAllLayers(frame);
2956 } 2956 }
2957 2957
2958 transform = surfaceLayerPtr->transform(); 2958 transform = surfaceLayerPtr->transform();
2959 transform.translate(50, 50); 2959 transform.translate(50, 50);
2960 transform.rotate(-35); 2960 transform.rotate(-35);
2961 transform.translate(-50, -50); 2961 transform.translate(-50, -50);
2962 surfaceLayerPtr->setTransform(transform); 2962 surfaceLayerPtr->setTransform(transform);
(...skipping 650 matching lines...) Expand 10 before | Expand all | Expand 10 after
3613 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); 3613 EXPECT_TRUE(myHostImpl->prepareToDraw(frame));
3614 3614
3615 // Must receive two render passes, each with one quad 3615 // Must receive two render passes, each with one quad
3616 ASSERT_EQ(2U, frame.renderPasses.size()); 3616 ASSERT_EQ(2U, frame.renderPasses.size());
3617 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); 3617 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size());
3618 EXPECT_EQ(1U, frame.renderPasses[1]->quadList().size()); 3618 EXPECT_EQ(1U, frame.renderPasses[1]->quadList().size());
3619 3619
3620 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]-> material()); 3620 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]-> material());
3621 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[1]->quadList()[0]); 3621 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[1]->quadList()[0]);
3622 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ()); 3622 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ());
3623 EXPECT_FALSE(targetPass->damageRect().isEmpty()); 3623 EXPECT_FALSE(targetPass->damageRect().IsEmpty());
3624 3624
3625 myHostImpl->drawLayers(frame); 3625 myHostImpl->drawLayers(frame);
3626 myHostImpl->didDrawAllLayers(frame); 3626 myHostImpl->didDrawAllLayers(frame);
3627 } 3627 }
3628 3628
3629 // Draw without any change 3629 // Draw without any change
3630 { 3630 {
3631 CCLayerTreeHostImpl::FrameData frame; 3631 CCLayerTreeHostImpl::FrameData frame;
3632 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); 3632 EXPECT_TRUE(myHostImpl->prepareToDraw(frame));
3633 3633
3634 // Must receive one render pass, as the other one should be culled 3634 // Must receive one render pass, as the other one should be culled
3635 ASSERT_EQ(1U, frame.renderPasses.size()); 3635 ASSERT_EQ(1U, frame.renderPasses.size());
3636 3636
3637 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); 3637 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size());
3638 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[0]->quadList()[0]-> material()); 3638 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[0]->quadList()[0]-> material());
3639 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[0]->quadList()[0]); 3639 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[0]->quadList()[0]);
3640 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ()); 3640 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ());
3641 EXPECT_TRUE(targetPass->damageRect().isEmpty()); 3641 EXPECT_TRUE(targetPass->damageRect().IsEmpty());
3642 3642
3643 myHostImpl->drawLayers(frame); 3643 myHostImpl->drawLayers(frame);
3644 myHostImpl->didDrawAllLayers(frame); 3644 myHostImpl->didDrawAllLayers(frame);
3645 } 3645 }
3646 3646
3647 // Change opacity and draw 3647 // Change opacity and draw
3648 surfaceLayerPtr->setOpacity(0.6f); 3648 surfaceLayerPtr->setOpacity(0.6f);
3649 { 3649 {
3650 CCLayerTreeHostImpl::FrameData frame; 3650 CCLayerTreeHostImpl::FrameData frame;
3651 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); 3651 EXPECT_TRUE(myHostImpl->prepareToDraw(frame));
3652 3652
3653 // Must receive one render pass, as the other one should be culled 3653 // Must receive one render pass, as the other one should be culled
3654 ASSERT_EQ(1U, frame.renderPasses.size()); 3654 ASSERT_EQ(1U, frame.renderPasses.size());
3655 3655
3656 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); 3656 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size());
3657 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[0]->quadList()[0]-> material()); 3657 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[0]->quadList()[0]-> material());
3658 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[0]->quadList()[0]); 3658 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[0]->quadList()[0]);
3659 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ()); 3659 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ());
3660 EXPECT_TRUE(targetPass->damageRect().isEmpty()); 3660 EXPECT_TRUE(targetPass->damageRect().IsEmpty());
3661 3661
3662 myHostImpl->drawLayers(frame); 3662 myHostImpl->drawLayers(frame);
3663 myHostImpl->didDrawAllLayers(frame); 3663 myHostImpl->didDrawAllLayers(frame);
3664 } 3664 }
3665 3665
3666 // Change less benign property and draw - should have contents changed flag 3666 // Change less benign property and draw - should have contents changed flag
3667 surfaceLayerPtr->setStackingOrderChanged(true); 3667 surfaceLayerPtr->setStackingOrderChanged(true);
3668 { 3668 {
3669 CCLayerTreeHostImpl::FrameData frame; 3669 CCLayerTreeHostImpl::FrameData frame;
3670 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); 3670 EXPECT_TRUE(myHostImpl->prepareToDraw(frame));
3671 3671
3672 // Must receive two render passes, each with one quad 3672 // Must receive two render passes, each with one quad
3673 ASSERT_EQ(2U, frame.renderPasses.size()); 3673 ASSERT_EQ(2U, frame.renderPasses.size());
3674 3674
3675 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); 3675 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size());
3676 EXPECT_EQ(CCDrawQuad::SolidColor, frame.renderPasses[0]->quadList()[0]-> material()); 3676 EXPECT_EQ(CCDrawQuad::SolidColor, frame.renderPasses[0]->quadList()[0]-> material());
3677 3677
3678 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]-> material()); 3678 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]-> material());
3679 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[1]->quadList()[0]); 3679 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[1]->quadList()[0]);
3680 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ()); 3680 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ());
3681 EXPECT_FALSE(targetPass->damageRect().isEmpty()); 3681 EXPECT_FALSE(targetPass->damageRect().IsEmpty());
3682 3682
3683 myHostImpl->drawLayers(frame); 3683 myHostImpl->drawLayers(frame);
3684 myHostImpl->didDrawAllLayers(frame); 3684 myHostImpl->didDrawAllLayers(frame);
3685 } 3685 }
3686 3686
3687 // Change opacity again, and evict the cached surface texture. 3687 // Change opacity again, and evict the cached surface texture.
3688 surfaceLayerPtr->setOpacity(0.5f); 3688 surfaceLayerPtr->setOpacity(0.5f);
3689 static_cast<CCRendererGLWithReleaseTextures*>(myHostImpl->renderer())->relea seRenderPassTextures(); 3689 static_cast<CCRendererGLWithReleaseTextures*>(myHostImpl->renderer())->relea seRenderPassTextures();
3690 3690
3691 // Change opacity and draw 3691 // Change opacity and draw
3692 surfaceLayerPtr->setOpacity(0.6f); 3692 surfaceLayerPtr->setOpacity(0.6f);
3693 { 3693 {
3694 CCLayerTreeHostImpl::FrameData frame; 3694 CCLayerTreeHostImpl::FrameData frame;
3695 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); 3695 EXPECT_TRUE(myHostImpl->prepareToDraw(frame));
3696 3696
3697 // Must receive two render passes 3697 // Must receive two render passes
3698 ASSERT_EQ(2U, frame.renderPasses.size()); 3698 ASSERT_EQ(2U, frame.renderPasses.size());
3699 3699
3700 // Even though not enough properties changed, the entire thing must be 3700 // Even though not enough properties changed, the entire thing must be
3701 // redrawn as we don't have cached textures 3701 // redrawn as we don't have cached textures
3702 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); 3702 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size());
3703 EXPECT_EQ(1U, frame.renderPasses[1]->quadList().size()); 3703 EXPECT_EQ(1U, frame.renderPasses[1]->quadList().size());
3704 3704
3705 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]-> material()); 3705 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]-> material());
3706 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[1]->quadList()[0]); 3706 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[1]->quadList()[0]);
3707 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ()); 3707 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ());
3708 EXPECT_TRUE(targetPass->damageRect().isEmpty()); 3708 EXPECT_TRUE(targetPass->damageRect().IsEmpty());
3709 3709
3710 // Was our surface evicted? 3710 // Was our surface evicted?
3711 EXPECT_FALSE(myHostImpl->renderer()->haveCachedResourcesForRenderPassId( targetPass->id())); 3711 EXPECT_FALSE(myHostImpl->renderer()->haveCachedResourcesForRenderPassId( targetPass->id()));
3712 3712
3713 myHostImpl->drawLayers(frame); 3713 myHostImpl->drawLayers(frame);
3714 myHostImpl->didDrawAllLayers(frame); 3714 myHostImpl->didDrawAllLayers(frame);
3715 } 3715 }
3716 3716
3717 // Draw without any change, to make sure the state is clear 3717 // Draw without any change, to make sure the state is clear
3718 { 3718 {
3719 CCLayerTreeHostImpl::FrameData frame; 3719 CCLayerTreeHostImpl::FrameData frame;
3720 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); 3720 EXPECT_TRUE(myHostImpl->prepareToDraw(frame));
3721 3721
3722 // Must receive one render pass, as the other one should be culled 3722 // Must receive one render pass, as the other one should be culled
3723 ASSERT_EQ(1U, frame.renderPasses.size()); 3723 ASSERT_EQ(1U, frame.renderPasses.size());
3724 3724
3725 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); 3725 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size());
3726 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[0]->quadList()[0]-> material()); 3726 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[0]->quadList()[0]-> material());
3727 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[0]->quadList()[0]); 3727 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[0]->quadList()[0]);
3728 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ()); 3728 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ());
3729 EXPECT_TRUE(targetPass->damageRect().isEmpty()); 3729 EXPECT_TRUE(targetPass->damageRect().IsEmpty());
3730 3730
3731 myHostImpl->drawLayers(frame); 3731 myHostImpl->drawLayers(frame);
3732 myHostImpl->didDrawAllLayers(frame); 3732 myHostImpl->didDrawAllLayers(frame);
3733 } 3733 }
3734 3734
3735 // Change opacity on the intermediate layer 3735 // Change opacity on the intermediate layer
3736 WebTransformationMatrix transform = intermediateLayerPtr->transform(); 3736 WebTransformationMatrix transform = intermediateLayerPtr->transform();
3737 transform.setM11(1.0001); 3737 transform.setM11(1.0001);
3738 intermediateLayerPtr->setTransform(transform); 3738 intermediateLayerPtr->setTransform(transform);
3739 { 3739 {
3740 CCLayerTreeHostImpl::FrameData frame; 3740 CCLayerTreeHostImpl::FrameData frame;
3741 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); 3741 EXPECT_TRUE(myHostImpl->prepareToDraw(frame));
3742 3742
3743 // Must receive one render pass, as the other one should be culled. 3743 // Must receive one render pass, as the other one should be culled.
3744 ASSERT_EQ(1U, frame.renderPasses.size()); 3744 ASSERT_EQ(1U, frame.renderPasses.size());
3745 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); 3745 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size());
3746 3746
3747 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[0]->quadList()[0]-> material()); 3747 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[0]->quadList()[0]-> material());
3748 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[0]->quadList()[0]); 3748 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[0]->quadList()[0]);
3749 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ()); 3749 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ());
3750 EXPECT_TRUE(targetPass->damageRect().isEmpty()); 3750 EXPECT_TRUE(targetPass->damageRect().IsEmpty());
3751 3751
3752 myHostImpl->drawLayers(frame); 3752 myHostImpl->drawLayers(frame);
3753 myHostImpl->didDrawAllLayers(frame); 3753 myHostImpl->didDrawAllLayers(frame);
3754 } 3754 }
3755 } 3755 }
3756 3756
3757 TEST_F(CCLayerTreeHostImplTest, surfaceTextureCachingNoPartialSwap) 3757 TEST_F(CCLayerTreeHostImplTest, surfaceTextureCachingNoPartialSwap)
3758 { 3758 {
3759 CCSettings::setPartialSwapEnabled(false); 3759 CCSettings::setPartialSwapEnabled(false);
3760 3760
(...skipping 13 matching lines...) Expand all
3774 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); 3774 EXPECT_TRUE(myHostImpl->prepareToDraw(frame));
3775 3775
3776 // Must receive two render passes, each with one quad 3776 // Must receive two render passes, each with one quad
3777 ASSERT_EQ(2U, frame.renderPasses.size()); 3777 ASSERT_EQ(2U, frame.renderPasses.size());
3778 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); 3778 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size());
3779 EXPECT_EQ(1U, frame.renderPasses[1]->quadList().size()); 3779 EXPECT_EQ(1U, frame.renderPasses[1]->quadList().size());
3780 3780
3781 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]-> material()); 3781 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]-> material());
3782 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[1]->quadList()[0]); 3782 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[1]->quadList()[0]);
3783 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ()); 3783 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ());
3784 EXPECT_FALSE(targetPass->damageRect().isEmpty()); 3784 EXPECT_FALSE(targetPass->damageRect().IsEmpty());
3785 3785
3786 EXPECT_FALSE(frame.renderPasses[0]->damageRect().isEmpty()); 3786 EXPECT_FALSE(frame.renderPasses[0]->damageRect().IsEmpty());
3787 EXPECT_FALSE(frame.renderPasses[1]->damageRect().isEmpty()); 3787 EXPECT_FALSE(frame.renderPasses[1]->damageRect().IsEmpty());
3788 3788
3789 EXPECT_FALSE(frame.renderPasses[0]->hasOcclusionFromOutsideTargetSurface ()); 3789 EXPECT_FALSE(frame.renderPasses[0]->hasOcclusionFromOutsideTargetSurface ());
3790 EXPECT_FALSE(frame.renderPasses[1]->hasOcclusionFromOutsideTargetSurface ()); 3790 EXPECT_FALSE(frame.renderPasses[1]->hasOcclusionFromOutsideTargetSurface ());
3791 3791
3792 myHostImpl->drawLayers(frame); 3792 myHostImpl->drawLayers(frame);
3793 myHostImpl->didDrawAllLayers(frame); 3793 myHostImpl->didDrawAllLayers(frame);
3794 } 3794 }
3795 3795
3796 // Draw without any change 3796 // Draw without any change
3797 { 3797 {
3798 CCLayerTreeHostImpl::FrameData frame; 3798 CCLayerTreeHostImpl::FrameData frame;
3799 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); 3799 EXPECT_TRUE(myHostImpl->prepareToDraw(frame));
3800 3800
3801 // Even though there was no change, we set the damage to entire viewport . 3801 // Even though there was no change, we set the damage to entire viewport .
3802 // One of the passes should be culled as a result, since contents didn't change 3802 // One of the passes should be culled as a result, since contents didn't change
3803 // and we have cached texture. 3803 // and we have cached texture.
3804 ASSERT_EQ(1U, frame.renderPasses.size()); 3804 ASSERT_EQ(1U, frame.renderPasses.size());
3805 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); 3805 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size());
3806 3806
3807 EXPECT_TRUE(frame.renderPasses[0]->damageRect().isEmpty()); 3807 EXPECT_TRUE(frame.renderPasses[0]->damageRect().IsEmpty());
3808 3808
3809 myHostImpl->drawLayers(frame); 3809 myHostImpl->drawLayers(frame);
3810 myHostImpl->didDrawAllLayers(frame); 3810 myHostImpl->didDrawAllLayers(frame);
3811 } 3811 }
3812 3812
3813 // Change opacity and draw 3813 // Change opacity and draw
3814 surfaceLayerPtr->setOpacity(0.6f); 3814 surfaceLayerPtr->setOpacity(0.6f);
3815 { 3815 {
3816 CCLayerTreeHostImpl::FrameData frame; 3816 CCLayerTreeHostImpl::FrameData frame;
3817 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); 3817 EXPECT_TRUE(myHostImpl->prepareToDraw(frame));
3818 3818
3819 // Must receive one render pass, as the other one should be culled 3819 // Must receive one render pass, as the other one should be culled
3820 ASSERT_EQ(1U, frame.renderPasses.size()); 3820 ASSERT_EQ(1U, frame.renderPasses.size());
3821 3821
3822 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); 3822 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size());
3823 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[0]->quadList()[0]-> material()); 3823 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[0]->quadList()[0]-> material());
3824 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[0]->quadList()[0]); 3824 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[0]->quadList()[0]);
3825 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ()); 3825 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ());
3826 EXPECT_TRUE(targetPass->damageRect().isEmpty()); 3826 EXPECT_TRUE(targetPass->damageRect().IsEmpty());
3827 3827
3828 myHostImpl->drawLayers(frame); 3828 myHostImpl->drawLayers(frame);
3829 myHostImpl->didDrawAllLayers(frame); 3829 myHostImpl->didDrawAllLayers(frame);
3830 } 3830 }
3831 3831
3832 // Change less benign property and draw - should have contents changed flag 3832 // Change less benign property and draw - should have contents changed flag
3833 surfaceLayerPtr->setStackingOrderChanged(true); 3833 surfaceLayerPtr->setStackingOrderChanged(true);
3834 { 3834 {
3835 CCLayerTreeHostImpl::FrameData frame; 3835 CCLayerTreeHostImpl::FrameData frame;
3836 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); 3836 EXPECT_TRUE(myHostImpl->prepareToDraw(frame));
3837 3837
3838 // Must receive two render passes, each with one quad 3838 // Must receive two render passes, each with one quad
3839 ASSERT_EQ(2U, frame.renderPasses.size()); 3839 ASSERT_EQ(2U, frame.renderPasses.size());
3840 3840
3841 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); 3841 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size());
3842 EXPECT_EQ(CCDrawQuad::SolidColor, frame.renderPasses[0]->quadList()[0]-> material()); 3842 EXPECT_EQ(CCDrawQuad::SolidColor, frame.renderPasses[0]->quadList()[0]-> material());
3843 3843
3844 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]-> material()); 3844 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]-> material());
3845 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[1]->quadList()[0]); 3845 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[1]->quadList()[0]);
3846 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ()); 3846 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ());
3847 EXPECT_FALSE(targetPass->damageRect().isEmpty()); 3847 EXPECT_FALSE(targetPass->damageRect().IsEmpty());
3848 3848
3849 myHostImpl->drawLayers(frame); 3849 myHostImpl->drawLayers(frame);
3850 myHostImpl->didDrawAllLayers(frame); 3850 myHostImpl->didDrawAllLayers(frame);
3851 } 3851 }
3852 3852
3853 // Change opacity again, and evict the cached surface texture. 3853 // Change opacity again, and evict the cached surface texture.
3854 surfaceLayerPtr->setOpacity(0.5f); 3854 surfaceLayerPtr->setOpacity(0.5f);
3855 static_cast<CCRendererGLWithReleaseTextures*>(myHostImpl->renderer())->relea seRenderPassTextures(); 3855 static_cast<CCRendererGLWithReleaseTextures*>(myHostImpl->renderer())->relea seRenderPassTextures();
3856 3856
3857 // Change opacity and draw 3857 // Change opacity and draw
3858 surfaceLayerPtr->setOpacity(0.6f); 3858 surfaceLayerPtr->setOpacity(0.6f);
3859 { 3859 {
3860 CCLayerTreeHostImpl::FrameData frame; 3860 CCLayerTreeHostImpl::FrameData frame;
3861 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); 3861 EXPECT_TRUE(myHostImpl->prepareToDraw(frame));
3862 3862
3863 // Must receive two render passes 3863 // Must receive two render passes
3864 ASSERT_EQ(2U, frame.renderPasses.size()); 3864 ASSERT_EQ(2U, frame.renderPasses.size());
3865 3865
3866 // Even though not enough properties changed, the entire thing must be 3866 // Even though not enough properties changed, the entire thing must be
3867 // redrawn as we don't have cached textures 3867 // redrawn as we don't have cached textures
3868 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); 3868 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size());
3869 EXPECT_EQ(1U, frame.renderPasses[1]->quadList().size()); 3869 EXPECT_EQ(1U, frame.renderPasses[1]->quadList().size());
3870 3870
3871 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]-> material()); 3871 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]-> material());
3872 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[1]->quadList()[0]); 3872 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[1]->quadList()[0]);
3873 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ()); 3873 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ());
3874 EXPECT_TRUE(targetPass->damageRect().isEmpty()); 3874 EXPECT_TRUE(targetPass->damageRect().IsEmpty());
3875 3875
3876 // Was our surface evicted? 3876 // Was our surface evicted?
3877 EXPECT_FALSE(myHostImpl->renderer()->haveCachedResourcesForRenderPassId( targetPass->id())); 3877 EXPECT_FALSE(myHostImpl->renderer()->haveCachedResourcesForRenderPassId( targetPass->id()));
3878 3878
3879 myHostImpl->drawLayers(frame); 3879 myHostImpl->drawLayers(frame);
3880 myHostImpl->didDrawAllLayers(frame); 3880 myHostImpl->didDrawAllLayers(frame);
3881 } 3881 }
3882 3882
3883 // Draw without any change, to make sure the state is clear 3883 // Draw without any change, to make sure the state is clear
3884 { 3884 {
(...skipping 18 matching lines...) Expand all
3903 CCLayerTreeHostImpl::FrameData frame; 3903 CCLayerTreeHostImpl::FrameData frame;
3904 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); 3904 EXPECT_TRUE(myHostImpl->prepareToDraw(frame));
3905 3905
3906 // Must receive one render pass, as the other one should be culled. 3906 // Must receive one render pass, as the other one should be culled.
3907 ASSERT_EQ(1U, frame.renderPasses.size()); 3907 ASSERT_EQ(1U, frame.renderPasses.size());
3908 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); 3908 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size());
3909 3909
3910 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[0]->quadList()[0]-> material()); 3910 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[0]->quadList()[0]-> material());
3911 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[0]->quadList()[0]); 3911 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[0]->quadList()[0]);
3912 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ()); 3912 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ());
3913 EXPECT_TRUE(targetPass->damageRect().isEmpty()); 3913 EXPECT_TRUE(targetPass->damageRect().IsEmpty());
3914 3914
3915 myHostImpl->drawLayers(frame); 3915 myHostImpl->drawLayers(frame);
3916 myHostImpl->didDrawAllLayers(frame); 3916 myHostImpl->didDrawAllLayers(frame);
3917 } 3917 }
3918 } 3918 }
3919 3919
3920 TEST_F(CCLayerTreeHostImplTest, releaseContentsTextureShouldTriggerCommit) 3920 TEST_F(CCLayerTreeHostImplTest, releaseContentsTextureShouldTriggerCommit)
3921 { 3921 {
3922 m_hostImpl->releaseContentsTextures(); 3922 m_hostImpl->releaseContentsTextures();
3923 EXPECT_TRUE(m_didRequestCommit); 3923 EXPECT_TRUE(m_didRequestCommit);
(...skipping 352 matching lines...) Expand 10 before | Expand all | Expand 10 after
4276 while (removeRenderPassesCases[testCaseIndex].name) { 4276 while (removeRenderPassesCases[testCaseIndex].name) {
4277 RenderPassRemovalTestData testData; 4277 RenderPassRemovalTestData testData;
4278 configureRenderPassTestData(removeRenderPassesCases[testCaseIndex].initS cript, testData, renderer.get()); 4278 configureRenderPassTestData(removeRenderPassesCases[testCaseIndex].initS cript, testData, renderer.get());
4279 CCLayerTreeHostImpl::removeRenderPasses(CCLayerTreeHostImpl::CullRenderP assesWithCachedTextures(*renderer), testData); 4279 CCLayerTreeHostImpl::removeRenderPasses(CCLayerTreeHostImpl::CullRenderP assesWithCachedTextures(*renderer), testData);
4280 verifyRenderPassTestData(removeRenderPassesCases[testCaseIndex], testDat a); 4280 verifyRenderPassTestData(removeRenderPassesCases[testCaseIndex], testDat a);
4281 testCaseIndex++; 4281 testCaseIndex++;
4282 } 4282 }
4283 } 4283 }
4284 4284
4285 } // namespace 4285 } // namespace
OLDNEW
« no previous file with comments | « cc/CCLayerTreeHostImpl.cpp ('k') | cc/CCQuadCuller.cpp » ('j') | cc/math/clamp.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698