| 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 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 271 | 271 |
| 272 EXPECT_EQ(expected->shared_quad_state_list.size(), | 272 EXPECT_EQ(expected->shared_quad_state_list.size(), |
| 273 actual->shared_quad_state_list.size()); | 273 actual->shared_quad_state_list.size()); |
| 274 EXPECT_EQ(expected->quad_list.size(), actual->quad_list.size()); | 274 EXPECT_EQ(expected->quad_list.size(), actual->quad_list.size()); |
| 275 | 275 |
| 276 for (auto exp_iter = expected->quad_list.cbegin(), | 276 for (auto exp_iter = expected->quad_list.cbegin(), |
| 277 act_iter = actual->quad_list.cbegin(); | 277 act_iter = actual->quad_list.cbegin(); |
| 278 exp_iter != expected->quad_list.cend(); | 278 exp_iter != expected->quad_list.cend(); |
| 279 ++exp_iter, ++act_iter) { | 279 ++exp_iter, ++act_iter) { |
| 280 EXPECT_EQ(exp_iter->rect.ToString(), act_iter->rect.ToString()); | 280 EXPECT_EQ(exp_iter->rect.ToString(), act_iter->rect.ToString()); |
| 281 EXPECT_EQ(exp_iter->shared_quad_state->content_bounds.ToString(), | 281 EXPECT_EQ(exp_iter->shared_quad_state->quad_layer_bounds.ToString(), |
| 282 act_iter->shared_quad_state->content_bounds.ToString()); | 282 act_iter->shared_quad_state->quad_layer_bounds.ToString()); |
| 283 } | 283 } |
| 284 } | 284 } |
| 285 } | 285 } |
| 286 | 286 |
| 287 TEST(OverlayTest, NoOverlaysByDefault) { | 287 TEST(OverlayTest, NoOverlaysByDefault) { |
| 288 scoped_refptr<TestContextProvider> provider = TestContextProvider::Create(); | 288 scoped_refptr<TestContextProvider> provider = TestContextProvider::Create(); |
| 289 OverlayOutputSurface output_surface(provider); | 289 OverlayOutputSurface output_surface(provider); |
| 290 EXPECT_EQ(NULL, output_surface.GetOverlayCandidateValidator()); | 290 EXPECT_EQ(NULL, output_surface.GetOverlayCandidateValidator()); |
| 291 | 291 |
| 292 output_surface.InitWithSingleOverlayValidator(); | 292 output_surface.InitWithSingleOverlayValidator(); |
| (...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 539 ASSERT_EQ(1U, pass_list.size()); | 539 ASSERT_EQ(1U, pass_list.size()); |
| 540 EXPECT_EQ(0U, candidate_list.size()); | 540 EXPECT_EQ(0U, candidate_list.size()); |
| 541 } | 541 } |
| 542 | 542 |
| 543 TEST_F(SingleOverlayOnTopTest, RejectNonAxisAlignedTransform) { | 543 TEST_F(SingleOverlayOnTopTest, RejectNonAxisAlignedTransform) { |
| 544 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 544 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 545 CreateFullscreenCandidateQuad(resource_provider_.get(), | 545 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 546 pass->shared_quad_state_list.back(), | 546 pass->shared_quad_state_list.back(), |
| 547 pass.get()); | 547 pass.get()); |
| 548 pass->shared_quad_state_list.back() | 548 pass->shared_quad_state_list.back() |
| 549 ->content_to_target_transform.RotateAboutXAxis(45.f); | 549 ->quad_to_target_transform.RotateAboutXAxis(45.f); |
| 550 | 550 |
| 551 RenderPassList pass_list; | 551 RenderPassList pass_list; |
| 552 pass_list.push_back(pass.Pass()); | 552 pass_list.push_back(pass.Pass()); |
| 553 OverlayCandidateList candidate_list; | 553 OverlayCandidateList candidate_list; |
| 554 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); | 554 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); |
| 555 ASSERT_EQ(1U, pass_list.size()); | 555 ASSERT_EQ(1U, pass_list.size()); |
| 556 EXPECT_EQ(0U, candidate_list.size()); | 556 EXPECT_EQ(0U, candidate_list.size()); |
| 557 } | 557 } |
| 558 | 558 |
| 559 TEST_F(SingleOverlayOnTopTest, AllowVerticalFlip) { | 559 TEST_F(SingleOverlayOnTopTest, AllowVerticalFlip) { |
| 560 gfx::Rect rect = kOverlayRect; | 560 gfx::Rect rect = kOverlayRect; |
| 561 rect.set_width(rect.width() / 2); | 561 rect.set_width(rect.width() / 2); |
| 562 rect.Offset(0, -rect.height()); | 562 rect.Offset(0, -rect.height()); |
| 563 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 563 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 564 CreateCandidateQuadAt(resource_provider_.get(), | 564 CreateCandidateQuadAt(resource_provider_.get(), |
| 565 pass->shared_quad_state_list.back(), pass.get(), rect); | 565 pass->shared_quad_state_list.back(), pass.get(), rect); |
| 566 pass->shared_quad_state_list.back()->content_to_target_transform.Scale(2.0f, | 566 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(2.0f, |
| 567 -1.0f); | 567 -1.0f); |
| 568 | 568 |
| 569 RenderPassList pass_list; | 569 RenderPassList pass_list; |
| 570 pass_list.push_back(pass.Pass()); | 570 pass_list.push_back(pass.Pass()); |
| 571 OverlayCandidateList candidate_list; | 571 OverlayCandidateList candidate_list; |
| 572 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); | 572 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); |
| 573 ASSERT_EQ(1U, pass_list.size()); | 573 ASSERT_EQ(1U, pass_list.size()); |
| 574 ASSERT_EQ(2U, candidate_list.size()); | 574 ASSERT_EQ(2U, candidate_list.size()); |
| 575 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_VERTICAL, | 575 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_VERTICAL, |
| 576 candidate_list.back().transform); | 576 candidate_list.back().transform); |
| 577 } | 577 } |
| 578 | 578 |
| 579 TEST_F(SingleOverlayOnTopTest, AllowHorizontalFlip) { | 579 TEST_F(SingleOverlayOnTopTest, AllowHorizontalFlip) { |
| 580 gfx::Rect rect = kOverlayRect; | 580 gfx::Rect rect = kOverlayRect; |
| 581 rect.set_height(rect.height() / 2); | 581 rect.set_height(rect.height() / 2); |
| 582 rect.Offset(-rect.width(), 0); | 582 rect.Offset(-rect.width(), 0); |
| 583 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 583 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 584 CreateCandidateQuadAt(resource_provider_.get(), | 584 CreateCandidateQuadAt(resource_provider_.get(), |
| 585 pass->shared_quad_state_list.back(), pass.get(), rect); | 585 pass->shared_quad_state_list.back(), pass.get(), rect); |
| 586 pass->shared_quad_state_list.back()->content_to_target_transform.Scale(-1.0f, | 586 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(-1.0f, |
| 587 2.0f); | 587 2.0f); |
| 588 | 588 |
| 589 RenderPassList pass_list; | 589 RenderPassList pass_list; |
| 590 pass_list.push_back(pass.Pass()); | 590 pass_list.push_back(pass.Pass()); |
| 591 OverlayCandidateList candidate_list; | 591 OverlayCandidateList candidate_list; |
| 592 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); | 592 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); |
| 593 ASSERT_EQ(1U, pass_list.size()); | 593 ASSERT_EQ(1U, pass_list.size()); |
| 594 ASSERT_EQ(2U, candidate_list.size()); | 594 ASSERT_EQ(2U, candidate_list.size()); |
| 595 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_HORIZONTAL, | 595 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_HORIZONTAL, |
| 596 candidate_list.back().transform); | 596 candidate_list.back().transform); |
| 597 } | 597 } |
| 598 | 598 |
| 599 TEST_F(SingleOverlayOnTopTest, AllowPositiveScaleTransform) { | 599 TEST_F(SingleOverlayOnTopTest, AllowPositiveScaleTransform) { |
| 600 gfx::Rect rect = kOverlayRect; | 600 gfx::Rect rect = kOverlayRect; |
| 601 rect.set_width(rect.width() / 2); | 601 rect.set_width(rect.width() / 2); |
| 602 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 602 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 603 CreateCandidateQuadAt(resource_provider_.get(), | 603 CreateCandidateQuadAt(resource_provider_.get(), |
| 604 pass->shared_quad_state_list.back(), pass.get(), rect); | 604 pass->shared_quad_state_list.back(), pass.get(), rect); |
| 605 pass->shared_quad_state_list.back()->content_to_target_transform.Scale(2.0f, | 605 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(2.0f, |
| 606 1.0f); | 606 1.0f); |
| 607 | 607 |
| 608 RenderPassList pass_list; | 608 RenderPassList pass_list; |
| 609 pass_list.push_back(pass.Pass()); | 609 pass_list.push_back(pass.Pass()); |
| 610 OverlayCandidateList candidate_list; | 610 OverlayCandidateList candidate_list; |
| 611 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); | 611 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); |
| 612 ASSERT_EQ(1U, pass_list.size()); | 612 ASSERT_EQ(1U, pass_list.size()); |
| 613 EXPECT_EQ(2U, candidate_list.size()); | 613 EXPECT_EQ(2U, candidate_list.size()); |
| 614 } | 614 } |
| 615 | 615 |
| 616 TEST_F(SingleOverlayOnTopTest, Allow90DegreeRotation) { | 616 TEST_F(SingleOverlayOnTopTest, Allow90DegreeRotation) { |
| 617 gfx::Rect rect = kOverlayRect; | 617 gfx::Rect rect = kOverlayRect; |
| 618 rect.Offset(0, -rect.height()); | 618 rect.Offset(0, -rect.height()); |
| 619 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 619 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 620 CreateCandidateQuadAt(resource_provider_.get(), | 620 CreateCandidateQuadAt(resource_provider_.get(), |
| 621 pass->shared_quad_state_list.back(), pass.get(), rect); | 621 pass->shared_quad_state_list.back(), pass.get(), rect); |
| 622 pass->shared_quad_state_list.back() | 622 pass->shared_quad_state_list.back() |
| 623 ->content_to_target_transform.RotateAboutZAxis(90.f); | 623 ->quad_to_target_transform.RotateAboutZAxis(90.f); |
| 624 | 624 |
| 625 RenderPassList pass_list; | 625 RenderPassList pass_list; |
| 626 pass_list.push_back(pass.Pass()); | 626 pass_list.push_back(pass.Pass()); |
| 627 OverlayCandidateList candidate_list; | 627 OverlayCandidateList candidate_list; |
| 628 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); | 628 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); |
| 629 ASSERT_EQ(1U, pass_list.size()); | 629 ASSERT_EQ(1U, pass_list.size()); |
| 630 ASSERT_EQ(2U, candidate_list.size()); | 630 ASSERT_EQ(2U, candidate_list.size()); |
| 631 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_90, candidate_list.back().transform); | 631 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_90, candidate_list.back().transform); |
| 632 } | 632 } |
| 633 | 633 |
| 634 TEST_F(SingleOverlayOnTopTest, Allow180DegreeRotation) { | 634 TEST_F(SingleOverlayOnTopTest, Allow180DegreeRotation) { |
| 635 gfx::Rect rect = kOverlayRect; | 635 gfx::Rect rect = kOverlayRect; |
| 636 rect.Offset(-rect.width(), -rect.height()); | 636 rect.Offset(-rect.width(), -rect.height()); |
| 637 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 637 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 638 CreateCandidateQuadAt(resource_provider_.get(), | 638 CreateCandidateQuadAt(resource_provider_.get(), |
| 639 pass->shared_quad_state_list.back(), pass.get(), rect); | 639 pass->shared_quad_state_list.back(), pass.get(), rect); |
| 640 pass->shared_quad_state_list.back() | 640 pass->shared_quad_state_list.back() |
| 641 ->content_to_target_transform.RotateAboutZAxis(180.f); | 641 ->quad_to_target_transform.RotateAboutZAxis(180.f); |
| 642 | 642 |
| 643 RenderPassList pass_list; | 643 RenderPassList pass_list; |
| 644 pass_list.push_back(pass.Pass()); | 644 pass_list.push_back(pass.Pass()); |
| 645 OverlayCandidateList candidate_list; | 645 OverlayCandidateList candidate_list; |
| 646 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); | 646 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); |
| 647 ASSERT_EQ(1U, pass_list.size()); | 647 ASSERT_EQ(1U, pass_list.size()); |
| 648 ASSERT_EQ(2U, candidate_list.size()); | 648 ASSERT_EQ(2U, candidate_list.size()); |
| 649 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_180, candidate_list.back().transform); | 649 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_180, candidate_list.back().transform); |
| 650 } | 650 } |
| 651 | 651 |
| 652 TEST_F(SingleOverlayOnTopTest, Allow270DegreeRotation) { | 652 TEST_F(SingleOverlayOnTopTest, Allow270DegreeRotation) { |
| 653 gfx::Rect rect = kOverlayRect; | 653 gfx::Rect rect = kOverlayRect; |
| 654 rect.Offset(-rect.width(), 0); | 654 rect.Offset(-rect.width(), 0); |
| 655 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 655 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 656 CreateCandidateQuadAt(resource_provider_.get(), | 656 CreateCandidateQuadAt(resource_provider_.get(), |
| 657 pass->shared_quad_state_list.back(), pass.get(), rect); | 657 pass->shared_quad_state_list.back(), pass.get(), rect); |
| 658 pass->shared_quad_state_list.back() | 658 pass->shared_quad_state_list.back() |
| 659 ->content_to_target_transform.RotateAboutZAxis(270.f); | 659 ->quad_to_target_transform.RotateAboutZAxis(270.f); |
| 660 | 660 |
| 661 RenderPassList pass_list; | 661 RenderPassList pass_list; |
| 662 pass_list.push_back(pass.Pass()); | 662 pass_list.push_back(pass.Pass()); |
| 663 OverlayCandidateList candidate_list; | 663 OverlayCandidateList candidate_list; |
| 664 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); | 664 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); |
| 665 ASSERT_EQ(1U, pass_list.size()); | 665 ASSERT_EQ(1U, pass_list.size()); |
| 666 ASSERT_EQ(2U, candidate_list.size()); | 666 ASSERT_EQ(2U, candidate_list.size()); |
| 667 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_270, candidate_list.back().transform); | 667 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_270, candidate_list.back().transform); |
| 668 } | 668 } |
| 669 | 669 |
| (...skipping 512 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1182 renderer_->BeginDrawingFrame(&frame3); | 1182 renderer_->BeginDrawingFrame(&frame3); |
| 1183 renderer_->FinishDrawingFrame(&frame3); | 1183 renderer_->FinishDrawingFrame(&frame3); |
| 1184 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); | 1184 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); |
| 1185 SwapBuffers(); | 1185 SwapBuffers(); |
| 1186 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); | 1186 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); |
| 1187 Mock::VerifyAndClearExpectations(&scheduler_); | 1187 Mock::VerifyAndClearExpectations(&scheduler_); |
| 1188 } | 1188 } |
| 1189 | 1189 |
| 1190 } // namespace | 1190 } // namespace |
| 1191 } // namespace cc | 1191 } // namespace cc |
| OLD | NEW |