| 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/region.h" | 5 #include "cc/base/region.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 395 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 406 pass->shared_quad_state_list.back(), pass.get()); | 406 pass->shared_quad_state_list.back(), pass.get()); |
| 407 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 407 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 408 pass->shared_quad_state_list.back(), pass.get()); | 408 pass->shared_quad_state_list.back(), pass.get()); |
| 409 | 409 |
| 410 RenderPassList pass_list; | 410 RenderPassList pass_list; |
| 411 pass_list.push_back(pass.Pass()); | 411 pass_list.push_back(pass.Pass()); |
| 412 | 412 |
| 413 // Check for potential candidates. | 413 // Check for potential candidates. |
| 414 OverlayCandidateList candidate_list; | 414 OverlayCandidateList candidate_list; |
| 415 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 415 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 416 &candidate_list, &damage_rect_); | 416 &candidate_list, nullptr, |
| 417 &damage_rect_); |
| 417 | 418 |
| 418 ASSERT_EQ(1U, pass_list.size()); | 419 ASSERT_EQ(1U, pass_list.size()); |
| 419 ASSERT_EQ(1U, candidate_list.size()); | 420 ASSERT_EQ(1U, candidate_list.size()); |
| 420 | 421 |
| 421 RenderPass* main_pass = pass_list.back().get(); | 422 RenderPass* main_pass = pass_list.back().get(); |
| 422 // Check that the quad is gone. | 423 // Check that the quad is gone. |
| 423 EXPECT_EQ(2U, main_pass->quad_list.size()); | 424 EXPECT_EQ(2U, main_pass->quad_list.size()); |
| 424 const QuadList& quad_list = main_pass->quad_list; | 425 const QuadList& quad_list = main_pass->quad_list; |
| 425 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); | 426 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); |
| 426 it != quad_list.BackToFrontEnd(); ++it) { | 427 it != quad_list.BackToFrontEnd(); ++it) { |
| (...skipping 21 matching lines...) Expand all Loading... |
| 448 pass->shared_quad_state_list.back(), pass.get()); | 449 pass->shared_quad_state_list.back(), pass.get()); |
| 449 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 450 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 450 pass->shared_quad_state_list.back(), pass.get()); | 451 pass->shared_quad_state_list.back(), pass.get()); |
| 451 | 452 |
| 452 RenderPassList pass_list; | 453 RenderPassList pass_list; |
| 453 pass_list.push_back(pass.Pass()); | 454 pass_list.push_back(pass.Pass()); |
| 454 | 455 |
| 455 // Check for potential candidates. | 456 // Check for potential candidates. |
| 456 OverlayCandidateList candidate_list; | 457 OverlayCandidateList candidate_list; |
| 457 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 458 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 458 &candidate_list, &damage_rect_); | 459 &candidate_list, nullptr, |
| 460 &damage_rect_); |
| 459 | 461 |
| 460 // Ensure that the display and uv rects have cropping applied to them. | 462 // Ensure that the display and uv rects have cropping applied to them. |
| 461 ASSERT_EQ(1U, pass_list.size()); | 463 ASSERT_EQ(1U, pass_list.size()); |
| 462 ASSERT_EQ(1U, candidate_list.size()); | 464 ASSERT_EQ(1U, candidate_list.size()); |
| 463 EXPECT_EQ(candidate_id, candidate_list[0].resource_id); | 465 EXPECT_EQ(candidate_id, candidate_list[0].resource_id); |
| 464 EXPECT_EQ(gfx::RectF(0.f, 32.f, 64.f, 64.f), candidate_list[0].display_rect); | 466 EXPECT_EQ(gfx::RectF(0.f, 32.f, 64.f, 64.f), candidate_list[0].display_rect); |
| 465 EXPECT_EQ(gfx::RectF(0.f, 0.25f, 0.5f, 0.5f), candidate_list[0].uv_rect); | 467 EXPECT_EQ(gfx::RectF(0.f, 0.25f, 0.5f, 0.5f), candidate_list[0].uv_rect); |
| 466 } | 468 } |
| 467 | 469 |
| 468 TEST_F(SandwichTest, SuccessfulTwoOverlays) { | 470 TEST_F(SandwichTest, SuccessfulTwoOverlays) { |
| 469 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 471 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 470 | 472 |
| 471 // Add two non-overlapping candidates. | 473 // Add two non-overlapping candidates. |
| 472 CreateCandidateQuadAt(resource_provider_.get(), | 474 CreateCandidateQuadAt(resource_provider_.get(), |
| 473 pass->shared_quad_state_list.back(), pass.get(), | 475 pass->shared_quad_state_list.back(), pass.get(), |
| 474 kOverlayTopLeftRect); | 476 kOverlayTopLeftRect); |
| 475 CreateCandidateQuadAt(resource_provider_.get(), | 477 CreateCandidateQuadAt(resource_provider_.get(), |
| 476 pass->shared_quad_state_list.back(), pass.get(), | 478 pass->shared_quad_state_list.back(), pass.get(), |
| 477 kOverlayBottomRightRect); | 479 kOverlayBottomRightRect); |
| 478 | 480 |
| 479 // Add something behind it. | 481 // Add something behind it. |
| 480 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 482 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 481 pass->shared_quad_state_list.back(), pass.get()); | 483 pass->shared_quad_state_list.back(), pass.get()); |
| 482 | 484 |
| 483 RenderPassList pass_list; | 485 RenderPassList pass_list; |
| 484 pass_list.push_back(pass.Pass()); | 486 pass_list.push_back(pass.Pass()); |
| 485 OverlayCandidateList candidate_list; | 487 OverlayCandidateList candidate_list; |
| 486 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 488 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 487 &candidate_list, &damage_rect_); | 489 &candidate_list, nullptr, |
| 490 &damage_rect_); |
| 488 | 491 |
| 489 // Both candidates should become overlays. | 492 // Both candidates should become overlays. |
| 490 EXPECT_EQ(1u, pass_list.size()); | 493 EXPECT_EQ(1u, pass_list.size()); |
| 491 EXPECT_EQ(2u, candidate_list.size()); | 494 EXPECT_EQ(2u, candidate_list.size()); |
| 492 EXPECT_EQ(gfx::RectF(kOverlayTopLeftRect), candidate_list[0].display_rect); | 495 EXPECT_EQ(gfx::RectF(kOverlayTopLeftRect), candidate_list[0].display_rect); |
| 493 EXPECT_EQ(gfx::RectF(kOverlayBottomRightRect), | 496 EXPECT_EQ(gfx::RectF(kOverlayBottomRightRect), |
| 494 candidate_list[1].display_rect); | 497 candidate_list[1].display_rect); |
| 495 | 498 |
| 496 // The overlay quads should be gone. | 499 // The overlay quads should be gone. |
| 497 const QuadList& quad_list = pass_list.back()->quad_list; | 500 const QuadList& quad_list = pass_list.back()->quad_list; |
| (...skipping 13 matching lines...) Expand all Loading... |
| 511 kOverlayRect); | 514 kOverlayRect); |
| 512 | 515 |
| 513 // Add something behind it. | 516 // Add something behind it. |
| 514 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 517 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 515 pass->shared_quad_state_list.back(), pass.get()); | 518 pass->shared_quad_state_list.back(), pass.get()); |
| 516 | 519 |
| 517 RenderPassList pass_list; | 520 RenderPassList pass_list; |
| 518 pass_list.push_back(pass.Pass()); | 521 pass_list.push_back(pass.Pass()); |
| 519 OverlayCandidateList candidate_list; | 522 OverlayCandidateList candidate_list; |
| 520 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 523 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 521 &candidate_list, &damage_rect_); | 524 &candidate_list, nullptr, |
| 525 &damage_rect_); |
| 522 | 526 |
| 523 // Only one of the candidates should become an overlay. | 527 // Only one of the candidates should become an overlay. |
| 524 EXPECT_EQ(1u, pass_list.size()); | 528 EXPECT_EQ(1u, pass_list.size()); |
| 525 EXPECT_EQ(1u, candidate_list.size()); | 529 EXPECT_EQ(1u, candidate_list.size()); |
| 526 EXPECT_EQ(gfx::RectF(kOverlayTopLeftRect), candidate_list[0].display_rect); | 530 EXPECT_EQ(gfx::RectF(kOverlayTopLeftRect), candidate_list[0].display_rect); |
| 527 | 531 |
| 528 // One of the overlay quads should be gone. | 532 // One of the overlay quads should be gone. |
| 529 const QuadList& quad_list = pass_list.back()->quad_list; | 533 const QuadList& quad_list = pass_list.back()->quad_list; |
| 530 EXPECT_EQ(2u, quad_list.size()); | 534 EXPECT_EQ(2u, quad_list.size()); |
| 531 EXPECT_EQ(DrawQuad::TEXTURE_CONTENT, quad_list.front()->material); | 535 EXPECT_EQ(DrawQuad::TEXTURE_CONTENT, quad_list.front()->material); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 546 CreateOpaqueQuadAt(resource_provider_.get(), | 550 CreateOpaqueQuadAt(resource_provider_.get(), |
| 547 pass->shared_quad_state_list.back(), pass.get(), | 551 pass->shared_quad_state_list.back(), pass.get(), |
| 548 gfx::Rect(kDisplaySize)); | 552 gfx::Rect(kDisplaySize)); |
| 549 | 553 |
| 550 RenderPassList pass_list; | 554 RenderPassList pass_list; |
| 551 pass_list.push_back(pass.Pass()); | 555 pass_list.push_back(pass.Pass()); |
| 552 | 556 |
| 553 // Check for potential candidates. | 557 // Check for potential candidates. |
| 554 OverlayCandidateList candidate_list; | 558 OverlayCandidateList candidate_list; |
| 555 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 559 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 556 &candidate_list, &damage_rect_); | 560 &candidate_list, nullptr, |
| 561 &damage_rect_); |
| 557 ASSERT_EQ(1U, pass_list.size()); | 562 ASSERT_EQ(1U, pass_list.size()); |
| 558 ASSERT_EQ(2U, candidate_list.size()); | 563 ASSERT_EQ(2U, candidate_list.size()); |
| 559 | 564 |
| 560 RenderPass* main_pass = pass_list.back().get(); | 565 RenderPass* main_pass = pass_list.back().get(); |
| 561 // Check that the quad is gone. | 566 // Check that the quad is gone. |
| 562 EXPECT_EQ(3U, main_pass->quad_list.size()); | 567 EXPECT_EQ(3U, main_pass->quad_list.size()); |
| 563 const QuadList& quad_list = main_pass->quad_list; | 568 const QuadList& quad_list = main_pass->quad_list; |
| 564 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); | 569 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); |
| 565 it != quad_list.BackToFrontEnd(); ++it) { | 570 it != quad_list.BackToFrontEnd(); ++it) { |
| 566 EXPECT_NE(DrawQuad::TEXTURE_CONTENT, it->material); | 571 EXPECT_NE(DrawQuad::TEXTURE_CONTENT, it->material); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 601 gfx::Rect(kDisplaySize)); | 606 gfx::Rect(kDisplaySize)); |
| 602 | 607 |
| 603 RenderPassList pass_list; | 608 RenderPassList pass_list; |
| 604 pass_list.push_back(pass.Pass()); | 609 pass_list.push_back(pass.Pass()); |
| 605 | 610 |
| 606 // Run the overlay strategy on that input. | 611 // Run the overlay strategy on that input. |
| 607 RenderPass* main_pass = pass_list.back().get(); | 612 RenderPass* main_pass = pass_list.back().get(); |
| 608 OverlayCandidateList candidate_list; | 613 OverlayCandidateList candidate_list; |
| 609 EXPECT_EQ(4U, main_pass->quad_list.size()); | 614 EXPECT_EQ(4U, main_pass->quad_list.size()); |
| 610 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 615 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 611 &candidate_list, &damage_rect_); | 616 &candidate_list, nullptr, |
| 617 &damage_rect_); |
| 612 ASSERT_EQ(1U, pass_list.size()); | 618 ASSERT_EQ(1U, pass_list.size()); |
| 613 ASSERT_EQ(3U, candidate_list.size()); | 619 ASSERT_EQ(3U, candidate_list.size()); |
| 614 | 620 |
| 615 // Check that the candidate quad is gone and that we now have two transparent | 621 // Check that the candidate quad is gone and that we now have two transparent |
| 616 // quads for the same region that was covered on the overlay. | 622 // quads for the same region that was covered on the overlay. |
| 617 EXPECT_EQ(5U, main_pass->quad_list.size()); | 623 EXPECT_EQ(5U, main_pass->quad_list.size()); |
| 618 const QuadList& quad_list = main_pass->quad_list; | 624 const QuadList& quad_list = main_pass->quad_list; |
| 619 Region transparent_quad_region; | 625 Region transparent_quad_region; |
| 620 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); | 626 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); |
| 621 it != quad_list.BackToFrontEnd(); ++it) { | 627 it != quad_list.BackToFrontEnd(); ++it) { |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 662 | 668 |
| 663 // Primary plane. | 669 // Primary plane. |
| 664 OverlayCandidate output_surface_plane; | 670 OverlayCandidate output_surface_plane; |
| 665 output_surface_plane.display_rect = gfx::RectF(kOverlayRect); | 671 output_surface_plane.display_rect = gfx::RectF(kOverlayRect); |
| 666 output_surface_plane.quad_rect_in_target_space = kOverlayRect; | 672 output_surface_plane.quad_rect_in_target_space = kOverlayRect; |
| 667 output_surface_plane.use_output_surface_for_resource = true; | 673 output_surface_plane.use_output_surface_for_resource = true; |
| 668 output_surface_plane.overlay_handled = true; | 674 output_surface_plane.overlay_handled = true; |
| 669 candidate_list.push_back(output_surface_plane); | 675 candidate_list.push_back(output_surface_plane); |
| 670 | 676 |
| 671 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 677 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 672 &candidate_list, &damage_rect_); | 678 &candidate_list, nullptr, |
| 673 DCHECK(!damage_rect_.IsEmpty()); | 679 &damage_rect_); |
| 680 EXPECT_EQ(2u, candidate_list.size()); |
| 681 EXPECT_TRUE(damage_rect_.IsEmpty()); |
| 674 } | 682 } |
| 675 | 683 |
| 676 TEST_F(SingleOverlayOnTopTest, SuccessfullOverlay) { | 684 TEST_F(SandwichTest, DamageRectNonEmpty) { |
| 685 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 686 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 687 pass->shared_quad_state_list.back(), pass.get()); |
| 688 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 689 pass->shared_quad_state_list.back(), |
| 690 pass.get()); |
| 691 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 692 pass->shared_quad_state_list.back(), pass.get()); |
| 693 damage_rect_ = kOverlayRect; |
| 694 |
| 695 RenderPassList pass_list; |
| 696 pass_list.push_back(pass.Pass()); |
| 697 |
| 698 // Check for potential candidates. |
| 699 OverlayCandidateList candidate_list; |
| 700 |
| 701 // Primary plane. |
| 702 OverlayCandidate output_surface_plane; |
| 703 output_surface_plane.display_rect = gfx::RectF(kOverlayRect); |
| 704 output_surface_plane.quad_rect_in_target_space = kOverlayRect; |
| 705 output_surface_plane.use_output_surface_for_resource = true; |
| 706 output_surface_plane.overlay_handled = true; |
| 707 candidate_list.push_back(output_surface_plane); |
| 708 |
| 709 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 710 &candidate_list, nullptr, |
| 711 &damage_rect_); |
| 712 EXPECT_EQ(3u, candidate_list.size()); |
| 713 EXPECT_EQ(damage_rect_, kOverlayRect); |
| 714 } |
| 715 |
| 716 TEST_F(SingleOverlayOnTopTest, SuccessfulOverlay) { |
| 677 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 717 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 678 TextureDrawQuad* original_quad = | 718 TextureDrawQuad* original_quad = |
| 679 CreateFullscreenCandidateQuad(resource_provider_.get(), | 719 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 680 pass->shared_quad_state_list.back(), | 720 pass->shared_quad_state_list.back(), |
| 681 pass.get()); | 721 pass.get()); |
| 682 unsigned original_resource_id = original_quad->resource_id(); | 722 unsigned original_resource_id = original_quad->resource_id(); |
| 683 | 723 |
| 684 // Add something behind it. | 724 // Add something behind it. |
| 685 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 725 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 686 pass->shared_quad_state_list.back(), pass.get()); | 726 pass->shared_quad_state_list.back(), pass.get()); |
| 687 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 727 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 688 pass->shared_quad_state_list.back(), pass.get()); | 728 pass->shared_quad_state_list.back(), pass.get()); |
| 689 | 729 |
| 690 RenderPassList pass_list; | 730 RenderPassList pass_list; |
| 691 pass_list.push_back(pass.Pass()); | 731 pass_list.push_back(pass.Pass()); |
| 692 | 732 |
| 693 // Check for potential candidates. | 733 // Check for potential candidates. |
| 694 OverlayCandidateList candidate_list; | 734 OverlayCandidateList candidate_list; |
| 695 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 735 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 696 &candidate_list, &damage_rect_); | 736 &candidate_list, nullptr, |
| 737 &damage_rect_); |
| 697 | 738 |
| 698 ASSERT_EQ(1U, pass_list.size()); | 739 ASSERT_EQ(1U, pass_list.size()); |
| 699 ASSERT_EQ(1U, candidate_list.size()); | 740 ASSERT_EQ(1U, candidate_list.size()); |
| 700 | 741 |
| 701 RenderPass* main_pass = pass_list.back().get(); | 742 RenderPass* main_pass = pass_list.back().get(); |
| 702 // Check that the quad is gone. | 743 // Check that the quad is gone. |
| 703 EXPECT_EQ(2U, main_pass->quad_list.size()); | 744 EXPECT_EQ(2U, main_pass->quad_list.size()); |
| 704 const QuadList& quad_list = main_pass->quad_list; | 745 const QuadList& quad_list = main_pass->quad_list; |
| 705 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); | 746 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); |
| 706 it != quad_list.BackToFrontEnd(); | 747 it != quad_list.BackToFrontEnd(); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 733 | 774 |
| 734 // Primary plane. | 775 // Primary plane. |
| 735 OverlayCandidate output_surface_plane; | 776 OverlayCandidate output_surface_plane; |
| 736 output_surface_plane.display_rect = gfx::RectF(kOverlayRect); | 777 output_surface_plane.display_rect = gfx::RectF(kOverlayRect); |
| 737 output_surface_plane.quad_rect_in_target_space = kOverlayRect; | 778 output_surface_plane.quad_rect_in_target_space = kOverlayRect; |
| 738 output_surface_plane.use_output_surface_for_resource = true; | 779 output_surface_plane.use_output_surface_for_resource = true; |
| 739 output_surface_plane.overlay_handled = true; | 780 output_surface_plane.overlay_handled = true; |
| 740 candidate_list.push_back(output_surface_plane); | 781 candidate_list.push_back(output_surface_plane); |
| 741 | 782 |
| 742 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 783 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 743 &candidate_list, &damage_rect_); | 784 &candidate_list, nullptr, |
| 785 &damage_rect_); |
| 744 DCHECK(damage_rect_.IsEmpty()); | 786 DCHECK(damage_rect_.IsEmpty()); |
| 745 } | 787 } |
| 746 | 788 |
| 747 TEST_F(SingleOverlayOnTopTest, NoCandidates) { | 789 TEST_F(SingleOverlayOnTopTest, NoCandidates) { |
| 748 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 790 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 749 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 791 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 750 pass->shared_quad_state_list.back(), pass.get()); | 792 pass->shared_quad_state_list.back(), pass.get()); |
| 751 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 793 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 752 pass->shared_quad_state_list.back(), pass.get()); | 794 pass->shared_quad_state_list.back(), pass.get()); |
| 753 | 795 |
| 754 RenderPassList pass_list; | 796 RenderPassList pass_list; |
| 755 pass_list.push_back(pass.Pass()); | 797 pass_list.push_back(pass.Pass()); |
| 756 | 798 |
| 757 RenderPassList original_pass_list; | 799 RenderPassList original_pass_list; |
| 758 RenderPass::CopyAll(pass_list, &original_pass_list); | 800 RenderPass::CopyAll(pass_list, &original_pass_list); |
| 759 | 801 |
| 760 OverlayCandidateList candidate_list; | 802 OverlayCandidateList candidate_list; |
| 761 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 803 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 762 &candidate_list, &damage_rect_); | 804 &candidate_list, nullptr, |
| 805 &damage_rect_); |
| 763 EXPECT_EQ(0U, candidate_list.size()); | 806 EXPECT_EQ(0U, candidate_list.size()); |
| 764 // There should be nothing new here. | 807 // There should be nothing new here. |
| 765 CompareRenderPassLists(pass_list, original_pass_list); | 808 CompareRenderPassLists(pass_list, original_pass_list); |
| 766 } | 809 } |
| 767 | 810 |
| 768 TEST_F(SingleOverlayOnTopTest, OccludedCandidates) { | 811 TEST_F(SingleOverlayOnTopTest, OccludedCandidates) { |
| 769 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 812 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 770 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 813 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 771 pass->shared_quad_state_list.back(), pass.get()); | 814 pass->shared_quad_state_list.back(), pass.get()); |
| 772 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 815 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 773 pass->shared_quad_state_list.back(), pass.get()); | 816 pass->shared_quad_state_list.back(), pass.get()); |
| 774 | 817 |
| 775 CreateFullscreenCandidateQuad(resource_provider_.get(), | 818 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 776 pass->shared_quad_state_list.back(), | 819 pass->shared_quad_state_list.back(), |
| 777 pass.get()); | 820 pass.get()); |
| 778 | 821 |
| 779 RenderPassList pass_list; | 822 RenderPassList pass_list; |
| 780 pass_list.push_back(pass.Pass()); | 823 pass_list.push_back(pass.Pass()); |
| 781 | 824 |
| 782 RenderPassList original_pass_list; | 825 RenderPassList original_pass_list; |
| 783 RenderPass::CopyAll(pass_list, &original_pass_list); | 826 RenderPass::CopyAll(pass_list, &original_pass_list); |
| 784 | 827 |
| 785 OverlayCandidateList candidate_list; | 828 OverlayCandidateList candidate_list; |
| 786 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 829 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 787 &candidate_list, &damage_rect_); | 830 &candidate_list, nullptr, |
| 831 &damage_rect_); |
| 788 EXPECT_EQ(0U, candidate_list.size()); | 832 EXPECT_EQ(0U, candidate_list.size()); |
| 789 // There should be nothing new here. | 833 // There should be nothing new here. |
| 790 CompareRenderPassLists(pass_list, original_pass_list); | 834 CompareRenderPassLists(pass_list, original_pass_list); |
| 791 } | 835 } |
| 792 | 836 |
| 793 // Test with multiple render passes. | 837 // Test with multiple render passes. |
| 794 TEST_F(SingleOverlayOnTopTest, MultipleRenderPasses) { | 838 TEST_F(SingleOverlayOnTopTest, MultipleRenderPasses) { |
| 795 RenderPassList pass_list; | 839 RenderPassList pass_list; |
| 796 pass_list.push_back(CreateRenderPass()); | 840 pass_list.push_back(CreateRenderPass()); |
| 797 | 841 |
| 798 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 842 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 799 CreateFullscreenCandidateQuad(resource_provider_.get(), | 843 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 800 pass->shared_quad_state_list.back(), | 844 pass->shared_quad_state_list.back(), |
| 801 pass.get()); | 845 pass.get()); |
| 802 | 846 |
| 803 // Add something behind it. | 847 // Add something behind it. |
| 804 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 848 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 805 pass->shared_quad_state_list.back(), pass.get()); | 849 pass->shared_quad_state_list.back(), pass.get()); |
| 806 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 850 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 807 pass->shared_quad_state_list.back(), pass.get()); | 851 pass->shared_quad_state_list.back(), pass.get()); |
| 808 | 852 |
| 809 pass_list.push_back(pass.Pass()); | 853 pass_list.push_back(pass.Pass()); |
| 810 | 854 |
| 811 RenderPassList original_pass_list; | 855 RenderPassList original_pass_list; |
| 812 RenderPass::CopyAll(pass_list, &original_pass_list); | 856 RenderPass::CopyAll(pass_list, &original_pass_list); |
| 813 | 857 |
| 814 // Check for potential candidates. | 858 // Check for potential candidates. |
| 815 OverlayCandidateList candidate_list; | 859 OverlayCandidateList candidate_list; |
| 816 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 860 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 817 &candidate_list, &damage_rect_); | 861 &candidate_list, nullptr, |
| 862 &damage_rect_); |
| 818 EXPECT_EQ(1U, candidate_list.size()); | 863 EXPECT_EQ(1U, candidate_list.size()); |
| 819 | 864 |
| 820 // This should be the same. | 865 // This should be the same. |
| 821 ASSERT_EQ(2U, pass_list.size()); | 866 ASSERT_EQ(2U, pass_list.size()); |
| 822 } | 867 } |
| 823 | 868 |
| 824 TEST_F(SingleOverlayOnTopTest, RejectPremultipliedAlpha) { | 869 TEST_F(SingleOverlayOnTopTest, RejectPremultipliedAlpha) { |
| 825 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 870 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 826 TextureDrawQuad* quad = | 871 TextureDrawQuad* quad = |
| 827 CreateFullscreenCandidateQuad(resource_provider_.get(), | 872 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 828 pass->shared_quad_state_list.back(), | 873 pass->shared_quad_state_list.back(), |
| 829 pass.get()); | 874 pass.get()); |
| 830 quad->premultiplied_alpha = true; | 875 quad->premultiplied_alpha = true; |
| 831 | 876 |
| 832 RenderPassList pass_list; | 877 RenderPassList pass_list; |
| 833 pass_list.push_back(pass.Pass()); | 878 pass_list.push_back(pass.Pass()); |
| 834 OverlayCandidateList candidate_list; | 879 OverlayCandidateList candidate_list; |
| 835 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 880 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 836 &candidate_list, &damage_rect_); | 881 &candidate_list, nullptr, |
| 882 &damage_rect_); |
| 837 EXPECT_EQ(1U, pass_list.size()); | 883 EXPECT_EQ(1U, pass_list.size()); |
| 838 EXPECT_EQ(0U, candidate_list.size()); | 884 EXPECT_EQ(0U, candidate_list.size()); |
| 839 } | 885 } |
| 840 | 886 |
| 841 TEST_F(SingleOverlayOnTopTest, RejectBlending) { | 887 TEST_F(SingleOverlayOnTopTest, RejectBlending) { |
| 842 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 888 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 843 TextureDrawQuad* quad = | 889 TextureDrawQuad* quad = |
| 844 CreateFullscreenCandidateQuad(resource_provider_.get(), | 890 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 845 pass->shared_quad_state_list.back(), | 891 pass->shared_quad_state_list.back(), |
| 846 pass.get()); | 892 pass.get()); |
| 847 quad->needs_blending = true; | 893 quad->needs_blending = true; |
| 848 | 894 |
| 849 RenderPassList pass_list; | 895 RenderPassList pass_list; |
| 850 pass_list.push_back(pass.Pass()); | 896 pass_list.push_back(pass.Pass()); |
| 851 OverlayCandidateList candidate_list; | 897 OverlayCandidateList candidate_list; |
| 852 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 898 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 853 &candidate_list, &damage_rect_); | 899 &candidate_list, nullptr, |
| 900 &damage_rect_); |
| 854 ASSERT_EQ(1U, pass_list.size()); | 901 ASSERT_EQ(1U, pass_list.size()); |
| 855 EXPECT_EQ(0U, candidate_list.size()); | 902 EXPECT_EQ(0U, candidate_list.size()); |
| 856 } | 903 } |
| 857 | 904 |
| 858 TEST_F(SingleOverlayOnTopTest, RejectBackgroundColor) { | 905 TEST_F(SingleOverlayOnTopTest, RejectBackgroundColor) { |
| 859 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 906 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 860 TextureDrawQuad* quad = | 907 TextureDrawQuad* quad = |
| 861 CreateFullscreenCandidateQuad(resource_provider_.get(), | 908 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 862 pass->shared_quad_state_list.back(), | 909 pass->shared_quad_state_list.back(), |
| 863 pass.get()); | 910 pass.get()); |
| 864 quad->background_color = SK_ColorBLACK; | 911 quad->background_color = SK_ColorBLACK; |
| 865 | 912 |
| 866 RenderPassList pass_list; | 913 RenderPassList pass_list; |
| 867 pass_list.push_back(pass.Pass()); | 914 pass_list.push_back(pass.Pass()); |
| 868 OverlayCandidateList candidate_list; | 915 OverlayCandidateList candidate_list; |
| 869 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 916 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 870 &candidate_list, &damage_rect_); | 917 &candidate_list, nullptr, |
| 918 &damage_rect_); |
| 871 ASSERT_EQ(1U, pass_list.size()); | 919 ASSERT_EQ(1U, pass_list.size()); |
| 872 EXPECT_EQ(0U, candidate_list.size()); | 920 EXPECT_EQ(0U, candidate_list.size()); |
| 873 } | 921 } |
| 874 | 922 |
| 875 TEST_F(SingleOverlayOnTopTest, RejectBlendMode) { | 923 TEST_F(SingleOverlayOnTopTest, RejectBlendMode) { |
| 876 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 924 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 877 CreateFullscreenCandidateQuad(resource_provider_.get(), | 925 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 878 pass->shared_quad_state_list.back(), | 926 pass->shared_quad_state_list.back(), |
| 879 pass.get()); | 927 pass.get()); |
| 880 pass->shared_quad_state_list.back()->blend_mode = SkXfermode::kScreen_Mode; | 928 pass->shared_quad_state_list.back()->blend_mode = SkXfermode::kScreen_Mode; |
| 881 | 929 |
| 882 RenderPassList pass_list; | 930 RenderPassList pass_list; |
| 883 pass_list.push_back(pass.Pass()); | 931 pass_list.push_back(pass.Pass()); |
| 884 OverlayCandidateList candidate_list; | 932 OverlayCandidateList candidate_list; |
| 885 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 933 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 886 &candidate_list, &damage_rect_); | 934 &candidate_list, nullptr, |
| 935 &damage_rect_); |
| 887 ASSERT_EQ(1U, pass_list.size()); | 936 ASSERT_EQ(1U, pass_list.size()); |
| 888 EXPECT_EQ(0U, candidate_list.size()); | 937 EXPECT_EQ(0U, candidate_list.size()); |
| 889 } | 938 } |
| 890 | 939 |
| 891 TEST_F(SingleOverlayOnTopTest, RejectOpacity) { | 940 TEST_F(SingleOverlayOnTopTest, RejectOpacity) { |
| 892 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 941 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 893 CreateFullscreenCandidateQuad(resource_provider_.get(), | 942 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 894 pass->shared_quad_state_list.back(), | 943 pass->shared_quad_state_list.back(), |
| 895 pass.get()); | 944 pass.get()); |
| 896 pass->shared_quad_state_list.back()->opacity = 0.5f; | 945 pass->shared_quad_state_list.back()->opacity = 0.5f; |
| 897 | 946 |
| 898 RenderPassList pass_list; | 947 RenderPassList pass_list; |
| 899 pass_list.push_back(pass.Pass()); | 948 pass_list.push_back(pass.Pass()); |
| 900 OverlayCandidateList candidate_list; | 949 OverlayCandidateList candidate_list; |
| 901 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 950 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 902 &candidate_list, &damage_rect_); | 951 &candidate_list, nullptr, |
| 952 &damage_rect_); |
| 903 ASSERT_EQ(1U, pass_list.size()); | 953 ASSERT_EQ(1U, pass_list.size()); |
| 904 EXPECT_EQ(0U, candidate_list.size()); | 954 EXPECT_EQ(0U, candidate_list.size()); |
| 905 } | 955 } |
| 906 | 956 |
| 907 TEST_F(SingleOverlayOnTopTest, RejectNonAxisAlignedTransform) { | 957 TEST_F(SingleOverlayOnTopTest, RejectNonAxisAlignedTransform) { |
| 908 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 958 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 909 CreateFullscreenCandidateQuad(resource_provider_.get(), | 959 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 910 pass->shared_quad_state_list.back(), | 960 pass->shared_quad_state_list.back(), |
| 911 pass.get()); | 961 pass.get()); |
| 912 pass->shared_quad_state_list.back() | 962 pass->shared_quad_state_list.back() |
| 913 ->quad_to_target_transform.RotateAboutXAxis(45.f); | 963 ->quad_to_target_transform.RotateAboutXAxis(45.f); |
| 914 | 964 |
| 915 RenderPassList pass_list; | 965 RenderPassList pass_list; |
| 916 pass_list.push_back(pass.Pass()); | 966 pass_list.push_back(pass.Pass()); |
| 917 OverlayCandidateList candidate_list; | 967 OverlayCandidateList candidate_list; |
| 918 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 968 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 919 &candidate_list, &damage_rect_); | 969 &candidate_list, nullptr, |
| 970 &damage_rect_); |
| 920 ASSERT_EQ(1U, pass_list.size()); | 971 ASSERT_EQ(1U, pass_list.size()); |
| 921 EXPECT_EQ(0U, candidate_list.size()); | 972 EXPECT_EQ(0U, candidate_list.size()); |
| 922 } | 973 } |
| 923 | 974 |
| 924 TEST_F(SingleOverlayOnTopTest, AllowClipped) { | 975 TEST_F(SingleOverlayOnTopTest, AllowClipped) { |
| 925 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 976 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 926 CreateFullscreenCandidateQuad(resource_provider_.get(), | 977 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 927 pass->shared_quad_state_list.back(), | 978 pass->shared_quad_state_list.back(), |
| 928 pass.get()); | 979 pass.get()); |
| 929 pass->shared_quad_state_list.back()->is_clipped = true; | 980 pass->shared_quad_state_list.back()->is_clipped = true; |
| 930 pass->shared_quad_state_list.back()->clip_rect = kOverlayClipRect; | 981 pass->shared_quad_state_list.back()->clip_rect = kOverlayClipRect; |
| 931 | 982 |
| 932 RenderPassList pass_list; | 983 RenderPassList pass_list; |
| 933 pass_list.push_back(pass.Pass()); | 984 pass_list.push_back(pass.Pass()); |
| 934 OverlayCandidateList candidate_list; | 985 OverlayCandidateList candidate_list; |
| 935 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 986 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 936 &candidate_list, &damage_rect_); | 987 &candidate_list, nullptr, |
| 988 &damage_rect_); |
| 937 ASSERT_EQ(1U, pass_list.size()); | 989 ASSERT_EQ(1U, pass_list.size()); |
| 938 EXPECT_EQ(1U, candidate_list.size()); | 990 EXPECT_EQ(1U, candidate_list.size()); |
| 939 } | 991 } |
| 940 | 992 |
| 941 TEST_F(SingleOverlayOnTopTest, AllowVerticalFlip) { | 993 TEST_F(SingleOverlayOnTopTest, AllowVerticalFlip) { |
| 942 gfx::Rect rect = kOverlayRect; | 994 gfx::Rect rect = kOverlayRect; |
| 943 rect.set_width(rect.width() / 2); | 995 rect.set_width(rect.width() / 2); |
| 944 rect.Offset(0, -rect.height()); | 996 rect.Offset(0, -rect.height()); |
| 945 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 997 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 946 CreateCandidateQuadAt(resource_provider_.get(), | 998 CreateCandidateQuadAt(resource_provider_.get(), |
| 947 pass->shared_quad_state_list.back(), pass.get(), rect); | 999 pass->shared_quad_state_list.back(), pass.get(), rect); |
| 948 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(2.0f, | 1000 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(2.0f, |
| 949 -1.0f); | 1001 -1.0f); |
| 950 | 1002 |
| 951 RenderPassList pass_list; | 1003 RenderPassList pass_list; |
| 952 pass_list.push_back(pass.Pass()); | 1004 pass_list.push_back(pass.Pass()); |
| 953 OverlayCandidateList candidate_list; | 1005 OverlayCandidateList candidate_list; |
| 954 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1006 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 955 &candidate_list, &damage_rect_); | 1007 &candidate_list, nullptr, |
| 1008 &damage_rect_); |
| 956 ASSERT_EQ(1U, pass_list.size()); | 1009 ASSERT_EQ(1U, pass_list.size()); |
| 957 ASSERT_EQ(1U, candidate_list.size()); | 1010 ASSERT_EQ(1U, candidate_list.size()); |
| 958 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_VERTICAL, | 1011 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_VERTICAL, |
| 959 candidate_list.back().transform); | 1012 candidate_list.back().transform); |
| 960 } | 1013 } |
| 961 | 1014 |
| 962 TEST_F(SingleOverlayOnTopTest, AllowHorizontalFlip) { | 1015 TEST_F(SingleOverlayOnTopTest, AllowHorizontalFlip) { |
| 963 gfx::Rect rect = kOverlayRect; | 1016 gfx::Rect rect = kOverlayRect; |
| 964 rect.set_height(rect.height() / 2); | 1017 rect.set_height(rect.height() / 2); |
| 965 rect.Offset(-rect.width(), 0); | 1018 rect.Offset(-rect.width(), 0); |
| 966 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1019 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 967 CreateCandidateQuadAt(resource_provider_.get(), | 1020 CreateCandidateQuadAt(resource_provider_.get(), |
| 968 pass->shared_quad_state_list.back(), pass.get(), rect); | 1021 pass->shared_quad_state_list.back(), pass.get(), rect); |
| 969 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(-1.0f, | 1022 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(-1.0f, |
| 970 2.0f); | 1023 2.0f); |
| 971 | 1024 |
| 972 RenderPassList pass_list; | 1025 RenderPassList pass_list; |
| 973 pass_list.push_back(pass.Pass()); | 1026 pass_list.push_back(pass.Pass()); |
| 974 OverlayCandidateList candidate_list; | 1027 OverlayCandidateList candidate_list; |
| 975 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1028 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 976 &candidate_list, &damage_rect_); | 1029 &candidate_list, nullptr, |
| 1030 &damage_rect_); |
| 977 ASSERT_EQ(1U, pass_list.size()); | 1031 ASSERT_EQ(1U, pass_list.size()); |
| 978 ASSERT_EQ(1U, candidate_list.size()); | 1032 ASSERT_EQ(1U, candidate_list.size()); |
| 979 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_HORIZONTAL, | 1033 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_HORIZONTAL, |
| 980 candidate_list.back().transform); | 1034 candidate_list.back().transform); |
| 981 } | 1035 } |
| 982 | 1036 |
| 983 TEST_F(SingleOverlayOnTopTest, AllowPositiveScaleTransform) { | 1037 TEST_F(SingleOverlayOnTopTest, AllowPositiveScaleTransform) { |
| 984 gfx::Rect rect = kOverlayRect; | 1038 gfx::Rect rect = kOverlayRect; |
| 985 rect.set_width(rect.width() / 2); | 1039 rect.set_width(rect.width() / 2); |
| 986 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1040 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 987 CreateCandidateQuadAt(resource_provider_.get(), | 1041 CreateCandidateQuadAt(resource_provider_.get(), |
| 988 pass->shared_quad_state_list.back(), pass.get(), rect); | 1042 pass->shared_quad_state_list.back(), pass.get(), rect); |
| 989 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(2.0f, | 1043 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(2.0f, |
| 990 1.0f); | 1044 1.0f); |
| 991 | 1045 |
| 992 RenderPassList pass_list; | 1046 RenderPassList pass_list; |
| 993 pass_list.push_back(pass.Pass()); | 1047 pass_list.push_back(pass.Pass()); |
| 994 OverlayCandidateList candidate_list; | 1048 OverlayCandidateList candidate_list; |
| 995 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1049 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 996 &candidate_list, &damage_rect_); | 1050 &candidate_list, nullptr, |
| 1051 &damage_rect_); |
| 997 ASSERT_EQ(1U, pass_list.size()); | 1052 ASSERT_EQ(1U, pass_list.size()); |
| 998 EXPECT_EQ(1U, candidate_list.size()); | 1053 EXPECT_EQ(1U, candidate_list.size()); |
| 999 } | 1054 } |
| 1000 | 1055 |
| 1001 TEST_F(SingleOverlayOnTopTest, Allow90DegreeRotation) { | 1056 TEST_F(SingleOverlayOnTopTest, Allow90DegreeRotation) { |
| 1002 gfx::Rect rect = kOverlayRect; | 1057 gfx::Rect rect = kOverlayRect; |
| 1003 rect.Offset(0, -rect.height()); | 1058 rect.Offset(0, -rect.height()); |
| 1004 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1059 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1005 CreateCandidateQuadAt(resource_provider_.get(), | 1060 CreateCandidateQuadAt(resource_provider_.get(), |
| 1006 pass->shared_quad_state_list.back(), pass.get(), rect); | 1061 pass->shared_quad_state_list.back(), pass.get(), rect); |
| 1007 pass->shared_quad_state_list.back() | 1062 pass->shared_quad_state_list.back() |
| 1008 ->quad_to_target_transform.RotateAboutZAxis(90.f); | 1063 ->quad_to_target_transform.RotateAboutZAxis(90.f); |
| 1009 | 1064 |
| 1010 RenderPassList pass_list; | 1065 RenderPassList pass_list; |
| 1011 pass_list.push_back(pass.Pass()); | 1066 pass_list.push_back(pass.Pass()); |
| 1012 OverlayCandidateList candidate_list; | 1067 OverlayCandidateList candidate_list; |
| 1013 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1068 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 1014 &candidate_list, &damage_rect_); | 1069 &candidate_list, nullptr, |
| 1070 &damage_rect_); |
| 1015 ASSERT_EQ(1U, pass_list.size()); | 1071 ASSERT_EQ(1U, pass_list.size()); |
| 1016 ASSERT_EQ(1U, candidate_list.size()); | 1072 ASSERT_EQ(1U, candidate_list.size()); |
| 1017 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_90, candidate_list.back().transform); | 1073 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_90, candidate_list.back().transform); |
| 1018 } | 1074 } |
| 1019 | 1075 |
| 1020 TEST_F(SingleOverlayOnTopTest, Allow180DegreeRotation) { | 1076 TEST_F(SingleOverlayOnTopTest, Allow180DegreeRotation) { |
| 1021 gfx::Rect rect = kOverlayRect; | 1077 gfx::Rect rect = kOverlayRect; |
| 1022 rect.Offset(-rect.width(), -rect.height()); | 1078 rect.Offset(-rect.width(), -rect.height()); |
| 1023 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1079 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1024 CreateCandidateQuadAt(resource_provider_.get(), | 1080 CreateCandidateQuadAt(resource_provider_.get(), |
| 1025 pass->shared_quad_state_list.back(), pass.get(), rect); | 1081 pass->shared_quad_state_list.back(), pass.get(), rect); |
| 1026 pass->shared_quad_state_list.back() | 1082 pass->shared_quad_state_list.back() |
| 1027 ->quad_to_target_transform.RotateAboutZAxis(180.f); | 1083 ->quad_to_target_transform.RotateAboutZAxis(180.f); |
| 1028 | 1084 |
| 1029 RenderPassList pass_list; | 1085 RenderPassList pass_list; |
| 1030 pass_list.push_back(pass.Pass()); | 1086 pass_list.push_back(pass.Pass()); |
| 1031 OverlayCandidateList candidate_list; | 1087 OverlayCandidateList candidate_list; |
| 1032 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1088 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 1033 &candidate_list, &damage_rect_); | 1089 &candidate_list, nullptr, |
| 1090 &damage_rect_); |
| 1034 ASSERT_EQ(1U, pass_list.size()); | 1091 ASSERT_EQ(1U, pass_list.size()); |
| 1035 ASSERT_EQ(1U, candidate_list.size()); | 1092 ASSERT_EQ(1U, candidate_list.size()); |
| 1036 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_180, candidate_list.back().transform); | 1093 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_180, candidate_list.back().transform); |
| 1037 } | 1094 } |
| 1038 | 1095 |
| 1039 TEST_F(SingleOverlayOnTopTest, Allow270DegreeRotation) { | 1096 TEST_F(SingleOverlayOnTopTest, Allow270DegreeRotation) { |
| 1040 gfx::Rect rect = kOverlayRect; | 1097 gfx::Rect rect = kOverlayRect; |
| 1041 rect.Offset(-rect.width(), 0); | 1098 rect.Offset(-rect.width(), 0); |
| 1042 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1099 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1043 CreateCandidateQuadAt(resource_provider_.get(), | 1100 CreateCandidateQuadAt(resource_provider_.get(), |
| 1044 pass->shared_quad_state_list.back(), pass.get(), rect); | 1101 pass->shared_quad_state_list.back(), pass.get(), rect); |
| 1045 pass->shared_quad_state_list.back() | 1102 pass->shared_quad_state_list.back() |
| 1046 ->quad_to_target_transform.RotateAboutZAxis(270.f); | 1103 ->quad_to_target_transform.RotateAboutZAxis(270.f); |
| 1047 | 1104 |
| 1048 RenderPassList pass_list; | 1105 RenderPassList pass_list; |
| 1049 pass_list.push_back(pass.Pass()); | 1106 pass_list.push_back(pass.Pass()); |
| 1050 OverlayCandidateList candidate_list; | 1107 OverlayCandidateList candidate_list; |
| 1051 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1108 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 1052 &candidate_list, &damage_rect_); | 1109 &candidate_list, nullptr, |
| 1110 &damage_rect_); |
| 1053 ASSERT_EQ(1U, pass_list.size()); | 1111 ASSERT_EQ(1U, pass_list.size()); |
| 1054 ASSERT_EQ(1U, candidate_list.size()); | 1112 ASSERT_EQ(1U, candidate_list.size()); |
| 1055 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_270, candidate_list.back().transform); | 1113 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_270, candidate_list.back().transform); |
| 1056 } | 1114 } |
| 1057 | 1115 |
| 1058 TEST_F(SingleOverlayOnTopTest, AllowNotTopIfNotOccluded) { | 1116 TEST_F(SingleOverlayOnTopTest, AllowNotTopIfNotOccluded) { |
| 1059 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1117 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1060 CreateOpaqueQuadAt(resource_provider_.get(), | 1118 CreateOpaqueQuadAt(resource_provider_.get(), |
| 1061 pass->shared_quad_state_list.back(), pass.get(), | 1119 pass->shared_quad_state_list.back(), pass.get(), |
| 1062 kOverlayTopLeftRect); | 1120 kOverlayTopLeftRect); |
| 1063 CreateCandidateQuadAt(resource_provider_.get(), | 1121 CreateCandidateQuadAt(resource_provider_.get(), |
| 1064 pass->shared_quad_state_list.back(), | 1122 pass->shared_quad_state_list.back(), |
| 1065 pass.get(), | 1123 pass.get(), |
| 1066 kOverlayBottomRightRect); | 1124 kOverlayBottomRightRect); |
| 1067 | 1125 |
| 1068 RenderPassList pass_list; | 1126 RenderPassList pass_list; |
| 1069 pass_list.push_back(pass.Pass()); | 1127 pass_list.push_back(pass.Pass()); |
| 1070 | 1128 |
| 1071 RenderPassList original_pass_list; | 1129 RenderPassList original_pass_list; |
| 1072 RenderPass::CopyAll(pass_list, &original_pass_list); | 1130 RenderPass::CopyAll(pass_list, &original_pass_list); |
| 1073 | 1131 |
| 1074 OverlayCandidateList candidate_list; | 1132 OverlayCandidateList candidate_list; |
| 1075 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1133 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 1076 &candidate_list, &damage_rect_); | 1134 &candidate_list, nullptr, |
| 1135 &damage_rect_); |
| 1077 EXPECT_EQ(1U, pass_list.size()); | 1136 EXPECT_EQ(1U, pass_list.size()); |
| 1078 EXPECT_EQ(1U, candidate_list.size()); | 1137 EXPECT_EQ(1U, candidate_list.size()); |
| 1079 } | 1138 } |
| 1080 | 1139 |
| 1081 TEST_F(SingleOverlayOnTopTest, AllowTransparentOnTop) { | 1140 TEST_F(SingleOverlayOnTopTest, AllowTransparentOnTop) { |
| 1082 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1141 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1083 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); | 1142 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); |
| 1084 shared_state->opacity = 0.f; | 1143 shared_state->opacity = 0.f; |
| 1085 CreateSolidColorQuadAt(shared_state, SK_ColorBLACK, pass.get(), | 1144 CreateSolidColorQuadAt(shared_state, SK_ColorBLACK, pass.get(), |
| 1086 kOverlayBottomRightRect); | 1145 kOverlayBottomRightRect); |
| 1087 shared_state = pass->CreateAndAppendSharedQuadState(); | 1146 shared_state = pass->CreateAndAppendSharedQuadState(); |
| 1088 shared_state->opacity = 1.f; | 1147 shared_state->opacity = 1.f; |
| 1089 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(), | 1148 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(), |
| 1090 kOverlayBottomRightRect); | 1149 kOverlayBottomRightRect); |
| 1091 | 1150 |
| 1092 RenderPassList pass_list; | 1151 RenderPassList pass_list; |
| 1093 pass_list.push_back(pass.Pass()); | 1152 pass_list.push_back(pass.Pass()); |
| 1094 | 1153 |
| 1095 RenderPassList original_pass_list; | 1154 RenderPassList original_pass_list; |
| 1096 RenderPass::CopyAll(pass_list, &original_pass_list); | 1155 RenderPass::CopyAll(pass_list, &original_pass_list); |
| 1097 | 1156 |
| 1098 OverlayCandidateList candidate_list; | 1157 OverlayCandidateList candidate_list; |
| 1099 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1158 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 1100 &candidate_list, &damage_rect_); | 1159 &candidate_list, nullptr, |
| 1160 &damage_rect_); |
| 1101 EXPECT_EQ(1U, pass_list.size()); | 1161 EXPECT_EQ(1U, pass_list.size()); |
| 1102 EXPECT_EQ(1U, candidate_list.size()); | 1162 EXPECT_EQ(1U, candidate_list.size()); |
| 1103 } | 1163 } |
| 1104 | 1164 |
| 1105 TEST_F(SingleOverlayOnTopTest, AllowTransparentColorOnTop) { | 1165 TEST_F(SingleOverlayOnTopTest, AllowTransparentColorOnTop) { |
| 1106 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1166 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1107 CreateSolidColorQuadAt(pass->shared_quad_state_list.back(), | 1167 CreateSolidColorQuadAt(pass->shared_quad_state_list.back(), |
| 1108 SK_ColorTRANSPARENT, pass.get(), | 1168 SK_ColorTRANSPARENT, pass.get(), |
| 1109 kOverlayBottomRightRect); | 1169 kOverlayBottomRightRect); |
| 1110 CreateCandidateQuadAt(resource_provider_.get(), | 1170 CreateCandidateQuadAt(resource_provider_.get(), |
| 1111 pass->shared_quad_state_list.back(), pass.get(), | 1171 pass->shared_quad_state_list.back(), pass.get(), |
| 1112 kOverlayBottomRightRect); | 1172 kOverlayBottomRightRect); |
| 1113 | 1173 |
| 1114 RenderPassList pass_list; | 1174 RenderPassList pass_list; |
| 1115 pass_list.push_back(pass.Pass()); | 1175 pass_list.push_back(pass.Pass()); |
| 1116 | 1176 |
| 1117 RenderPassList original_pass_list; | 1177 RenderPassList original_pass_list; |
| 1118 RenderPass::CopyAll(pass_list, &original_pass_list); | 1178 RenderPass::CopyAll(pass_list, &original_pass_list); |
| 1119 | 1179 |
| 1120 OverlayCandidateList candidate_list; | 1180 OverlayCandidateList candidate_list; |
| 1121 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1181 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 1122 &candidate_list, &damage_rect_); | 1182 &candidate_list, nullptr, |
| 1183 &damage_rect_); |
| 1123 EXPECT_EQ(1U, pass_list.size()); | 1184 EXPECT_EQ(1U, pass_list.size()); |
| 1124 EXPECT_EQ(1U, candidate_list.size()); | 1185 EXPECT_EQ(1U, candidate_list.size()); |
| 1125 } | 1186 } |
| 1126 | 1187 |
| 1127 TEST_F(SingleOverlayOnTopTest, RejectOpaqueColorOnTop) { | 1188 TEST_F(SingleOverlayOnTopTest, RejectOpaqueColorOnTop) { |
| 1128 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1189 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1129 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); | 1190 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); |
| 1130 shared_state->opacity = 0.5f; | 1191 shared_state->opacity = 0.5f; |
| 1131 CreateSolidColorQuadAt(shared_state, SK_ColorBLACK, pass.get(), | 1192 CreateSolidColorQuadAt(shared_state, SK_ColorBLACK, pass.get(), |
| 1132 kOverlayBottomRightRect); | 1193 kOverlayBottomRightRect); |
| 1133 shared_state = pass->CreateAndAppendSharedQuadState(); | 1194 shared_state = pass->CreateAndAppendSharedQuadState(); |
| 1134 shared_state->opacity = 1.f; | 1195 shared_state->opacity = 1.f; |
| 1135 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(), | 1196 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(), |
| 1136 kOverlayBottomRightRect); | 1197 kOverlayBottomRightRect); |
| 1137 | 1198 |
| 1138 RenderPassList pass_list; | 1199 RenderPassList pass_list; |
| 1139 pass_list.push_back(pass.Pass()); | 1200 pass_list.push_back(pass.Pass()); |
| 1140 | 1201 |
| 1141 RenderPassList original_pass_list; | 1202 RenderPassList original_pass_list; |
| 1142 RenderPass::CopyAll(pass_list, &original_pass_list); | 1203 RenderPass::CopyAll(pass_list, &original_pass_list); |
| 1143 | 1204 |
| 1144 OverlayCandidateList candidate_list; | 1205 OverlayCandidateList candidate_list; |
| 1145 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1206 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 1146 &candidate_list, &damage_rect_); | 1207 &candidate_list, nullptr, |
| 1208 &damage_rect_); |
| 1147 EXPECT_EQ(1U, pass_list.size()); | 1209 EXPECT_EQ(1U, pass_list.size()); |
| 1148 EXPECT_EQ(0U, candidate_list.size()); | 1210 EXPECT_EQ(0U, candidate_list.size()); |
| 1149 } | 1211 } |
| 1150 | 1212 |
| 1151 TEST_F(SingleOverlayOnTopTest, RejectTransparentColorOnTopWithoutBlending) { | 1213 TEST_F(SingleOverlayOnTopTest, RejectTransparentColorOnTopWithoutBlending) { |
| 1152 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1214 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1153 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); | 1215 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); |
| 1154 CreateSolidColorQuadAt(shared_state, SK_ColorTRANSPARENT, pass.get(), | 1216 CreateSolidColorQuadAt(shared_state, SK_ColorTRANSPARENT, pass.get(), |
| 1155 kOverlayBottomRightRect)->opaque_rect = | 1217 kOverlayBottomRightRect)->opaque_rect = |
| 1156 kOverlayBottomRightRect; | 1218 kOverlayBottomRightRect; |
| 1157 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(), | 1219 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(), |
| 1158 kOverlayBottomRightRect); | 1220 kOverlayBottomRightRect); |
| 1159 | 1221 |
| 1160 RenderPassList pass_list; | 1222 RenderPassList pass_list; |
| 1161 pass_list.push_back(pass.Pass()); | 1223 pass_list.push_back(pass.Pass()); |
| 1162 | 1224 |
| 1163 RenderPassList original_pass_list; | 1225 RenderPassList original_pass_list; |
| 1164 RenderPass::CopyAll(pass_list, &original_pass_list); | 1226 RenderPass::CopyAll(pass_list, &original_pass_list); |
| 1165 | 1227 |
| 1166 OverlayCandidateList candidate_list; | 1228 OverlayCandidateList candidate_list; |
| 1167 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1229 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 1168 &candidate_list, &damage_rect_); | 1230 &candidate_list, nullptr, |
| 1231 &damage_rect_); |
| 1169 EXPECT_EQ(1U, pass_list.size()); | 1232 EXPECT_EQ(1U, pass_list.size()); |
| 1170 EXPECT_EQ(0U, candidate_list.size()); | 1233 EXPECT_EQ(0U, candidate_list.size()); |
| 1171 } | 1234 } |
| 1172 | 1235 |
| 1173 TEST_F(SingleOverlayOnTopTest, RejectVideoSwapTransform) { | 1236 TEST_F(SingleOverlayOnTopTest, RejectVideoSwapTransform) { |
| 1174 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1237 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1175 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), | 1238 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), |
| 1176 pass->shared_quad_state_list.back(), | 1239 pass->shared_quad_state_list.back(), |
| 1177 pass.get(), kSwapTransform); | 1240 pass.get(), kSwapTransform); |
| 1178 | 1241 |
| 1179 RenderPassList pass_list; | 1242 RenderPassList pass_list; |
| 1180 pass_list.push_back(pass.Pass()); | 1243 pass_list.push_back(pass.Pass()); |
| 1181 OverlayCandidateList candidate_list; | 1244 OverlayCandidateList candidate_list; |
| 1182 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1245 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 1183 &candidate_list, &damage_rect_); | 1246 &candidate_list, nullptr, |
| 1247 &damage_rect_); |
| 1184 ASSERT_EQ(1U, pass_list.size()); | 1248 ASSERT_EQ(1U, pass_list.size()); |
| 1185 EXPECT_EQ(0U, candidate_list.size()); | 1249 EXPECT_EQ(0U, candidate_list.size()); |
| 1186 } | 1250 } |
| 1187 | 1251 |
| 1188 TEST_F(SingleOverlayOnTopTest, AllowVideoXMirrorTransform) { | 1252 TEST_F(SingleOverlayOnTopTest, AllowVideoXMirrorTransform) { |
| 1189 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1253 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1190 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), | 1254 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), |
| 1191 pass->shared_quad_state_list.back(), | 1255 pass->shared_quad_state_list.back(), |
| 1192 pass.get(), kXMirrorTransform); | 1256 pass.get(), kXMirrorTransform); |
| 1193 | 1257 |
| 1194 RenderPassList pass_list; | 1258 RenderPassList pass_list; |
| 1195 pass_list.push_back(pass.Pass()); | 1259 pass_list.push_back(pass.Pass()); |
| 1196 OverlayCandidateList candidate_list; | 1260 OverlayCandidateList candidate_list; |
| 1197 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1261 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 1198 &candidate_list, &damage_rect_); | 1262 &candidate_list, nullptr, |
| 1263 &damage_rect_); |
| 1199 ASSERT_EQ(1U, pass_list.size()); | 1264 ASSERT_EQ(1U, pass_list.size()); |
| 1200 EXPECT_EQ(1U, candidate_list.size()); | 1265 EXPECT_EQ(1U, candidate_list.size()); |
| 1201 } | 1266 } |
| 1202 | 1267 |
| 1203 TEST_F(SingleOverlayOnTopTest, AllowVideoBothMirrorTransform) { | 1268 TEST_F(SingleOverlayOnTopTest, AllowVideoBothMirrorTransform) { |
| 1204 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1269 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1205 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), | 1270 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), |
| 1206 pass->shared_quad_state_list.back(), | 1271 pass->shared_quad_state_list.back(), |
| 1207 pass.get(), kBothMirrorTransform); | 1272 pass.get(), kBothMirrorTransform); |
| 1208 | 1273 |
| 1209 RenderPassList pass_list; | 1274 RenderPassList pass_list; |
| 1210 pass_list.push_back(pass.Pass()); | 1275 pass_list.push_back(pass.Pass()); |
| 1211 OverlayCandidateList candidate_list; | 1276 OverlayCandidateList candidate_list; |
| 1212 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1277 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 1213 &candidate_list, &damage_rect_); | 1278 &candidate_list, nullptr, |
| 1279 &damage_rect_); |
| 1214 ASSERT_EQ(1U, pass_list.size()); | 1280 ASSERT_EQ(1U, pass_list.size()); |
| 1215 EXPECT_EQ(1U, candidate_list.size()); | 1281 EXPECT_EQ(1U, candidate_list.size()); |
| 1216 } | 1282 } |
| 1217 | 1283 |
| 1218 TEST_F(SingleOverlayOnTopTest, AllowVideoNormalTransform) { | 1284 TEST_F(SingleOverlayOnTopTest, AllowVideoNormalTransform) { |
| 1219 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1285 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1220 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), | 1286 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), |
| 1221 pass->shared_quad_state_list.back(), | 1287 pass->shared_quad_state_list.back(), |
| 1222 pass.get(), kNormalTransform); | 1288 pass.get(), kNormalTransform); |
| 1223 | 1289 |
| 1224 RenderPassList pass_list; | 1290 RenderPassList pass_list; |
| 1225 pass_list.push_back(pass.Pass()); | 1291 pass_list.push_back(pass.Pass()); |
| 1226 OverlayCandidateList candidate_list; | 1292 OverlayCandidateList candidate_list; |
| 1227 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1293 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 1228 &candidate_list, &damage_rect_); | 1294 &candidate_list, nullptr, |
| 1295 &damage_rect_); |
| 1229 ASSERT_EQ(1U, pass_list.size()); | 1296 ASSERT_EQ(1U, pass_list.size()); |
| 1230 EXPECT_EQ(1U, candidate_list.size()); | 1297 EXPECT_EQ(1U, candidate_list.size()); |
| 1231 } | 1298 } |
| 1232 | 1299 |
| 1233 TEST_F(SingleOverlayOnTopTest, AllowVideoYMirrorTransform) { | 1300 TEST_F(SingleOverlayOnTopTest, AllowVideoYMirrorTransform) { |
| 1234 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1301 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1235 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), | 1302 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), |
| 1236 pass->shared_quad_state_list.back(), | 1303 pass->shared_quad_state_list.back(), |
| 1237 pass.get(), kYMirrorTransform); | 1304 pass.get(), kYMirrorTransform); |
| 1238 | 1305 |
| 1239 RenderPassList pass_list; | 1306 RenderPassList pass_list; |
| 1240 pass_list.push_back(pass.Pass()); | 1307 pass_list.push_back(pass.Pass()); |
| 1241 OverlayCandidateList candidate_list; | 1308 OverlayCandidateList candidate_list; |
| 1242 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1309 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 1243 &candidate_list, &damage_rect_); | 1310 &candidate_list, nullptr, |
| 1311 &damage_rect_); |
| 1244 ASSERT_EQ(1U, pass_list.size()); | 1312 ASSERT_EQ(1U, pass_list.size()); |
| 1245 EXPECT_EQ(1U, candidate_list.size()); | 1313 EXPECT_EQ(1U, candidate_list.size()); |
| 1246 } | 1314 } |
| 1247 | 1315 |
| 1248 TEST_F(UnderlayTest, OverlayLayerUnderMainLayer) { | 1316 TEST_F(UnderlayTest, OverlayLayerUnderMainLayer) { |
| 1249 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1317 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1250 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 1318 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 1251 pass->shared_quad_state_list.back(), pass.get()); | 1319 pass->shared_quad_state_list.back(), pass.get()); |
| 1252 CreateCandidateQuadAt(resource_provider_.get(), | 1320 CreateCandidateQuadAt(resource_provider_.get(), |
| 1253 pass->shared_quad_state_list.back(), pass.get(), | 1321 pass->shared_quad_state_list.back(), pass.get(), |
| 1254 kOverlayBottomRightRect); | 1322 kOverlayBottomRightRect); |
| 1255 | 1323 |
| 1256 RenderPassList pass_list; | 1324 RenderPassList pass_list; |
| 1257 pass_list.push_back(pass.Pass()); | 1325 pass_list.push_back(pass.Pass()); |
| 1258 | 1326 |
| 1259 OverlayCandidateList candidate_list; | 1327 OverlayCandidateList candidate_list; |
| 1260 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1328 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 1261 &candidate_list, &damage_rect_); | 1329 &candidate_list, nullptr, |
| 1330 &damage_rect_); |
| 1262 EXPECT_EQ(1U, pass_list.size()); | 1331 EXPECT_EQ(1U, pass_list.size()); |
| 1263 ASSERT_EQ(1U, candidate_list.size()); | 1332 ASSERT_EQ(1U, candidate_list.size()); |
| 1264 EXPECT_EQ(-1, candidate_list[0].plane_z_order); | 1333 EXPECT_EQ(-1, candidate_list[0].plane_z_order); |
| 1265 EXPECT_EQ(2U, pass_list[0]->quad_list.size()); | 1334 EXPECT_EQ(2U, pass_list[0]->quad_list.size()); |
| 1266 // The overlay quad should have changed to a SOLID_COLOR quad. | 1335 // The overlay quad should have changed to a SOLID_COLOR quad. |
| 1267 EXPECT_EQ(pass_list[0]->quad_list.back()->material, DrawQuad::SOLID_COLOR); | 1336 EXPECT_EQ(pass_list[0]->quad_list.back()->material, DrawQuad::SOLID_COLOR); |
| 1268 } | 1337 } |
| 1269 | 1338 |
| 1270 TEST_F(UnderlayTest, AllowOnTop) { | 1339 TEST_F(UnderlayTest, AllowOnTop) { |
| 1271 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1340 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1272 CreateFullscreenCandidateQuad(resource_provider_.get(), | 1341 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 1273 pass->shared_quad_state_list.back(), | 1342 pass->shared_quad_state_list.back(), |
| 1274 pass.get()); | 1343 pass.get()); |
| 1275 pass->CreateAndAppendSharedQuadState()->opacity = 0.5f; | 1344 pass->CreateAndAppendSharedQuadState()->opacity = 0.5f; |
| 1276 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 1345 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 1277 pass->shared_quad_state_list.back(), pass.get()); | 1346 pass->shared_quad_state_list.back(), pass.get()); |
| 1278 | 1347 |
| 1279 RenderPassList pass_list; | 1348 RenderPassList pass_list; |
| 1280 pass_list.push_back(pass.Pass()); | 1349 pass_list.push_back(pass.Pass()); |
| 1281 | 1350 |
| 1282 OverlayCandidateList candidate_list; | 1351 OverlayCandidateList candidate_list; |
| 1283 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1352 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 1284 &candidate_list, &damage_rect_); | 1353 &candidate_list, nullptr, |
| 1354 &damage_rect_); |
| 1285 EXPECT_EQ(1U, pass_list.size()); | 1355 EXPECT_EQ(1U, pass_list.size()); |
| 1286 ASSERT_EQ(1U, candidate_list.size()); | 1356 ASSERT_EQ(1U, candidate_list.size()); |
| 1287 EXPECT_EQ(-1, candidate_list[0].plane_z_order); | 1357 EXPECT_EQ(-1, candidate_list[0].plane_z_order); |
| 1288 // The overlay quad should have changed to a SOLID_COLOR quad. | 1358 // The overlay quad should have changed to a SOLID_COLOR quad. |
| 1289 EXPECT_EQ(pass_list[0]->quad_list.front()->material, DrawQuad::SOLID_COLOR); | 1359 EXPECT_EQ(pass_list[0]->quad_list.front()->material, DrawQuad::SOLID_COLOR); |
| 1290 } | 1360 } |
| 1291 | 1361 |
| 1292 TEST_F(UnderlayTest, DamageRect) { | 1362 TEST_F(UnderlayTest, DamageRect) { |
| 1293 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1363 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1294 CreateFullscreenCandidateQuad(resource_provider_.get(), | 1364 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| (...skipping 16 matching lines...) Expand all Loading... |
| 1311 | 1381 |
| 1312 // Primary plane. | 1382 // Primary plane. |
| 1313 OverlayCandidate output_surface_plane; | 1383 OverlayCandidate output_surface_plane; |
| 1314 output_surface_plane.display_rect = gfx::RectF(kOverlayRect); | 1384 output_surface_plane.display_rect = gfx::RectF(kOverlayRect); |
| 1315 output_surface_plane.quad_rect_in_target_space = kOverlayRect; | 1385 output_surface_plane.quad_rect_in_target_space = kOverlayRect; |
| 1316 output_surface_plane.use_output_surface_for_resource = true; | 1386 output_surface_plane.use_output_surface_for_resource = true; |
| 1317 output_surface_plane.overlay_handled = true; | 1387 output_surface_plane.overlay_handled = true; |
| 1318 candidate_list.push_back(output_surface_plane); | 1388 candidate_list.push_back(output_surface_plane); |
| 1319 | 1389 |
| 1320 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1390 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 1321 &candidate_list, &damage_rect_); | 1391 &candidate_list, nullptr, |
| 1392 &damage_rect_); |
| 1322 DCHECK(!damage_rect_.IsEmpty()); | 1393 DCHECK(!damage_rect_.IsEmpty()); |
| 1323 } | 1394 } |
| 1324 | 1395 |
| 1325 OverlayCandidateList BackbufferOverlayList(const RenderPass* root_render_pass) { | 1396 OverlayCandidateList BackbufferOverlayList(const RenderPass* root_render_pass) { |
| 1326 OverlayCandidateList list; | 1397 OverlayCandidateList list; |
| 1327 OverlayCandidate output_surface_plane; | 1398 OverlayCandidate output_surface_plane; |
| 1328 output_surface_plane.display_rect = gfx::RectF(root_render_pass->output_rect); | 1399 output_surface_plane.display_rect = gfx::RectF(root_render_pass->output_rect); |
| 1329 output_surface_plane.quad_rect_in_target_space = | 1400 output_surface_plane.quad_rect_in_target_space = |
| 1330 root_render_pass->output_rect; | 1401 root_render_pass->output_rect; |
| 1331 output_surface_plane.use_output_surface_for_resource = true; | 1402 output_surface_plane.use_output_surface_for_resource = true; |
| 1332 output_surface_plane.overlay_handled = true; | 1403 output_surface_plane.overlay_handled = true; |
| 1333 list.push_back(output_surface_plane); | 1404 list.push_back(output_surface_plane); |
| 1334 return list; | 1405 return list; |
| 1335 } | 1406 } |
| 1336 | 1407 |
| 1337 TEST_F(CALayerOverlayTest, AllowNonAxisAlignedTransform) { | 1408 TEST_F(CALayerOverlayTest, AllowNonAxisAlignedTransform) { |
| 1338 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1409 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1339 CreateFullscreenCandidateQuad(resource_provider_.get(), | 1410 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 1340 pass->shared_quad_state_list.back(), | 1411 pass->shared_quad_state_list.back(), |
| 1341 pass.get()); | 1412 pass.get()); |
| 1342 pass->shared_quad_state_list.back() | 1413 pass->shared_quad_state_list.back() |
| 1343 ->quad_to_target_transform.RotateAboutZAxis(45.f); | 1414 ->quad_to_target_transform.RotateAboutZAxis(45.f); |
| 1344 | 1415 |
| 1416 gfx::Rect damage_rect; |
| 1345 RenderPassList pass_list; | 1417 RenderPassList pass_list; |
| 1346 pass_list.push_back(pass.Pass()); | 1418 pass_list.push_back(pass.Pass()); |
| 1347 CALayerOverlayList ca_layer_list; | 1419 CALayerOverlayList ca_layer_list; |
| 1348 OverlayCandidateList overlay_list( | 1420 OverlayCandidateList overlay_list( |
| 1349 BackbufferOverlayList(pass_list.back().get())); | 1421 BackbufferOverlayList(pass_list.back().get())); |
| 1350 overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list, | 1422 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 1351 &ca_layer_list, &overlay_list); | 1423 &overlay_list, &ca_layer_list, |
| 1424 &damage_rect); |
| 1352 ASSERT_EQ(1U, pass_list.size()); | 1425 ASSERT_EQ(1U, pass_list.size()); |
| 1353 EXPECT_EQ(0U, pass_list.back()->quad_list.size()); | 1426 EXPECT_EQ(0U, pass_list.back()->quad_list.size()); |
| 1354 EXPECT_EQ(0U, overlay_list.size()); | 1427 EXPECT_EQ(0U, overlay_list.size()); |
| 1355 EXPECT_EQ(1U, ca_layer_list.size()); | 1428 EXPECT_EQ(1U, ca_layer_list.size()); |
| 1356 } | 1429 } |
| 1357 | 1430 |
| 1358 TEST_F(CALayerOverlayTest, Disallow3DTransform) { | 1431 TEST_F(CALayerOverlayTest, Disallow3DTransform) { |
| 1359 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1432 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1360 CreateFullscreenCandidateQuad(resource_provider_.get(), | 1433 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 1361 pass->shared_quad_state_list.back(), | 1434 pass->shared_quad_state_list.back(), |
| 1362 pass.get()); | 1435 pass.get()); |
| 1363 pass->shared_quad_state_list.back() | 1436 pass->shared_quad_state_list.back() |
| 1364 ->quad_to_target_transform.RotateAboutXAxis(45.f); | 1437 ->quad_to_target_transform.RotateAboutXAxis(45.f); |
| 1365 | 1438 |
| 1439 gfx::Rect damage_rect; |
| 1366 RenderPassList pass_list; | 1440 RenderPassList pass_list; |
| 1367 pass_list.push_back(pass.Pass()); | 1441 pass_list.push_back(pass.Pass()); |
| 1368 CALayerOverlayList ca_layer_list; | 1442 CALayerOverlayList ca_layer_list; |
| 1369 OverlayCandidateList overlay_list( | 1443 OverlayCandidateList overlay_list( |
| 1370 BackbufferOverlayList(pass_list.back().get())); | 1444 BackbufferOverlayList(pass_list.back().get())); |
| 1371 overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list, | 1445 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 1372 &ca_layer_list, &overlay_list); | 1446 &overlay_list, &ca_layer_list, |
| 1447 &damage_rect); |
| 1373 ASSERT_EQ(1U, pass_list.size()); | 1448 ASSERT_EQ(1U, pass_list.size()); |
| 1374 EXPECT_EQ(1U, pass_list.back()->quad_list.size()); | 1449 EXPECT_EQ(1U, pass_list.back()->quad_list.size()); |
| 1375 EXPECT_EQ(1U, overlay_list.size()); | 1450 EXPECT_EQ(1U, overlay_list.size()); |
| 1376 EXPECT_EQ(0U, ca_layer_list.size()); | 1451 EXPECT_EQ(0U, ca_layer_list.size()); |
| 1377 } | 1452 } |
| 1378 | 1453 |
| 1379 TEST_F(CALayerOverlayTest, AllowContainingClip) { | 1454 TEST_F(CALayerOverlayTest, AllowContainingClip) { |
| 1380 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1455 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1381 CreateFullscreenCandidateQuad(resource_provider_.get(), | 1456 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 1382 pass->shared_quad_state_list.back(), | 1457 pass->shared_quad_state_list.back(), |
| 1383 pass.get()); | 1458 pass.get()); |
| 1384 pass->shared_quad_state_list.back()->is_clipped = true; | 1459 pass->shared_quad_state_list.back()->is_clipped = true; |
| 1385 pass->shared_quad_state_list.back()->clip_rect = kOverlayRect; | 1460 pass->shared_quad_state_list.back()->clip_rect = kOverlayRect; |
| 1386 | 1461 |
| 1462 gfx::Rect damage_rect; |
| 1387 RenderPassList pass_list; | 1463 RenderPassList pass_list; |
| 1388 pass_list.push_back(pass.Pass()); | 1464 pass_list.push_back(pass.Pass()); |
| 1389 CALayerOverlayList ca_layer_list; | 1465 CALayerOverlayList ca_layer_list; |
| 1390 OverlayCandidateList overlay_list( | 1466 OverlayCandidateList overlay_list( |
| 1391 BackbufferOverlayList(pass_list.back().get())); | 1467 BackbufferOverlayList(pass_list.back().get())); |
| 1392 overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list, | 1468 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 1393 &ca_layer_list, &overlay_list); | 1469 &overlay_list, &ca_layer_list, |
| 1470 &damage_rect); |
| 1394 ASSERT_EQ(1U, pass_list.size()); | 1471 ASSERT_EQ(1U, pass_list.size()); |
| 1395 EXPECT_EQ(0U, pass_list.back()->quad_list.size()); | 1472 EXPECT_EQ(0U, pass_list.back()->quad_list.size()); |
| 1396 EXPECT_EQ(0U, overlay_list.size()); | 1473 EXPECT_EQ(0U, overlay_list.size()); |
| 1397 EXPECT_EQ(1U, ca_layer_list.size()); | 1474 EXPECT_EQ(1U, ca_layer_list.size()); |
| 1398 } | 1475 } |
| 1399 | 1476 |
| 1400 TEST_F(CALayerOverlayTest, SkipDisjointClip) { | 1477 TEST_F(CALayerOverlayTest, SkipDisjointClip) { |
| 1401 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1478 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1402 CreateFullscreenCandidateQuad(resource_provider_.get(), | 1479 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 1403 pass->shared_quad_state_list.back(), | 1480 pass->shared_quad_state_list.back(), |
| 1404 pass.get()); | 1481 pass.get()); |
| 1405 pass->shared_quad_state_list.back()->is_clipped = true; | 1482 pass->shared_quad_state_list.back()->is_clipped = true; |
| 1406 pass->shared_quad_state_list.back()->clip_rect = | 1483 pass->shared_quad_state_list.back()->clip_rect = |
| 1407 gfx::Rect(128, 128, 128, 128); | 1484 gfx::Rect(128, 128, 128, 128); |
| 1408 | 1485 |
| 1486 gfx::Rect damage_rect; |
| 1409 RenderPassList pass_list; | 1487 RenderPassList pass_list; |
| 1410 pass_list.push_back(pass.Pass()); | 1488 pass_list.push_back(pass.Pass()); |
| 1411 CALayerOverlayList ca_layer_list; | 1489 CALayerOverlayList ca_layer_list; |
| 1412 OverlayCandidateList overlay_list( | 1490 OverlayCandidateList overlay_list( |
| 1413 BackbufferOverlayList(pass_list.back().get())); | 1491 BackbufferOverlayList(pass_list.back().get())); |
| 1414 overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list, | 1492 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 1415 &ca_layer_list, &overlay_list); | 1493 &overlay_list, &ca_layer_list, |
| 1494 &damage_rect); |
| 1416 ASSERT_EQ(1U, pass_list.size()); | 1495 ASSERT_EQ(1U, pass_list.size()); |
| 1417 EXPECT_EQ(0U, pass_list.back()->quad_list.size()); | 1496 EXPECT_EQ(0U, pass_list.back()->quad_list.size()); |
| 1418 EXPECT_EQ(0U, overlay_list.size()); | 1497 EXPECT_EQ(0U, overlay_list.size()); |
| 1419 EXPECT_EQ(0U, ca_layer_list.size()); | 1498 EXPECT_EQ(0U, ca_layer_list.size()); |
| 1420 } | 1499 } |
| 1421 | 1500 |
| 1422 TEST_F(CALayerOverlayTest, DisallowNontrivialClip) { | 1501 TEST_F(CALayerOverlayTest, DisallowNontrivialClip) { |
| 1423 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1502 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1424 CreateFullscreenCandidateQuad(resource_provider_.get(), | 1503 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 1425 pass->shared_quad_state_list.back(), | 1504 pass->shared_quad_state_list.back(), |
| 1426 pass.get()); | 1505 pass.get()); |
| 1427 pass->shared_quad_state_list.back()->is_clipped = true; | 1506 pass->shared_quad_state_list.back()->is_clipped = true; |
| 1428 pass->shared_quad_state_list.back()->clip_rect = gfx::Rect(64, 64, 128, 128); | 1507 pass->shared_quad_state_list.back()->clip_rect = gfx::Rect(64, 64, 128, 128); |
| 1429 | 1508 |
| 1509 gfx::Rect damage_rect; |
| 1430 RenderPassList pass_list; | 1510 RenderPassList pass_list; |
| 1431 pass_list.push_back(pass.Pass()); | 1511 pass_list.push_back(pass.Pass()); |
| 1432 CALayerOverlayList ca_layer_list; | 1512 CALayerOverlayList ca_layer_list; |
| 1433 OverlayCandidateList overlay_list( | 1513 OverlayCandidateList overlay_list( |
| 1434 BackbufferOverlayList(pass_list.back().get())); | 1514 BackbufferOverlayList(pass_list.back().get())); |
| 1435 overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list, | 1515 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 1436 &ca_layer_list, &overlay_list); | 1516 &overlay_list, &ca_layer_list, |
| 1517 &damage_rect); |
| 1437 | 1518 |
| 1438 ASSERT_EQ(1U, pass_list.size()); | 1519 ASSERT_EQ(1U, pass_list.size()); |
| 1439 EXPECT_EQ(1U, pass_list.back()->quad_list.size()); | 1520 EXPECT_EQ(1U, pass_list.back()->quad_list.size()); |
| 1440 EXPECT_EQ(1U, overlay_list.size()); | 1521 EXPECT_EQ(1U, overlay_list.size()); |
| 1441 EXPECT_EQ(0U, ca_layer_list.size()); | 1522 EXPECT_EQ(0U, ca_layer_list.size()); |
| 1442 } | 1523 } |
| 1443 | 1524 |
| 1444 TEST_F(CALayerOverlayTest, SkipTransparent) { | 1525 TEST_F(CALayerOverlayTest, SkipTransparent) { |
| 1445 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1526 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1446 CreateFullscreenCandidateQuad(resource_provider_.get(), | 1527 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 1447 pass->shared_quad_state_list.back(), | 1528 pass->shared_quad_state_list.back(), |
| 1448 pass.get()); | 1529 pass.get()); |
| 1449 pass->shared_quad_state_list.back()->opacity = 0; | 1530 pass->shared_quad_state_list.back()->opacity = 0; |
| 1450 | 1531 |
| 1532 gfx::Rect damage_rect; |
| 1451 RenderPassList pass_list; | 1533 RenderPassList pass_list; |
| 1452 pass_list.push_back(pass.Pass()); | 1534 pass_list.push_back(pass.Pass()); |
| 1453 CALayerOverlayList ca_layer_list; | 1535 CALayerOverlayList ca_layer_list; |
| 1454 OverlayCandidateList overlay_list( | 1536 OverlayCandidateList overlay_list( |
| 1455 BackbufferOverlayList(pass_list.back().get())); | 1537 BackbufferOverlayList(pass_list.back().get())); |
| 1456 overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list, | 1538 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 1457 &ca_layer_list, &overlay_list); | 1539 &overlay_list, &ca_layer_list, |
| 1540 &damage_rect); |
| 1458 ASSERT_EQ(1U, pass_list.size()); | 1541 ASSERT_EQ(1U, pass_list.size()); |
| 1459 EXPECT_EQ(0U, pass_list.back()->quad_list.size()); | 1542 EXPECT_EQ(0U, pass_list.back()->quad_list.size()); |
| 1460 EXPECT_EQ(0U, overlay_list.size()); | 1543 EXPECT_EQ(0U, overlay_list.size()); |
| 1461 EXPECT_EQ(0U, ca_layer_list.size()); | 1544 EXPECT_EQ(0U, ca_layer_list.size()); |
| 1462 } | 1545 } |
| 1463 | 1546 |
| 1464 class OverlayInfoRendererGL : public GLRenderer { | 1547 class OverlayInfoRendererGL : public GLRenderer { |
| 1465 public: | 1548 public: |
| 1466 OverlayInfoRendererGL(RendererClient* client, | 1549 OverlayInfoRendererGL(RendererClient* client, |
| 1467 const RendererSettings* settings, | 1550 const RendererSettings* settings, |
| (...skipping 339 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1807 renderer_->BeginDrawingFrame(&frame_no_overlays); | 1890 renderer_->BeginDrawingFrame(&frame_no_overlays); |
| 1808 renderer_->FinishDrawingFrame(&frame_no_overlays); | 1891 renderer_->FinishDrawingFrame(&frame_no_overlays); |
| 1809 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); | 1892 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); |
| 1810 SwapBuffers(); | 1893 SwapBuffers(); |
| 1811 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); | 1894 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); |
| 1812 Mock::VerifyAndClearExpectations(&scheduler_); | 1895 Mock::VerifyAndClearExpectations(&scheduler_); |
| 1813 } | 1896 } |
| 1814 | 1897 |
| 1815 } // namespace | 1898 } // namespace |
| 1816 } // namespace cc | 1899 } // namespace cc |
| OLD | NEW |