| 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 |