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

Side by Side Diff: cc/output/overlay_unittest.cc

Issue 1376883004: Overlays: Remove special casing of primary overlay plane (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add missed file Created 5 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/base/region.h" 5 #include "cc/base/region.h"
6 #include "cc/base/scoped_ptr_vector.h" 6 #include "cc/base/scoped_ptr_vector.h"
7 #include "cc/output/compositor_frame_metadata.h" 7 #include "cc/output/compositor_frame_metadata.h"
8 #include "cc/output/gl_renderer.h" 8 #include "cc/output/gl_renderer.h"
9 #include "cc/output/output_surface.h" 9 #include "cc/output/output_surface.h"
10 #include "cc/output/output_surface_client.h" 10 #include "cc/output/output_surface_client.h"
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 void SwapBuffers(CompositorFrame* frame) override; 146 void SwapBuffers(CompositorFrame* frame) override;
147 147
148 void SetOverlayCandidateValidator(OverlayCandidateValidator* validator) { 148 void SetOverlayCandidateValidator(OverlayCandidateValidator* validator) {
149 overlay_candidate_validator_.reset(validator); 149 overlay_candidate_validator_.reset(validator);
150 } 150 }
151 151
152 OverlayCandidateValidator* GetOverlayCandidateValidator() const override { 152 OverlayCandidateValidator* GetOverlayCandidateValidator() const override {
153 return overlay_candidate_validator_.get(); 153 return overlay_candidate_validator_.get();
154 } 154 }
155 155
156 unsigned GetOverlayTextureId() const override { return 10000; }
157
156 private: 158 private:
157 scoped_ptr<OverlayCandidateValidator> overlay_candidate_validator_; 159 scoped_ptr<OverlayCandidateValidator> overlay_candidate_validator_;
158 }; 160 };
159 161
160 void OverlayOutputSurface::SwapBuffers(CompositorFrame* frame) { 162 void OverlayOutputSurface::SwapBuffers(CompositorFrame* frame) {
161 client_->DidSwapBuffers(); 163 client_->DidSwapBuffers();
162 client_->DidSwapBuffersComplete(); 164 client_->DidSwapBuffersComplete();
163 } 165 }
164 166
165 scoped_ptr<RenderPass> CreateRenderPass() { 167 scoped_ptr<RenderPass> CreateRenderPass() {
(...skipping 366 matching lines...) Expand 10 before | Expand all | Expand 10 after
532 534
533 RenderPass* main_pass = pass_list.back(); 535 RenderPass* main_pass = pass_list.back();
534 // Check that the quad is gone. 536 // Check that the quad is gone.
535 EXPECT_EQ(3U, main_pass->quad_list.size()); 537 EXPECT_EQ(3U, main_pass->quad_list.size());
536 const QuadList& quad_list = main_pass->quad_list; 538 const QuadList& quad_list = main_pass->quad_list;
537 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); 539 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin();
538 it != quad_list.BackToFrontEnd(); ++it) { 540 it != quad_list.BackToFrontEnd(); ++it) {
539 EXPECT_NE(DrawQuad::TEXTURE_CONTENT, it->material); 541 EXPECT_NE(DrawQuad::TEXTURE_CONTENT, it->material);
540 } 542 }
541 543
542 EXPECT_FALSE(candidate_list[0].use_output_surface_for_resource); 544 EXPECT_TRUE(candidate_list[0].use_output_surface_for_resource);
545 EXPECT_FALSE(candidate_list[1].use_output_surface_for_resource);
543 EXPECT_EQ(candidate_id, candidate_list[1].resource_id); 546 EXPECT_EQ(candidate_id, candidate_list[1].resource_id);
544 EXPECT_EQ(gfx::RectF(32.f, 32.f, 32.f, 32.f), candidate_list[1].display_rect); 547 EXPECT_EQ(gfx::RectF(32.f, 32.f, 32.f, 32.f), candidate_list[1].display_rect);
545 EXPECT_TRUE(candidate_list[2].use_output_surface_for_resource); 548 EXPECT_TRUE(candidate_list[2].use_output_surface_for_resource);
546 EXPECT_EQ(gfx::RectF(32.f, 32.f, 16.f, 16.f), candidate_list[2].display_rect); 549 EXPECT_EQ(gfx::RectF(32.f, 32.f, 16.f, 16.f), candidate_list[2].display_rect);
547 EXPECT_EQ(gfx::RectF(32.f / 256.f, 32.f / 256.f, 16.f / 256.f, 16.f / 256.f), 550 EXPECT_EQ(gfx::RectF(32.f / 256.f, 32.f / 256.f, 16.f / 256.f, 16.f / 256.f),
548 candidate_list[2].uv_rect); 551 candidate_list[2].uv_rect);
549 } 552 }
550 553
551 TEST_F(SandwichTest, MultiQuadOverlay) { 554 TEST_F(SandwichTest, MultiQuadOverlay) {
552 scoped_ptr<RenderPass> pass = CreateRenderPass(); 555 scoped_ptr<RenderPass> pass = CreateRenderPass();
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
596 if (it->material == DrawQuad::SOLID_COLOR) { 599 if (it->material == DrawQuad::SOLID_COLOR) {
597 const SolidColorDrawQuad* solid_color_quad = 600 const SolidColorDrawQuad* solid_color_quad =
598 SolidColorDrawQuad::MaterialCast(*it); 601 SolidColorDrawQuad::MaterialCast(*it);
599 if (solid_color_quad->color == SK_ColorTRANSPARENT) 602 if (solid_color_quad->color == SK_ColorTRANSPARENT)
600 transparent_quad_region.Union(solid_color_quad->rect); 603 transparent_quad_region.Union(solid_color_quad->rect);
601 } 604 }
602 } 605 }
603 DCHECK(covered_region == transparent_quad_region); 606 DCHECK(covered_region == transparent_quad_region);
604 607
605 // Check that overlays cover the same region that the quads covered. 608 // Check that overlays cover the same region that the quads covered.
606 EXPECT_FALSE(candidate_list[0].use_output_surface_for_resource); 609 EXPECT_TRUE(candidate_list[0].use_output_surface_for_resource);
610 EXPECT_FALSE(candidate_list[1].use_output_surface_for_resource);
607 EXPECT_EQ(candidate_id, candidate_list[1].resource_id); 611 EXPECT_EQ(candidate_id, candidate_list[1].resource_id);
608 EXPECT_EQ(gfx::RectF(64.f, 64.f), candidate_list[1].display_rect); 612 EXPECT_EQ(gfx::RectF(64.f, 64.f), candidate_list[1].display_rect);
609 EXPECT_TRUE(candidate_list[2].use_output_surface_for_resource); 613 EXPECT_TRUE(candidate_list[2].use_output_surface_for_resource);
610 EXPECT_TRUE(candidate_list[3].use_output_surface_for_resource); 614 EXPECT_TRUE(candidate_list[3].use_output_surface_for_resource);
611 Region overlay_region; 615 Region overlay_region;
612 overlay_region.Union(gfx::ToEnclosingRect(candidate_list[2].display_rect)); 616 overlay_region.Union(gfx::ToEnclosingRect(candidate_list[2].display_rect));
613 overlay_region.Union(gfx::ToEnclosingRect(candidate_list[3].display_rect)); 617 overlay_region.Union(gfx::ToEnclosingRect(candidate_list[3].display_rect));
614 DCHECK(covered_region == overlay_region); 618 DCHECK(covered_region == overlay_region);
615 } 619 }
616 620
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
660 pass->shared_quad_state_list.back(), pass.get()); 664 pass->shared_quad_state_list.back(), pass.get());
661 665
662 RenderPassList pass_list; 666 RenderPassList pass_list;
663 pass_list.push_back(pass.Pass()); 667 pass_list.push_back(pass.Pass());
664 668
665 RenderPassList original_pass_list; 669 RenderPassList original_pass_list;
666 RenderPass::CopyAll(pass_list, &original_pass_list); 670 RenderPass::CopyAll(pass_list, &original_pass_list);
667 671
668 OverlayCandidateList candidate_list; 672 OverlayCandidateList candidate_list;
669 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); 673 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
670 EXPECT_EQ(0U, candidate_list.size()); 674 EXPECT_EQ(1U, candidate_list.size());
675 EXPECT_TRUE(candidate_list.front().use_output_surface_for_resource);
671 // There should be nothing new here. 676 // There should be nothing new here.
672 CompareRenderPassLists(pass_list, original_pass_list); 677 CompareRenderPassLists(pass_list, original_pass_list);
673 } 678 }
674 679
675 TEST_F(SingleOverlayOnTopTest, OccludedCandidates) { 680 TEST_F(SingleOverlayOnTopTest, OccludedCandidates) {
676 scoped_ptr<RenderPass> pass = CreateRenderPass(); 681 scoped_ptr<RenderPass> pass = CreateRenderPass();
677 CreateFullscreenOpaqueQuad(resource_provider_.get(), 682 CreateFullscreenOpaqueQuad(resource_provider_.get(),
678 pass->shared_quad_state_list.back(), pass.get()); 683 pass->shared_quad_state_list.back(), pass.get());
679 CreateFullscreenOpaqueQuad(resource_provider_.get(), 684 CreateFullscreenOpaqueQuad(resource_provider_.get(),
680 pass->shared_quad_state_list.back(), pass.get()); 685 pass->shared_quad_state_list.back(), pass.get());
681 686
682 CreateFullscreenCandidateQuad(resource_provider_.get(), 687 CreateFullscreenCandidateQuad(resource_provider_.get(),
683 pass->shared_quad_state_list.back(), 688 pass->shared_quad_state_list.back(),
684 pass.get()); 689 pass.get());
685 690
686 RenderPassList pass_list; 691 RenderPassList pass_list;
687 pass_list.push_back(pass.Pass()); 692 pass_list.push_back(pass.Pass());
688 693
689 RenderPassList original_pass_list; 694 RenderPassList original_pass_list;
690 RenderPass::CopyAll(pass_list, &original_pass_list); 695 RenderPass::CopyAll(pass_list, &original_pass_list);
691 696
692 OverlayCandidateList candidate_list; 697 OverlayCandidateList candidate_list;
693 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); 698 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
694 EXPECT_EQ(0U, candidate_list.size()); 699 EXPECT_EQ(1U, candidate_list.size());
700 EXPECT_TRUE(candidate_list.front().use_output_surface_for_resource);
695 // There should be nothing new here. 701 // There should be nothing new here.
696 CompareRenderPassLists(pass_list, original_pass_list); 702 CompareRenderPassLists(pass_list, original_pass_list);
697 } 703 }
698 704
699 // Test with multiple render passes. 705 // Test with multiple render passes.
700 TEST_F(SingleOverlayOnTopTest, MultipleRenderPasses) { 706 TEST_F(SingleOverlayOnTopTest, MultipleRenderPasses) {
701 RenderPassList pass_list; 707 RenderPassList pass_list;
702 pass_list.push_back(CreateRenderPass()); 708 pass_list.push_back(CreateRenderPass());
703 709
704 scoped_ptr<RenderPass> pass = CreateRenderPass(); 710 scoped_ptr<RenderPass> pass = CreateRenderPass();
(...skipping 27 matching lines...) Expand all
732 CreateFullscreenCandidateQuad(resource_provider_.get(), 738 CreateFullscreenCandidateQuad(resource_provider_.get(),
733 pass->shared_quad_state_list.back(), 739 pass->shared_quad_state_list.back(),
734 pass.get()); 740 pass.get());
735 quad->premultiplied_alpha = true; 741 quad->premultiplied_alpha = true;
736 742
737 RenderPassList pass_list; 743 RenderPassList pass_list;
738 pass_list.push_back(pass.Pass()); 744 pass_list.push_back(pass.Pass());
739 OverlayCandidateList candidate_list; 745 OverlayCandidateList candidate_list;
740 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); 746 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
741 EXPECT_EQ(1U, pass_list.size()); 747 EXPECT_EQ(1U, pass_list.size());
742 EXPECT_EQ(0U, candidate_list.size()); 748 EXPECT_EQ(1U, candidate_list.size());
749 EXPECT_TRUE(candidate_list.front().use_output_surface_for_resource);
743 } 750 }
744 751
745 TEST_F(SingleOverlayOnTopTest, RejectBlending) { 752 TEST_F(SingleOverlayOnTopTest, RejectBlending) {
746 scoped_ptr<RenderPass> pass = CreateRenderPass(); 753 scoped_ptr<RenderPass> pass = CreateRenderPass();
747 TextureDrawQuad* quad = 754 TextureDrawQuad* quad =
748 CreateFullscreenCandidateQuad(resource_provider_.get(), 755 CreateFullscreenCandidateQuad(resource_provider_.get(),
749 pass->shared_quad_state_list.back(), 756 pass->shared_quad_state_list.back(),
750 pass.get()); 757 pass.get());
751 quad->needs_blending = true; 758 quad->needs_blending = true;
752 759
753 RenderPassList pass_list; 760 RenderPassList pass_list;
754 pass_list.push_back(pass.Pass()); 761 pass_list.push_back(pass.Pass());
755 OverlayCandidateList candidate_list; 762 OverlayCandidateList candidate_list;
756 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); 763 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
757 ASSERT_EQ(1U, pass_list.size()); 764 ASSERT_EQ(1U, pass_list.size());
758 EXPECT_EQ(0U, candidate_list.size()); 765 EXPECT_EQ(1U, candidate_list.size());
766 EXPECT_TRUE(candidate_list.front().use_output_surface_for_resource);
759 } 767 }
760 768
761 TEST_F(SingleOverlayOnTopTest, RejectBackgroundColor) { 769 TEST_F(SingleOverlayOnTopTest, RejectBackgroundColor) {
762 scoped_ptr<RenderPass> pass = CreateRenderPass(); 770 scoped_ptr<RenderPass> pass = CreateRenderPass();
763 TextureDrawQuad* quad = 771 TextureDrawQuad* quad =
764 CreateFullscreenCandidateQuad(resource_provider_.get(), 772 CreateFullscreenCandidateQuad(resource_provider_.get(),
765 pass->shared_quad_state_list.back(), 773 pass->shared_quad_state_list.back(),
766 pass.get()); 774 pass.get());
767 quad->background_color = SK_ColorBLACK; 775 quad->background_color = SK_ColorBLACK;
768 776
769 RenderPassList pass_list; 777 RenderPassList pass_list;
770 pass_list.push_back(pass.Pass()); 778 pass_list.push_back(pass.Pass());
771 OverlayCandidateList candidate_list; 779 OverlayCandidateList candidate_list;
772 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); 780 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
773 ASSERT_EQ(1U, pass_list.size()); 781 ASSERT_EQ(1U, pass_list.size());
774 EXPECT_EQ(0U, candidate_list.size()); 782 EXPECT_EQ(1U, candidate_list.size());
783 EXPECT_TRUE(candidate_list.front().use_output_surface_for_resource);
775 } 784 }
776 785
777 TEST_F(SingleOverlayOnTopTest, RejectBlendMode) { 786 TEST_F(SingleOverlayOnTopTest, RejectBlendMode) {
778 scoped_ptr<RenderPass> pass = CreateRenderPass(); 787 scoped_ptr<RenderPass> pass = CreateRenderPass();
779 CreateFullscreenCandidateQuad(resource_provider_.get(), 788 CreateFullscreenCandidateQuad(resource_provider_.get(),
780 pass->shared_quad_state_list.back(), 789 pass->shared_quad_state_list.back(),
781 pass.get()); 790 pass.get());
782 pass->shared_quad_state_list.back()->blend_mode = SkXfermode::kScreen_Mode; 791 pass->shared_quad_state_list.back()->blend_mode = SkXfermode::kScreen_Mode;
783 792
784 RenderPassList pass_list; 793 RenderPassList pass_list;
785 pass_list.push_back(pass.Pass()); 794 pass_list.push_back(pass.Pass());
786 OverlayCandidateList candidate_list; 795 OverlayCandidateList candidate_list;
787 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); 796 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
788 ASSERT_EQ(1U, pass_list.size()); 797 ASSERT_EQ(1U, pass_list.size());
789 EXPECT_EQ(0U, candidate_list.size()); 798 EXPECT_EQ(1U, candidate_list.size());
799 EXPECT_TRUE(candidate_list.front().use_output_surface_for_resource);
790 } 800 }
791 801
792 TEST_F(SingleOverlayOnTopTest, RejectOpacity) { 802 TEST_F(SingleOverlayOnTopTest, RejectOpacity) {
793 scoped_ptr<RenderPass> pass = CreateRenderPass(); 803 scoped_ptr<RenderPass> pass = CreateRenderPass();
794 CreateFullscreenCandidateQuad(resource_provider_.get(), 804 CreateFullscreenCandidateQuad(resource_provider_.get(),
795 pass->shared_quad_state_list.back(), 805 pass->shared_quad_state_list.back(),
796 pass.get()); 806 pass.get());
797 pass->shared_quad_state_list.back()->opacity = 0.5f; 807 pass->shared_quad_state_list.back()->opacity = 0.5f;
798 808
799 RenderPassList pass_list; 809 RenderPassList pass_list;
800 pass_list.push_back(pass.Pass()); 810 pass_list.push_back(pass.Pass());
801 OverlayCandidateList candidate_list; 811 OverlayCandidateList candidate_list;
802 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); 812 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
803 ASSERT_EQ(1U, pass_list.size()); 813 ASSERT_EQ(1U, pass_list.size());
804 EXPECT_EQ(0U, candidate_list.size()); 814 EXPECT_EQ(1U, candidate_list.size());
815 EXPECT_TRUE(candidate_list.front().use_output_surface_for_resource);
805 } 816 }
806 817
807 TEST_F(SingleOverlayOnTopTest, RejectNonAxisAlignedTransform) { 818 TEST_F(SingleOverlayOnTopTest, RejectNonAxisAlignedTransform) {
808 scoped_ptr<RenderPass> pass = CreateRenderPass(); 819 scoped_ptr<RenderPass> pass = CreateRenderPass();
809 CreateFullscreenCandidateQuad(resource_provider_.get(), 820 CreateFullscreenCandidateQuad(resource_provider_.get(),
810 pass->shared_quad_state_list.back(), 821 pass->shared_quad_state_list.back(),
811 pass.get()); 822 pass.get());
812 pass->shared_quad_state_list.back() 823 pass->shared_quad_state_list.back()
813 ->quad_to_target_transform.RotateAboutXAxis(45.f); 824 ->quad_to_target_transform.RotateAboutXAxis(45.f);
814 825
815 RenderPassList pass_list; 826 RenderPassList pass_list;
816 pass_list.push_back(pass.Pass()); 827 pass_list.push_back(pass.Pass());
817 OverlayCandidateList candidate_list; 828 OverlayCandidateList candidate_list;
818 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); 829 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
819 ASSERT_EQ(1U, pass_list.size()); 830 ASSERT_EQ(1U, pass_list.size());
820 EXPECT_EQ(0U, candidate_list.size()); 831 EXPECT_EQ(1U, candidate_list.size());
832 EXPECT_TRUE(candidate_list.front().use_output_surface_for_resource);
821 } 833 }
822 834
823 TEST_F(SingleOverlayOnTopTest, AllowClipped) { 835 TEST_F(SingleOverlayOnTopTest, AllowClipped) {
824 scoped_ptr<RenderPass> pass = CreateRenderPass(); 836 scoped_ptr<RenderPass> pass = CreateRenderPass();
825 CreateFullscreenCandidateQuad(resource_provider_.get(), 837 CreateFullscreenCandidateQuad(resource_provider_.get(),
826 pass->shared_quad_state_list.back(), 838 pass->shared_quad_state_list.back(),
827 pass.get()); 839 pass.get());
828 pass->shared_quad_state_list.back()->is_clipped = true; 840 pass->shared_quad_state_list.back()->is_clipped = true;
829 pass->shared_quad_state_list.back()->clip_rect = kOverlayClipRect; 841 pass->shared_quad_state_list.back()->clip_rect = kOverlayClipRect;
830 842
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
1026 1038
1027 RenderPassList pass_list; 1039 RenderPassList pass_list;
1028 pass_list.push_back(pass.Pass()); 1040 pass_list.push_back(pass.Pass());
1029 1041
1030 RenderPassList original_pass_list; 1042 RenderPassList original_pass_list;
1031 RenderPass::CopyAll(pass_list, &original_pass_list); 1043 RenderPass::CopyAll(pass_list, &original_pass_list);
1032 1044
1033 OverlayCandidateList candidate_list; 1045 OverlayCandidateList candidate_list;
1034 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); 1046 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
1035 EXPECT_EQ(1U, pass_list.size()); 1047 EXPECT_EQ(1U, pass_list.size());
1036 EXPECT_EQ(0U, candidate_list.size()); 1048 EXPECT_EQ(1U, candidate_list.size());
1049 EXPECT_TRUE(candidate_list.front().use_output_surface_for_resource);
1037 } 1050 }
1038 1051
1039 TEST_F(SingleOverlayOnTopTest, RejectTransparentColorOnTopWithoutBlending) { 1052 TEST_F(SingleOverlayOnTopTest, RejectTransparentColorOnTopWithoutBlending) {
1040 scoped_ptr<RenderPass> pass = CreateRenderPass(); 1053 scoped_ptr<RenderPass> pass = CreateRenderPass();
1041 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); 1054 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState();
1042 CreateSolidColorQuadAt(shared_state, SK_ColorTRANSPARENT, pass.get(), 1055 CreateSolidColorQuadAt(shared_state, SK_ColorTRANSPARENT, pass.get(),
1043 kOverlayBottomRightRect)->opaque_rect = 1056 kOverlayBottomRightRect)->opaque_rect =
1044 kOverlayBottomRightRect; 1057 kOverlayBottomRightRect;
1045 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(), 1058 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(),
1046 kOverlayBottomRightRect); 1059 kOverlayBottomRightRect);
1047 1060
1048 RenderPassList pass_list; 1061 RenderPassList pass_list;
1049 pass_list.push_back(pass.Pass()); 1062 pass_list.push_back(pass.Pass());
1050 1063
1051 RenderPassList original_pass_list; 1064 RenderPassList original_pass_list;
1052 RenderPass::CopyAll(pass_list, &original_pass_list); 1065 RenderPass::CopyAll(pass_list, &original_pass_list);
1053 1066
1054 OverlayCandidateList candidate_list; 1067 OverlayCandidateList candidate_list;
1055 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); 1068 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
1056 EXPECT_EQ(1U, pass_list.size()); 1069 EXPECT_EQ(1U, pass_list.size());
1057 EXPECT_EQ(0U, candidate_list.size()); 1070 EXPECT_EQ(1U, candidate_list.size());
1071 EXPECT_TRUE(candidate_list.front().use_output_surface_for_resource);
1058 } 1072 }
1059 1073
1060 TEST_F(SingleOverlayOnTopTest, RejectVideoSwapTransform) { 1074 TEST_F(SingleOverlayOnTopTest, RejectVideoSwapTransform) {
1061 scoped_ptr<RenderPass> pass = CreateRenderPass(); 1075 scoped_ptr<RenderPass> pass = CreateRenderPass();
1062 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), 1076 CreateFullscreenCandidateVideoQuad(resource_provider_.get(),
1063 pass->shared_quad_state_list.back(), 1077 pass->shared_quad_state_list.back(),
1064 pass.get(), kSwapTransform); 1078 pass.get(), kSwapTransform);
1065 1079
1066 RenderPassList pass_list; 1080 RenderPassList pass_list;
1067 pass_list.push_back(pass.Pass()); 1081 pass_list.push_back(pass.Pass());
1068 OverlayCandidateList candidate_list; 1082 OverlayCandidateList candidate_list;
1069 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); 1083 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
1070 ASSERT_EQ(1U, pass_list.size()); 1084 ASSERT_EQ(1U, pass_list.size());
1071 EXPECT_EQ(0U, candidate_list.size()); 1085 EXPECT_EQ(1U, candidate_list.size());
1086 EXPECT_TRUE(candidate_list.front().use_output_surface_for_resource);
1072 } 1087 }
1073 1088
1074 TEST_F(SingleOverlayOnTopTest, AllowVideoXMirrorTransform) { 1089 TEST_F(SingleOverlayOnTopTest, AllowVideoXMirrorTransform) {
1075 scoped_ptr<RenderPass> pass = CreateRenderPass(); 1090 scoped_ptr<RenderPass> pass = CreateRenderPass();
1076 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), 1091 CreateFullscreenCandidateVideoQuad(resource_provider_.get(),
1077 pass->shared_quad_state_list.back(), 1092 pass->shared_quad_state_list.back(),
1078 pass.get(), kXMirrorTransform); 1093 pass.get(), kXMirrorTransform);
1079 1094
1080 RenderPassList pass_list; 1095 RenderPassList pass_list;
1081 pass_list.push_back(pass.Pass()); 1096 pass_list.push_back(pass.Pass());
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
1281 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1296 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1282 pass->shared_quad_state_list.back(), pass.get()); 1297 pass->shared_quad_state_list.back(), pass.get());
1283 1298
1284 RenderPassList pass_list; 1299 RenderPassList pass_list;
1285 pass_list.push_back(pass.Pass()); 1300 pass_list.push_back(pass.Pass());
1286 1301
1287 // Candidate pass was taken out and extra skipped pass added, 1302 // Candidate pass was taken out and extra skipped pass added,
1288 // so only draw 2 quads. 1303 // so only draw 2 quads.
1289 EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(2); 1304 EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(2);
1290 EXPECT_CALL(scheduler_, 1305 EXPECT_CALL(scheduler_,
1291 Schedule(1, 1306 Schedule(0, gfx::OVERLAY_TRANSFORM_NONE, _,
1292 gfx::OVERLAY_TRANSFORM_NONE, 1307 gfx::Rect(kDisplaySize), gfx::RectF(0, 0, 1, 1)))
1293 _, 1308 .Times(1);
1294 kOverlayRect, 1309 EXPECT_CALL(scheduler_,
1295 BoundingRect(kUVTopLeft, kUVBottomRight))).Times(1); 1310 Schedule(1, gfx::OVERLAY_TRANSFORM_NONE, _, kOverlayRect,
1311 BoundingRect(kUVTopLeft, kUVBottomRight)))
1312 .Times(1);
1296 renderer_->DrawFrame(&pass_list, 1.f, viewport_rect, viewport_rect, false); 1313 renderer_->DrawFrame(&pass_list, 1.f, viewport_rect, viewport_rect, false);
1297 1314
1298 SwapBuffers(); 1315 SwapBuffers();
1299 1316
1300 Mock::VerifyAndClearExpectations(renderer_.get()); 1317 Mock::VerifyAndClearExpectations(renderer_.get());
1301 Mock::VerifyAndClearExpectations(&scheduler_); 1318 Mock::VerifyAndClearExpectations(&scheduler_);
1302 } 1319 }
1303 1320
1304 TEST_F(GLRendererWithOverlaysTest, OccludedQuadInUnderlay) { 1321 TEST_F(GLRendererWithOverlaysTest, OccludedQuadInUnderlay) {
1305 bool use_validator = true; 1322 bool use_validator = true;
(...skipping 12 matching lines...) Expand all
1318 pass->shared_quad_state_list.back(), 1335 pass->shared_quad_state_list.back(),
1319 pass.get()); 1336 pass.get());
1320 1337
1321 RenderPassList pass_list; 1338 RenderPassList pass_list;
1322 pass_list.push_back(pass.Pass()); 1339 pass_list.push_back(pass.Pass());
1323 1340
1324 // Candidate quad should fail to be overlaid on top because of occlusion. 1341 // Candidate quad should fail to be overlaid on top because of occlusion.
1325 // Expect to be replaced with transparent hole quad and placed in underlay. 1342 // Expect to be replaced with transparent hole quad and placed in underlay.
1326 EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(3); 1343 EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(3);
1327 EXPECT_CALL(scheduler_, 1344 EXPECT_CALL(scheduler_,
1345 Schedule(0, gfx::OVERLAY_TRANSFORM_NONE, _,
1346 gfx::Rect(kDisplaySize), gfx::RectF(0, 0, 1, 1)))
1347 .Times(1);
1348 EXPECT_CALL(scheduler_,
1328 Schedule(-1, gfx::OVERLAY_TRANSFORM_NONE, _, kOverlayRect, 1349 Schedule(-1, gfx::OVERLAY_TRANSFORM_NONE, _, kOverlayRect,
1329 BoundingRect(kUVTopLeft, kUVBottomRight))).Times(1); 1350 BoundingRect(kUVTopLeft, kUVBottomRight)))
1351 .Times(1);
1330 renderer_->DrawFrame(&pass_list, 1.f, viewport_rect, viewport_rect, false); 1352 renderer_->DrawFrame(&pass_list, 1.f, viewport_rect, viewport_rect, false);
1331 1353
1332 SwapBuffers(); 1354 SwapBuffers();
1333 1355
1334 Mock::VerifyAndClearExpectations(renderer_.get()); 1356 Mock::VerifyAndClearExpectations(renderer_.get());
1335 Mock::VerifyAndClearExpectations(&scheduler_); 1357 Mock::VerifyAndClearExpectations(&scheduler_);
1336 } 1358 }
1337 1359
1338 TEST_F(GLRendererWithOverlaysTest, NoValidatorNoOverlay) { 1360 TEST_F(GLRendererWithOverlaysTest, NoValidatorNoOverlay) {
1339 bool use_validator = false; 1361 bool use_validator = false;
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1374 ResourceId resource1 = CreateResource(resource_provider_.get()); 1396 ResourceId resource1 = CreateResource(resource_provider_.get());
1375 ResourceId resource2 = CreateResource(resource_provider_.get()); 1397 ResourceId resource2 = CreateResource(resource_provider_.get());
1376 1398
1377 scoped_ptr<RenderPass> pass = CreateRenderPass(); 1399 scoped_ptr<RenderPass> pass = CreateRenderPass();
1378 RenderPassList pass_list; 1400 RenderPassList pass_list;
1379 pass_list.push_back(pass.Pass()); 1401 pass_list.push_back(pass.Pass());
1380 1402
1381 DirectRenderer::DrawingFrame frame1; 1403 DirectRenderer::DrawingFrame frame1;
1382 frame1.render_passes_in_draw_order = &pass_list; 1404 frame1.render_passes_in_draw_order = &pass_list;
1383 frame1.overlay_list.resize(2); 1405 frame1.overlay_list.resize(2);
1406 frame1.overlay_list.front().use_output_surface_for_resource = true;
1384 OverlayCandidate& overlay1 = frame1.overlay_list.back(); 1407 OverlayCandidate& overlay1 = frame1.overlay_list.back();
1385 overlay1.resource_id = resource1; 1408 overlay1.resource_id = resource1;
1386 overlay1.plane_z_order = 1; 1409 overlay1.plane_z_order = 1;
1387 1410
1388 DirectRenderer::DrawingFrame frame2; 1411 DirectRenderer::DrawingFrame frame2;
1389 frame2.render_passes_in_draw_order = &pass_list; 1412 frame2.render_passes_in_draw_order = &pass_list;
1390 frame2.overlay_list.resize(2); 1413 frame2.overlay_list.resize(2);
1414 frame2.overlay_list.front().use_output_surface_for_resource = true;
1391 OverlayCandidate& overlay2 = frame2.overlay_list.back(); 1415 OverlayCandidate& overlay2 = frame2.overlay_list.back();
1392 overlay2.resource_id = resource2; 1416 overlay2.resource_id = resource2;
1393 overlay2.plane_z_order = 1; 1417 overlay2.plane_z_order = 1;
1394 1418
1395 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1); 1419 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2);
1396 renderer_->BeginDrawingFrame(&frame1); 1420 renderer_->BeginDrawingFrame(&frame1);
1421 printf("About to finish, %d %d\n", resource1, resource2);
1397 renderer_->FinishDrawingFrame(&frame1); 1422 renderer_->FinishDrawingFrame(&frame1);
1398 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1423 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1399 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2)); 1424 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2));
1400 SwapBuffers(); 1425 SwapBuffers();
1401 Mock::VerifyAndClearExpectations(&scheduler_); 1426 Mock::VerifyAndClearExpectations(&scheduler_);
1402 1427
1403 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1); 1428 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2);
1404 renderer_->BeginDrawingFrame(&frame2); 1429 renderer_->BeginDrawingFrame(&frame2);
1405 renderer_->FinishDrawingFrame(&frame2); 1430 renderer_->FinishDrawingFrame(&frame2);
1406 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1431 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1407 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); 1432 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2));
1408 SwapBuffers(); 1433 SwapBuffers();
1409 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); 1434 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1));
1410 Mock::VerifyAndClearExpectations(&scheduler_); 1435 Mock::VerifyAndClearExpectations(&scheduler_);
1411 1436
1412 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1); 1437 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2);
1413 renderer_->BeginDrawingFrame(&frame1); 1438 renderer_->BeginDrawingFrame(&frame1);
1414 renderer_->FinishDrawingFrame(&frame1); 1439 renderer_->FinishDrawingFrame(&frame1);
1415 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1440 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1416 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); 1441 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2));
1417 SwapBuffers(); 1442 SwapBuffers();
1418 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2)); 1443 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2));
1419 Mock::VerifyAndClearExpectations(&scheduler_); 1444 Mock::VerifyAndClearExpectations(&scheduler_);
1420 1445
1421 // No overlays, release the resource. 1446 // No overlays, release the resource.
1422 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0); 1447 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0);
1423 DirectRenderer::DrawingFrame frame3; 1448 DirectRenderer::DrawingFrame frame3;
1424 frame3.render_passes_in_draw_order = &pass_list; 1449 frame3.render_passes_in_draw_order = &pass_list;
1425 renderer_->set_expect_overlays(false); 1450 renderer_->set_expect_overlays(false);
1426 renderer_->BeginDrawingFrame(&frame3); 1451 renderer_->BeginDrawingFrame(&frame3);
1427 renderer_->FinishDrawingFrame(&frame3); 1452 renderer_->FinishDrawingFrame(&frame3);
1428 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1453 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1429 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2)); 1454 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2));
1430 SwapBuffers(); 1455 SwapBuffers();
1431 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); 1456 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1));
1432 Mock::VerifyAndClearExpectations(&scheduler_); 1457 Mock::VerifyAndClearExpectations(&scheduler_);
1433 1458
1434 // Use the same buffer twice. 1459 // Use the same buffer twice.
1435 renderer_->set_expect_overlays(true); 1460 renderer_->set_expect_overlays(true);
1436 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1); 1461 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2);
1437 renderer_->BeginDrawingFrame(&frame1); 1462 renderer_->BeginDrawingFrame(&frame1);
1438 renderer_->FinishDrawingFrame(&frame1); 1463 renderer_->FinishDrawingFrame(&frame1);
1439 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1464 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1440 SwapBuffers(); 1465 SwapBuffers();
1441 Mock::VerifyAndClearExpectations(&scheduler_); 1466 Mock::VerifyAndClearExpectations(&scheduler_);
1442 1467
1443 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1); 1468 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2);
1444 renderer_->BeginDrawingFrame(&frame1); 1469 renderer_->BeginDrawingFrame(&frame1);
1445 renderer_->FinishDrawingFrame(&frame1); 1470 renderer_->FinishDrawingFrame(&frame1);
1446 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1471 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1447 SwapBuffers(); 1472 SwapBuffers();
1448 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1473 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1449 Mock::VerifyAndClearExpectations(&scheduler_); 1474 Mock::VerifyAndClearExpectations(&scheduler_);
1450 1475
1451 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0); 1476 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0);
1452 renderer_->set_expect_overlays(false); 1477 renderer_->set_expect_overlays(false);
1453 renderer_->BeginDrawingFrame(&frame3); 1478 renderer_->BeginDrawingFrame(&frame3);
(...skipping 14 matching lines...) Expand all
1468 ResourceId resource2 = CreateResource(resource_provider_.get()); 1493 ResourceId resource2 = CreateResource(resource_provider_.get());
1469 ResourceId resource3 = CreateResource(resource_provider_.get()); 1494 ResourceId resource3 = CreateResource(resource_provider_.get());
1470 1495
1471 scoped_ptr<RenderPass> pass = CreateRenderPass(); 1496 scoped_ptr<RenderPass> pass = CreateRenderPass();
1472 RenderPassList pass_list; 1497 RenderPassList pass_list;
1473 pass_list.push_back(pass.Pass()); 1498 pass_list.push_back(pass.Pass());
1474 1499
1475 DirectRenderer::DrawingFrame frame1; 1500 DirectRenderer::DrawingFrame frame1;
1476 frame1.render_passes_in_draw_order = &pass_list; 1501 frame1.render_passes_in_draw_order = &pass_list;
1477 frame1.overlay_list.resize(2); 1502 frame1.overlay_list.resize(2);
1503 frame1.overlay_list.front().use_output_surface_for_resource = true;
1478 OverlayCandidate& overlay1 = frame1.overlay_list.back(); 1504 OverlayCandidate& overlay1 = frame1.overlay_list.back();
1479 overlay1.resource_id = resource1; 1505 overlay1.resource_id = resource1;
1480 overlay1.plane_z_order = 1; 1506 overlay1.plane_z_order = 1;
1481 1507
1482 DirectRenderer::DrawingFrame frame2; 1508 DirectRenderer::DrawingFrame frame2;
1483 frame2.render_passes_in_draw_order = &pass_list; 1509 frame2.render_passes_in_draw_order = &pass_list;
1484 frame2.overlay_list.resize(2); 1510 frame2.overlay_list.resize(2);
1511 frame2.overlay_list.front().use_output_surface_for_resource = true;
1485 OverlayCandidate& overlay2 = frame2.overlay_list.back(); 1512 OverlayCandidate& overlay2 = frame2.overlay_list.back();
1486 overlay2.resource_id = resource2; 1513 overlay2.resource_id = resource2;
1487 overlay2.plane_z_order = 1; 1514 overlay2.plane_z_order = 1;
1488 1515
1489 DirectRenderer::DrawingFrame frame3; 1516 DirectRenderer::DrawingFrame frame3;
1490 frame3.render_passes_in_draw_order = &pass_list; 1517 frame3.render_passes_in_draw_order = &pass_list;
1491 frame3.overlay_list.resize(2); 1518 frame3.overlay_list.resize(2);
1519 frame3.overlay_list.front().use_output_surface_for_resource = true;
1492 OverlayCandidate& overlay3 = frame3.overlay_list.back(); 1520 OverlayCandidate& overlay3 = frame3.overlay_list.back();
1493 overlay3.resource_id = resource3; 1521 overlay3.resource_id = resource3;
1494 overlay3.plane_z_order = 1; 1522 overlay3.plane_z_order = 1;
1495 1523
1496 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1); 1524 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2);
1497 renderer_->BeginDrawingFrame(&frame1); 1525 renderer_->BeginDrawingFrame(&frame1);
1498 renderer_->FinishDrawingFrame(&frame1); 1526 renderer_->FinishDrawingFrame(&frame1);
1499 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1527 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1500 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2)); 1528 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2));
1501 SwapBuffers(); 1529 SwapBuffers();
1502 Mock::VerifyAndClearExpectations(&scheduler_); 1530 Mock::VerifyAndClearExpectations(&scheduler_);
1503 1531
1504 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1); 1532 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2);
1505 renderer_->BeginDrawingFrame(&frame2); 1533 renderer_->BeginDrawingFrame(&frame2);
1506 renderer_->FinishDrawingFrame(&frame2); 1534 renderer_->FinishDrawingFrame(&frame2);
1507 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1535 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1508 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); 1536 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2));
1509 SwapBuffers(); 1537 SwapBuffers();
1510 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1538 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1511 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); 1539 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2));
1512 Mock::VerifyAndClearExpectations(&scheduler_); 1540 Mock::VerifyAndClearExpectations(&scheduler_);
1513 1541
1514 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1); 1542 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2);
1515 renderer_->BeginDrawingFrame(&frame3); 1543 renderer_->BeginDrawingFrame(&frame3);
1516 renderer_->FinishDrawingFrame(&frame3); 1544 renderer_->FinishDrawingFrame(&frame3);
1517 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1545 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1518 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); 1546 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2));
1519 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3)); 1547 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3));
1520 SwapBuffers(); 1548 SwapBuffers();
1521 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); 1549 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1));
1522 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); 1550 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2));
1523 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3)); 1551 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3));
1524 Mock::VerifyAndClearExpectations(&scheduler_); 1552 Mock::VerifyAndClearExpectations(&scheduler_);
1525 1553
1526 // No overlays, release the resource. 1554 // No overlays, release the resource.
1527 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0); 1555 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0);
1528 DirectRenderer::DrawingFrame frame_no_overlays; 1556 DirectRenderer::DrawingFrame frame_no_overlays;
1529 frame_no_overlays.render_passes_in_draw_order = &pass_list; 1557 frame_no_overlays.render_passes_in_draw_order = &pass_list;
1530 renderer_->set_expect_overlays(false); 1558 renderer_->set_expect_overlays(false);
1531 renderer_->BeginDrawingFrame(&frame_no_overlays); 1559 renderer_->BeginDrawingFrame(&frame_no_overlays);
1532 renderer_->FinishDrawingFrame(&frame_no_overlays); 1560 renderer_->FinishDrawingFrame(&frame_no_overlays);
1533 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); 1561 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1));
1534 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); 1562 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2));
1535 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3)); 1563 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3));
1536 SwapBuffers(); 1564 SwapBuffers();
1537 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); 1565 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1));
1538 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2)); 1566 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2));
1539 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3)); 1567 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource3));
1540 Mock::VerifyAndClearExpectations(&scheduler_); 1568 Mock::VerifyAndClearExpectations(&scheduler_);
1541 1569
1542 // Use the same buffer twice. 1570 // Use the same buffer twice.
1543 renderer_->set_expect_overlays(true); 1571 renderer_->set_expect_overlays(true);
1544 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1); 1572 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2);
1545 renderer_->BeginDrawingFrame(&frame1); 1573 renderer_->BeginDrawingFrame(&frame1);
1546 renderer_->FinishDrawingFrame(&frame1); 1574 renderer_->FinishDrawingFrame(&frame1);
1547 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1575 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1548 SwapBuffers(); 1576 SwapBuffers();
1549 Mock::VerifyAndClearExpectations(&scheduler_); 1577 Mock::VerifyAndClearExpectations(&scheduler_);
1550 1578
1551 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1); 1579 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2);
1552 renderer_->BeginDrawingFrame(&frame1); 1580 renderer_->BeginDrawingFrame(&frame1);
1553 renderer_->FinishDrawingFrame(&frame1); 1581 renderer_->FinishDrawingFrame(&frame1);
1554 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1582 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1555 SwapBuffers(); 1583 SwapBuffers();
1556 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1584 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1557 Mock::VerifyAndClearExpectations(&scheduler_); 1585 Mock::VerifyAndClearExpectations(&scheduler_);
1558 1586
1559 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0); 1587 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0);
1560 renderer_->set_expect_overlays(false); 1588 renderer_->set_expect_overlays(false);
1561 renderer_->BeginDrawingFrame(&frame_no_overlays); 1589 renderer_->BeginDrawingFrame(&frame_no_overlays);
1562 renderer_->FinishDrawingFrame(&frame_no_overlays); 1590 renderer_->FinishDrawingFrame(&frame_no_overlays);
1563 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1591 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1564 SwapBuffers(); 1592 SwapBuffers();
1565 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1593 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1566 Mock::VerifyAndClearExpectations(&scheduler_); 1594 Mock::VerifyAndClearExpectations(&scheduler_);
1567 1595
1568 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0); 1596 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0);
1569 renderer_->set_expect_overlays(false); 1597 renderer_->set_expect_overlays(false);
1570 renderer_->BeginDrawingFrame(&frame_no_overlays); 1598 renderer_->BeginDrawingFrame(&frame_no_overlays);
1571 renderer_->FinishDrawingFrame(&frame_no_overlays); 1599 renderer_->FinishDrawingFrame(&frame_no_overlays);
1572 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1600 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1573 SwapBuffers(); 1601 SwapBuffers();
1574 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); 1602 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1));
1575 Mock::VerifyAndClearExpectations(&scheduler_); 1603 Mock::VerifyAndClearExpectations(&scheduler_);
1576 } 1604 }
1577 1605
1578 } // namespace 1606 } // namespace
1579 } // namespace cc 1607 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698