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/compositor_frame_metadata.h" | 6 #include "cc/output/compositor_frame_metadata.h" |
7 #include "cc/output/gl_renderer.h" | 7 #include "cc/output/gl_renderer.h" |
8 #include "cc/output/output_surface.h" | 8 #include "cc/output/output_surface.h" |
9 #include "cc/output/output_surface_client.h" | 9 #include "cc/output/output_surface_client.h" |
10 #include "cc/output/overlay_candidate_validator.h" | 10 #include "cc/output/overlay_candidate_validator.h" |
(...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
297 EXPECT_TRUE(output_surface.GetOverlayCandidateValidator() != NULL); | 297 EXPECT_TRUE(output_surface.GetOverlayCandidateValidator() != NULL); |
298 | 298 |
299 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( | 299 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
300 new TestSharedBitmapManager()); | 300 new TestSharedBitmapManager()); |
301 scoped_ptr<ResourceProvider> resource_provider(ResourceProvider::Create( | 301 scoped_ptr<ResourceProvider> resource_provider(ResourceProvider::Create( |
302 &output_surface, shared_bitmap_manager.get(), NULL, NULL, 0, false, 1)); | 302 &output_surface, shared_bitmap_manager.get(), NULL, NULL, 0, false, 1)); |
303 | 303 |
304 scoped_ptr<DefaultOverlayProcessor> overlay_processor( | 304 scoped_ptr<DefaultOverlayProcessor> overlay_processor( |
305 new DefaultOverlayProcessor(&output_surface, resource_provider.get())); | 305 new DefaultOverlayProcessor(&output_surface, resource_provider.get())); |
306 overlay_processor->Initialize(); | 306 overlay_processor->Initialize(); |
307 EXPECT_GE(1U, overlay_processor->GetStrategyCount()); | 307 EXPECT_GE(2U, overlay_processor->GetStrategyCount()); |
308 } | 308 } |
309 | 309 |
310 template <typename OverlayStrategyType> | 310 template <typename OverlayStrategyType> |
311 class OverlayTest : public testing::Test { | 311 class OverlayTest : public testing::Test { |
312 protected: | 312 protected: |
313 void SetUp() override { | 313 void SetUp() override { |
314 provider_ = TestContextProvider::Create(); | 314 provider_ = TestContextProvider::Create(); |
315 output_surface_.reset(new OverlayOutputSurface(provider_)); | 315 output_surface_.reset(new OverlayOutputSurface(provider_)); |
316 EXPECT_TRUE(output_surface_->BindToClient(&client_)); | 316 EXPECT_TRUE(output_surface_->BindToClient(&client_)); |
317 output_surface_->InitWithSingleOverlayValidator(); | 317 output_surface_->InitWithSingleOverlayValidator(); |
(...skipping 623 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
941 kOverlayRect, | 941 kOverlayRect, |
942 BoundingRect(kUVTopLeft, kUVBottomRight))).Times(1); | 942 BoundingRect(kUVTopLeft, kUVBottomRight))).Times(1); |
943 renderer_->DrawFrame(&pass_list, 1.f, viewport_rect, viewport_rect, false); | 943 renderer_->DrawFrame(&pass_list, 1.f, viewport_rect, viewport_rect, false); |
944 | 944 |
945 SwapBuffers(); | 945 SwapBuffers(); |
946 | 946 |
947 Mock::VerifyAndClearExpectations(renderer_.get()); | 947 Mock::VerifyAndClearExpectations(renderer_.get()); |
948 Mock::VerifyAndClearExpectations(&scheduler_); | 948 Mock::VerifyAndClearExpectations(&scheduler_); |
949 } | 949 } |
950 | 950 |
951 TEST_F(GLRendererWithOverlaysTest, OccludedQuadDrawn) { | 951 TEST_F(GLRendererWithOverlaysTest, OccludedQuadInUnderlay) { |
952 bool use_validator = true; | 952 bool use_validator = true; |
953 Init(use_validator); | 953 Init(use_validator); |
954 renderer_->set_expect_overlays(false); | 954 renderer_->set_expect_overlays(true); |
955 gfx::Rect viewport_rect(16, 16); | 955 gfx::Rect viewport_rect(16, 16); |
956 | 956 |
957 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 957 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
958 | 958 |
959 CreateFullscreenCheckeredQuad(resource_provider_.get(), | 959 CreateFullscreenCheckeredQuad(resource_provider_.get(), |
960 pass->shared_quad_state_list.back(), | 960 pass->shared_quad_state_list.back(), |
961 pass.get()); | 961 pass.get()); |
962 CreateFullscreenCheckeredQuad(resource_provider_.get(), | 962 CreateFullscreenCheckeredQuad(resource_provider_.get(), |
963 pass->shared_quad_state_list.back(), | 963 pass->shared_quad_state_list.back(), |
964 pass.get()); | 964 pass.get()); |
965 | 965 |
966 CreateFullscreenCandidateQuad(resource_provider_.get(), | 966 CreateFullscreenCandidateQuad(resource_provider_.get(), |
967 pass->shared_quad_state_list.back(), | 967 pass->shared_quad_state_list.back(), |
968 pass.get()); | 968 pass.get()); |
969 | 969 |
970 RenderPassList pass_list; | 970 RenderPassList pass_list; |
971 pass_list.push_back(pass.Pass()); | 971 pass_list.push_back(pass.Pass()); |
972 | 972 |
973 // 3 quads in the pass, all should draw. | 973 // Candidate quad should fail to be overlaid on top because of occlusion. |
| 974 // Expect to be replaced with transparent hole quad and placed in underlay. |
974 EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(3); | 975 EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(3); |
975 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0); | 976 EXPECT_CALL(scheduler_, |
| 977 Schedule(-1, gfx::OVERLAY_TRANSFORM_NONE, _, kOverlayRect, |
| 978 BoundingRect(kUVTopLeft, kUVBottomRight))).Times(1); |
976 renderer_->DrawFrame(&pass_list, 1.f, viewport_rect, viewport_rect, false); | 979 renderer_->DrawFrame(&pass_list, 1.f, viewport_rect, viewport_rect, false); |
977 | 980 |
978 SwapBuffers(); | 981 SwapBuffers(); |
979 | 982 |
980 Mock::VerifyAndClearExpectations(renderer_.get()); | 983 Mock::VerifyAndClearExpectations(renderer_.get()); |
981 Mock::VerifyAndClearExpectations(&scheduler_); | 984 Mock::VerifyAndClearExpectations(&scheduler_); |
982 } | 985 } |
983 | 986 |
984 TEST_F(GLRendererWithOverlaysTest, NoValidatorNoOverlay) { | 987 TEST_F(GLRendererWithOverlaysTest, NoValidatorNoOverlay) { |
985 bool use_validator = false; | 988 bool use_validator = false; |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1103 renderer_->BeginDrawingFrame(&frame3); | 1106 renderer_->BeginDrawingFrame(&frame3); |
1104 renderer_->FinishDrawingFrame(&frame3); | 1107 renderer_->FinishDrawingFrame(&frame3); |
1105 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); | 1108 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); |
1106 SwapBuffers(); | 1109 SwapBuffers(); |
1107 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); | 1110 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); |
1108 Mock::VerifyAndClearExpectations(&scheduler_); | 1111 Mock::VerifyAndClearExpectations(&scheduler_); |
1109 } | 1112 } |
1110 | 1113 |
1111 } // namespace | 1114 } // namespace |
1112 } // namespace cc | 1115 } // namespace cc |
OLD | NEW |