| 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 using GLRenderer::BeginDrawingFrame; |
| 541 |
| 540 virtual void FinishDrawingFrame(DrawingFrame* frame) override { | 542 virtual void FinishDrawingFrame(DrawingFrame* frame) override { |
| 541 GLRenderer::FinishDrawingFrame(frame); | 543 GLRenderer::FinishDrawingFrame(frame); |
| 542 | 544 |
| 543 if (!expect_overlays_) { | 545 if (!expect_overlays_) { |
| 544 EXPECT_EQ(0U, frame->overlay_list.size()); | 546 EXPECT_EQ(0U, frame->overlay_list.size()); |
| 545 return; | 547 return; |
| 546 } | 548 } |
| 547 | 549 |
| 548 ASSERT_EQ(2U, frame->overlay_list.size()); | 550 ASSERT_EQ(2U, frame->overlay_list.size()); |
| 549 EXPECT_NE(0U, frame->overlay_list.back().resource_id); | 551 EXPECT_NE(0U, frame->overlay_list.back().resource_id); |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 717 TEST_F(GLRendererWithOverlaysTest, ResourcesExportedAndReturned) { | 719 TEST_F(GLRendererWithOverlaysTest, ResourcesExportedAndReturned) { |
| 718 bool use_validator = true; | 720 bool use_validator = true; |
| 719 Init(use_validator); | 721 Init(use_validator); |
| 720 renderer_->set_expect_overlays(true); | 722 renderer_->set_expect_overlays(true); |
| 721 | 723 |
| 722 ResourceProvider::ResourceId resource1 = | 724 ResourceProvider::ResourceId resource1 = |
| 723 CreateResource(resource_provider_.get()); | 725 CreateResource(resource_provider_.get()); |
| 724 ResourceProvider::ResourceId resource2 = | 726 ResourceProvider::ResourceId resource2 = |
| 725 CreateResource(resource_provider_.get()); | 727 CreateResource(resource_provider_.get()); |
| 726 | 728 |
| 729 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 730 RenderPassList pass_list; |
| 731 pass_list.push_back(pass.Pass()); |
| 732 |
| 727 DirectRenderer::DrawingFrame frame1; | 733 DirectRenderer::DrawingFrame frame1; |
| 734 frame1.render_passes_in_draw_order = &pass_list; |
| 728 frame1.overlay_list.resize(2); | 735 frame1.overlay_list.resize(2); |
| 729 OverlayCandidate& overlay1 = frame1.overlay_list.back(); | 736 OverlayCandidate& overlay1 = frame1.overlay_list.back(); |
| 730 overlay1.resource_id = resource1; | 737 overlay1.resource_id = resource1; |
| 731 overlay1.plane_z_order = 1; | 738 overlay1.plane_z_order = 1; |
| 732 | 739 |
| 733 DirectRenderer::DrawingFrame frame2; | 740 DirectRenderer::DrawingFrame frame2; |
| 741 frame2.render_passes_in_draw_order = &pass_list; |
| 734 frame2.overlay_list.resize(2); | 742 frame2.overlay_list.resize(2); |
| 735 OverlayCandidate& overlay2 = frame2.overlay_list.back(); | 743 OverlayCandidate& overlay2 = frame2.overlay_list.back(); |
| 736 overlay2.resource_id = resource2; | 744 overlay2.resource_id = resource2; |
| 737 overlay2.plane_z_order = 1; | 745 overlay2.plane_z_order = 1; |
| 738 | 746 |
| 739 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1); | 747 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1); |
| 748 renderer_->BeginDrawingFrame(&frame1); |
| 740 renderer_->FinishDrawingFrame(&frame1); | 749 renderer_->FinishDrawingFrame(&frame1); |
| 741 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); | 750 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); |
| 742 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2)); | 751 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2)); |
| 743 SwapBuffers(); | 752 SwapBuffers(); |
| 744 Mock::VerifyAndClearExpectations(&scheduler_); | 753 Mock::VerifyAndClearExpectations(&scheduler_); |
| 745 | 754 |
| 746 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1); | 755 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1); |
| 756 renderer_->BeginDrawingFrame(&frame2); |
| 747 renderer_->FinishDrawingFrame(&frame2); | 757 renderer_->FinishDrawingFrame(&frame2); |
| 748 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); | 758 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); |
| 749 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); | 759 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); |
| 750 SwapBuffers(); | 760 SwapBuffers(); |
| 751 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); | 761 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); |
| 752 Mock::VerifyAndClearExpectations(&scheduler_); | 762 Mock::VerifyAndClearExpectations(&scheduler_); |
| 753 | 763 |
| 754 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1); | 764 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1); |
| 765 renderer_->BeginDrawingFrame(&frame1); |
| 755 renderer_->FinishDrawingFrame(&frame1); | 766 renderer_->FinishDrawingFrame(&frame1); |
| 756 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); | 767 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); |
| 757 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); | 768 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2)); |
| 758 SwapBuffers(); | 769 SwapBuffers(); |
| 759 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2)); | 770 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2)); |
| 760 Mock::VerifyAndClearExpectations(&scheduler_); | 771 Mock::VerifyAndClearExpectations(&scheduler_); |
| 761 | 772 |
| 762 // No overlays, release the resource. | 773 // No overlays, release the resource. |
| 763 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0); | 774 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0); |
| 764 DirectRenderer::DrawingFrame frame3; | 775 DirectRenderer::DrawingFrame frame3; |
| 776 frame3.render_passes_in_draw_order = &pass_list; |
| 765 renderer_->set_expect_overlays(false); | 777 renderer_->set_expect_overlays(false); |
| 778 renderer_->BeginDrawingFrame(&frame3); |
| 766 renderer_->FinishDrawingFrame(&frame3); | 779 renderer_->FinishDrawingFrame(&frame3); |
| 767 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); | 780 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); |
| 768 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2)); | 781 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2)); |
| 769 SwapBuffers(); | 782 SwapBuffers(); |
| 770 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); | 783 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); |
| 771 Mock::VerifyAndClearExpectations(&scheduler_); | 784 Mock::VerifyAndClearExpectations(&scheduler_); |
| 772 | 785 |
| 773 // Use the same buffer twice. | 786 // Use the same buffer twice. |
| 774 renderer_->set_expect_overlays(true); | 787 renderer_->set_expect_overlays(true); |
| 775 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1); | 788 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1); |
| 789 renderer_->BeginDrawingFrame(&frame1); |
| 776 renderer_->FinishDrawingFrame(&frame1); | 790 renderer_->FinishDrawingFrame(&frame1); |
| 777 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); | 791 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); |
| 778 SwapBuffers(); | 792 SwapBuffers(); |
| 779 Mock::VerifyAndClearExpectations(&scheduler_); | 793 Mock::VerifyAndClearExpectations(&scheduler_); |
| 780 | 794 |
| 781 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1); | 795 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1); |
| 796 renderer_->BeginDrawingFrame(&frame1); |
| 782 renderer_->FinishDrawingFrame(&frame1); | 797 renderer_->FinishDrawingFrame(&frame1); |
| 783 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); | 798 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); |
| 784 SwapBuffers(); | 799 SwapBuffers(); |
| 785 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); | 800 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); |
| 786 Mock::VerifyAndClearExpectations(&scheduler_); | 801 Mock::VerifyAndClearExpectations(&scheduler_); |
| 787 | 802 |
| 788 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0); | 803 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0); |
| 789 renderer_->set_expect_overlays(false); | 804 renderer_->set_expect_overlays(false); |
| 805 renderer_->BeginDrawingFrame(&frame3); |
| 790 renderer_->FinishDrawingFrame(&frame3); | 806 renderer_->FinishDrawingFrame(&frame3); |
| 791 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); | 807 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); |
| 792 SwapBuffers(); | 808 SwapBuffers(); |
| 793 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); | 809 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); |
| 794 Mock::VerifyAndClearExpectations(&scheduler_); | 810 Mock::VerifyAndClearExpectations(&scheduler_); |
| 795 } | 811 } |
| 796 | 812 |
| 797 } // namespace | 813 } // namespace |
| 798 } // namespace cc | 814 } // namespace cc |
| OLD | NEW |