OLD | NEW |
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/scoped_ptr_vector.h" | 5 #include "cc/base/scoped_ptr_vector.h" |
6 #include "cc/output/gl_renderer.h" | 6 #include "cc/output/gl_renderer.h" |
7 #include "cc/output/output_surface.h" | 7 #include "cc/output/output_surface.h" |
8 #include "cc/output/output_surface_client.h" | 8 #include "cc/output/output_surface_client.h" |
9 #include "cc/output/overlay_candidate_validator.h" | 9 #include "cc/output/overlay_candidate_validator.h" |
10 #include "cc/output/overlay_processor.h" | 10 #include "cc/output/overlay_processor.h" |
(...skipping 519 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
530 : GLRenderer(client, | 530 : GLRenderer(client, |
531 settings, | 531 settings, |
532 output_surface, | 532 output_surface, |
533 resource_provider, | 533 resource_provider, |
534 NULL, | 534 NULL, |
535 0), | 535 0), |
536 expect_overlays_(false) {} | 536 expect_overlays_(false) {} |
537 | 537 |
538 MOCK_METHOD2(DoDrawQuad, void(DrawingFrame* frame, const DrawQuad* quad)); | 538 MOCK_METHOD2(DoDrawQuad, void(DrawingFrame* frame, const DrawQuad* quad)); |
539 | 539 |
540 virtual void BeginDrawingFrame(DrawingFrame* frame) override { | |
541 GLRenderer::BeginDrawingFrame(frame); | |
542 } | |
543 | |
544 virtual void FinishDrawingFrame(DrawingFrame* frame) override { | 540 virtual void FinishDrawingFrame(DrawingFrame* frame) override { |
545 GLRenderer::FinishDrawingFrame(frame); | 541 GLRenderer::FinishDrawingFrame(frame); |
546 | 542 |
547 if (!expect_overlays_) { | 543 if (!expect_overlays_) { |
548 EXPECT_EQ(0U, frame->overlay_list.size()); | 544 EXPECT_EQ(0U, frame->overlay_list.size()); |
549 return; | 545 return; |
550 } | 546 } |
551 | 547 |
552 ASSERT_EQ(2U, frame->overlay_list.size()); | 548 ASSERT_EQ(2U, frame->overlay_list.size()); |
553 EXPECT_NE(0U, frame->overlay_list.back().resource_id); | 549 EXPECT_NE(0U, frame->overlay_list.back().resource_id); |
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
734 overlay1.resource_id = resource1; | 730 overlay1.resource_id = resource1; |
735 overlay1.plane_z_order = 1; | 731 overlay1.plane_z_order = 1; |
736 | 732 |
737 DirectRenderer::DrawingFrame frame2; | 733 DirectRenderer::DrawingFrame frame2; |
738 frame2.overlay_list.resize(2); | 734 frame2.overlay_list.resize(2); |
739 OverlayCandidate& overlay2 = frame2.overlay_list.back(); | 735 OverlayCandidate& overlay2 = frame2.overlay_list.back(); |
740 overlay2.resource_id = resource2; | 736 overlay2.resource_id = resource2; |
741 overlay2.plane_z_order = 1; | 737 overlay2.plane_z_order = 1; |
742 | 738 |
743 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1); | 739 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1); |
744 renderer_->BeginDrawingFrame(&frame1); | |
745 renderer_->FinishDrawingFrame(&frame1); | 740 renderer_->FinishDrawingFrame(&frame1); |
746 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); | 741 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); |
747 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2)); | 742 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2)); |
748 SwapBuffers(); | 743 SwapBuffers(); |
749 Mock::VerifyAndClearExpectations(&scheduler_); | 744 Mock::VerifyAndClearExpectations(&scheduler_); |
750 | 745 |
751 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1); | 746 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1); |
752 renderer_->BeginDrawingFrame(&frame2); | |
753 renderer_->FinishDrawingFrame(&frame2); | 747 renderer_->FinishDrawingFrame(&frame2); |
754 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); | 748 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); |
755 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); | 749 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); |
756 SwapBuffers(); | 750 SwapBuffers(); |
757 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); | 751 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); |
758 Mock::VerifyAndClearExpectations(&scheduler_); | 752 Mock::VerifyAndClearExpectations(&scheduler_); |
759 | 753 |
760 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1); | 754 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1); |
761 renderer_->BeginDrawingFrame(&frame1); | |
762 renderer_->FinishDrawingFrame(&frame1); | 755 renderer_->FinishDrawingFrame(&frame1); |
763 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); | 756 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); |
764 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); | 757 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); |
765 SwapBuffers(); | 758 SwapBuffers(); |
766 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2)); | 759 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2)); |
767 Mock::VerifyAndClearExpectations(&scheduler_); | 760 Mock::VerifyAndClearExpectations(&scheduler_); |
768 | 761 |
769 // No overlays, release the resource. | 762 // No overlays, release the resource. |
770 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0); | 763 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0); |
771 DirectRenderer::DrawingFrame frame3; | 764 DirectRenderer::DrawingFrame frame3; |
772 renderer_->set_expect_overlays(false); | 765 renderer_->set_expect_overlays(false); |
773 renderer_->BeginDrawingFrame(&frame3); | |
774 renderer_->FinishDrawingFrame(&frame3); | 766 renderer_->FinishDrawingFrame(&frame3); |
775 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); | 767 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); |
776 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2)); | 768 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2)); |
777 SwapBuffers(); | 769 SwapBuffers(); |
778 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); | 770 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); |
779 Mock::VerifyAndClearExpectations(&scheduler_); | 771 Mock::VerifyAndClearExpectations(&scheduler_); |
780 | 772 |
781 // Use the same buffer twice. | 773 // Use the same buffer twice. |
782 renderer_->set_expect_overlays(true); | 774 renderer_->set_expect_overlays(true); |
783 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1); | 775 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1); |
784 renderer_->BeginDrawingFrame(&frame1); | |
785 renderer_->FinishDrawingFrame(&frame1); | 776 renderer_->FinishDrawingFrame(&frame1); |
786 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); | 777 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); |
787 SwapBuffers(); | 778 SwapBuffers(); |
788 Mock::VerifyAndClearExpectations(&scheduler_); | 779 Mock::VerifyAndClearExpectations(&scheduler_); |
789 | 780 |
790 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1); | 781 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1); |
791 renderer_->BeginDrawingFrame(&frame1); | |
792 renderer_->FinishDrawingFrame(&frame1); | 782 renderer_->FinishDrawingFrame(&frame1); |
793 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); | 783 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); |
794 SwapBuffers(); | 784 SwapBuffers(); |
795 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); | 785 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); |
796 Mock::VerifyAndClearExpectations(&scheduler_); | 786 Mock::VerifyAndClearExpectations(&scheduler_); |
797 | 787 |
798 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0); | 788 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0); |
799 renderer_->set_expect_overlays(false); | 789 renderer_->set_expect_overlays(false); |
800 renderer_->BeginDrawingFrame(&frame3); | |
801 renderer_->FinishDrawingFrame(&frame3); | 790 renderer_->FinishDrawingFrame(&frame3); |
802 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); | 791 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); |
803 SwapBuffers(); | 792 SwapBuffers(); |
804 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); | 793 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); |
805 Mock::VerifyAndClearExpectations(&scheduler_); | 794 Mock::VerifyAndClearExpectations(&scheduler_); |
806 } | 795 } |
807 | 796 |
808 } // namespace | 797 } // namespace |
809 } // namespace cc | 798 } // namespace cc |
OLD | NEW |