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 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
187 | 187 |
188 scoped_ptr<RenderPass> pass = RenderPass::Create(); | 188 scoped_ptr<RenderPass> pass = RenderPass::Create(); |
189 pass->SetAll(id, | 189 pass->SetAll(id, |
190 output_rect, | 190 output_rect, |
191 output_rect, | 191 output_rect, |
192 gfx::Transform(), | 192 gfx::Transform(), |
193 has_transparent_background); | 193 has_transparent_background); |
194 | 194 |
195 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); | 195 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); |
196 shared_state->opacity = 1.f; | 196 shared_state->opacity = 1.f; |
197 return pass.Pass(); | 197 return pass; |
198 } | 198 } |
199 | 199 |
200 ResourceId CreateResource(ResourceProvider* resource_provider, | 200 ResourceId CreateResource(ResourceProvider* resource_provider, |
201 const gfx::Size& size, | 201 const gfx::Size& size, |
202 bool is_overlay_candidate) { | 202 bool is_overlay_candidate) { |
203 TextureMailbox mailbox = | 203 TextureMailbox mailbox = |
204 TextureMailbox(gpu::Mailbox::Generate(), gpu::SyncToken(), GL_TEXTURE_2D, | 204 TextureMailbox(gpu::Mailbox::Generate(), gpu::SyncToken(), GL_TEXTURE_2D, |
205 size, is_overlay_candidate); | 205 size, is_overlay_candidate); |
206 scoped_ptr<SingleReleaseCallbackImpl> release_callback = | 206 scoped_ptr<SingleReleaseCallbackImpl> release_callback = |
207 SingleReleaseCallbackImpl::Create(base::Bind(&MailboxReleased)); | 207 SingleReleaseCallbackImpl::Create(base::Bind(&MailboxReleased)); |
208 | 208 |
209 return resource_provider->CreateResourceFromTextureMailbox( | 209 return resource_provider->CreateResourceFromTextureMailbox( |
210 mailbox, release_callback.Pass()); | 210 mailbox, std::move(release_callback)); |
211 } | 211 } |
212 | 212 |
213 SolidColorDrawQuad* CreateSolidColorQuadAt( | 213 SolidColorDrawQuad* CreateSolidColorQuadAt( |
214 const SharedQuadState* shared_quad_state, | 214 const SharedQuadState* shared_quad_state, |
215 SkColor color, | 215 SkColor color, |
216 RenderPass* render_pass, | 216 RenderPass* render_pass, |
217 const gfx::Rect& rect) { | 217 const gfx::Rect& rect) { |
218 SolidColorDrawQuad* quad = | 218 SolidColorDrawQuad* quad = |
219 render_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); | 219 render_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
220 quad->SetNew(shared_quad_state, rect, rect, color, false); | 220 quad->SetNew(shared_quad_state, rect, rect, color, false); |
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
401 pass.get()); | 401 pass.get()); |
402 unsigned original_resource_id = original_quad->resource_id(); | 402 unsigned original_resource_id = original_quad->resource_id(); |
403 | 403 |
404 // Add something behind it. | 404 // Add something behind it. |
405 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 405 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
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(std::move(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, &damage_rect_); |
417 | 417 |
418 ASSERT_EQ(1U, pass_list.size()); | 418 ASSERT_EQ(1U, pass_list.size()); |
419 ASSERT_EQ(1U, candidate_list.size()); | 419 ASSERT_EQ(1U, candidate_list.size()); |
420 | 420 |
421 RenderPass* main_pass = pass_list.back().get(); | 421 RenderPass* main_pass = pass_list.back().get(); |
(...skipping 21 matching lines...) Expand all Loading... |
443 original_quad->uv_bottom_right = gfx::PointF(1, 1); | 443 original_quad->uv_bottom_right = gfx::PointF(1, 1); |
444 unsigned candidate_id = original_quad->resource_id(); | 444 unsigned candidate_id = original_quad->resource_id(); |
445 | 445 |
446 // Add something behind it. | 446 // Add something behind it. |
447 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 447 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
448 pass->shared_quad_state_list.back(), pass.get()); | 448 pass->shared_quad_state_list.back(), pass.get()); |
449 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 449 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
450 pass->shared_quad_state_list.back(), pass.get()); | 450 pass->shared_quad_state_list.back(), pass.get()); |
451 | 451 |
452 RenderPassList pass_list; | 452 RenderPassList pass_list; |
453 pass_list.push_back(pass.Pass()); | 453 pass_list.push_back(std::move(pass)); |
454 | 454 |
455 // Check for potential candidates. | 455 // Check for potential candidates. |
456 OverlayCandidateList candidate_list; | 456 OverlayCandidateList candidate_list; |
457 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 457 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
458 &candidate_list, &damage_rect_); | 458 &candidate_list, &damage_rect_); |
459 | 459 |
460 // Ensure that the display and uv rects have cropping applied to them. | 460 // Ensure that the display and uv rects have cropping applied to them. |
461 ASSERT_EQ(1U, pass_list.size()); | 461 ASSERT_EQ(1U, pass_list.size()); |
462 ASSERT_EQ(1U, candidate_list.size()); | 462 ASSERT_EQ(1U, candidate_list.size()); |
463 EXPECT_EQ(candidate_id, candidate_list[0].resource_id); | 463 EXPECT_EQ(candidate_id, candidate_list[0].resource_id); |
(...skipping 10 matching lines...) Expand all Loading... |
474 kOverlayTopLeftRect); | 474 kOverlayTopLeftRect); |
475 CreateCandidateQuadAt(resource_provider_.get(), | 475 CreateCandidateQuadAt(resource_provider_.get(), |
476 pass->shared_quad_state_list.back(), pass.get(), | 476 pass->shared_quad_state_list.back(), pass.get(), |
477 kOverlayBottomRightRect); | 477 kOverlayBottomRightRect); |
478 | 478 |
479 // Add something behind it. | 479 // Add something behind it. |
480 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 480 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
481 pass->shared_quad_state_list.back(), pass.get()); | 481 pass->shared_quad_state_list.back(), pass.get()); |
482 | 482 |
483 RenderPassList pass_list; | 483 RenderPassList pass_list; |
484 pass_list.push_back(pass.Pass()); | 484 pass_list.push_back(std::move(pass)); |
485 OverlayCandidateList candidate_list; | 485 OverlayCandidateList candidate_list; |
486 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 486 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
487 &candidate_list, &damage_rect_); | 487 &candidate_list, &damage_rect_); |
488 | 488 |
489 // Both candidates should become overlays. | 489 // Both candidates should become overlays. |
490 EXPECT_EQ(1u, pass_list.size()); | 490 EXPECT_EQ(1u, pass_list.size()); |
491 EXPECT_EQ(2u, candidate_list.size()); | 491 EXPECT_EQ(2u, candidate_list.size()); |
492 EXPECT_EQ(gfx::RectF(kOverlayTopLeftRect), candidate_list[0].display_rect); | 492 EXPECT_EQ(gfx::RectF(kOverlayTopLeftRect), candidate_list[0].display_rect); |
493 EXPECT_EQ(gfx::RectF(kOverlayBottomRightRect), | 493 EXPECT_EQ(gfx::RectF(kOverlayBottomRightRect), |
494 candidate_list[1].display_rect); | 494 candidate_list[1].display_rect); |
(...skipping 13 matching lines...) Expand all Loading... |
508 kOverlayTopLeftRect); | 508 kOverlayTopLeftRect); |
509 CreateCandidateQuadAt(resource_provider_.get(), | 509 CreateCandidateQuadAt(resource_provider_.get(), |
510 pass->shared_quad_state_list.back(), pass.get(), | 510 pass->shared_quad_state_list.back(), pass.get(), |
511 kOverlayRect); | 511 kOverlayRect); |
512 | 512 |
513 // Add something behind it. | 513 // Add something behind it. |
514 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 514 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
515 pass->shared_quad_state_list.back(), pass.get()); | 515 pass->shared_quad_state_list.back(), pass.get()); |
516 | 516 |
517 RenderPassList pass_list; | 517 RenderPassList pass_list; |
518 pass_list.push_back(pass.Pass()); | 518 pass_list.push_back(std::move(pass)); |
519 OverlayCandidateList candidate_list; | 519 OverlayCandidateList candidate_list; |
520 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 520 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
521 &candidate_list, &damage_rect_); | 521 &candidate_list, &damage_rect_); |
522 | 522 |
523 // Only one of the candidates should become an overlay. | 523 // Only one of the candidates should become an overlay. |
524 EXPECT_EQ(1u, pass_list.size()); | 524 EXPECT_EQ(1u, pass_list.size()); |
525 EXPECT_EQ(1u, candidate_list.size()); | 525 EXPECT_EQ(1u, candidate_list.size()); |
526 EXPECT_EQ(gfx::RectF(kOverlayTopLeftRect), candidate_list[0].display_rect); | 526 EXPECT_EQ(gfx::RectF(kOverlayTopLeftRect), candidate_list[0].display_rect); |
527 | 527 |
528 // One of the overlay quads should be gone. | 528 // One of the overlay quads should be gone. |
(...skipping 12 matching lines...) Expand all Loading... |
541 unsigned candidate_id = | 541 unsigned candidate_id = |
542 CreateCandidateQuadAt(resource_provider_.get(), | 542 CreateCandidateQuadAt(resource_provider_.get(), |
543 pass->shared_quad_state_list.back(), pass.get(), | 543 pass->shared_quad_state_list.back(), pass.get(), |
544 gfx::Rect(32, 32, 32, 32)) | 544 gfx::Rect(32, 32, 32, 32)) |
545 ->resource_id(); | 545 ->resource_id(); |
546 CreateOpaqueQuadAt(resource_provider_.get(), | 546 CreateOpaqueQuadAt(resource_provider_.get(), |
547 pass->shared_quad_state_list.back(), pass.get(), | 547 pass->shared_quad_state_list.back(), pass.get(), |
548 gfx::Rect(kDisplaySize)); | 548 gfx::Rect(kDisplaySize)); |
549 | 549 |
550 RenderPassList pass_list; | 550 RenderPassList pass_list; |
551 pass_list.push_back(pass.Pass()); | 551 pass_list.push_back(std::move(pass)); |
552 | 552 |
553 // Check for potential candidates. | 553 // Check for potential candidates. |
554 OverlayCandidateList candidate_list; | 554 OverlayCandidateList candidate_list; |
555 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 555 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
556 &candidate_list, &damage_rect_); | 556 &candidate_list, &damage_rect_); |
557 ASSERT_EQ(1U, pass_list.size()); | 557 ASSERT_EQ(1U, pass_list.size()); |
558 ASSERT_EQ(2U, candidate_list.size()); | 558 ASSERT_EQ(2U, candidate_list.size()); |
559 | 559 |
560 RenderPass* main_pass = pass_list.back().get(); | 560 RenderPass* main_pass = pass_list.back().get(); |
561 // Check that the quad is gone. | 561 // Check that the quad is gone. |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
594 pass->shared_quad_state_list.back(), pass.get(), | 594 pass->shared_quad_state_list.back(), pass.get(), |
595 gfx::Rect(0, 0, 64, 64)) | 595 gfx::Rect(0, 0, 64, 64)) |
596 ->resource_id(); | 596 ->resource_id(); |
597 | 597 |
598 // Then some opaque background. | 598 // Then some opaque background. |
599 CreateOpaqueQuadAt(resource_provider_.get(), | 599 CreateOpaqueQuadAt(resource_provider_.get(), |
600 pass->shared_quad_state_list.back(), pass.get(), | 600 pass->shared_quad_state_list.back(), pass.get(), |
601 gfx::Rect(kDisplaySize)); | 601 gfx::Rect(kDisplaySize)); |
602 | 602 |
603 RenderPassList pass_list; | 603 RenderPassList pass_list; |
604 pass_list.push_back(pass.Pass()); | 604 pass_list.push_back(std::move(pass)); |
605 | 605 |
606 // Run the overlay strategy on that input. | 606 // Run the overlay strategy on that input. |
607 RenderPass* main_pass = pass_list.back().get(); | 607 RenderPass* main_pass = pass_list.back().get(); |
608 OverlayCandidateList candidate_list; | 608 OverlayCandidateList candidate_list; |
609 EXPECT_EQ(4U, main_pass->quad_list.size()); | 609 EXPECT_EQ(4U, main_pass->quad_list.size()); |
610 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 610 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
611 &candidate_list, &damage_rect_); | 611 &candidate_list, &damage_rect_); |
612 ASSERT_EQ(1U, pass_list.size()); | 612 ASSERT_EQ(1U, pass_list.size()); |
613 ASSERT_EQ(3U, candidate_list.size()); | 613 ASSERT_EQ(3U, candidate_list.size()); |
614 | 614 |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
648 | 648 |
649 damage_rect_ = kOverlayRect; | 649 damage_rect_ = kOverlayRect; |
650 | 650 |
651 // Add something behind it. | 651 // Add something behind it. |
652 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 652 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
653 pass->shared_quad_state_list.back(), pass.get()); | 653 pass->shared_quad_state_list.back(), pass.get()); |
654 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 654 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
655 pass->shared_quad_state_list.back(), pass.get()); | 655 pass->shared_quad_state_list.back(), pass.get()); |
656 | 656 |
657 RenderPassList pass_list; | 657 RenderPassList pass_list; |
658 pass_list.push_back(pass.Pass()); | 658 pass_list.push_back(std::move(pass)); |
659 | 659 |
660 // Check for potential candidates. | 660 // Check for potential candidates. |
661 OverlayCandidateList candidate_list; | 661 OverlayCandidateList candidate_list; |
662 | 662 |
663 // Primary plane. | 663 // Primary plane. |
664 OverlayCandidate output_surface_plane; | 664 OverlayCandidate output_surface_plane; |
665 output_surface_plane.display_rect = gfx::RectF(kOverlayRect); | 665 output_surface_plane.display_rect = gfx::RectF(kOverlayRect); |
666 output_surface_plane.quad_rect_in_target_space = kOverlayRect; | 666 output_surface_plane.quad_rect_in_target_space = kOverlayRect; |
667 output_surface_plane.use_output_surface_for_resource = true; | 667 output_surface_plane.use_output_surface_for_resource = true; |
668 output_surface_plane.overlay_handled = true; | 668 output_surface_plane.overlay_handled = true; |
(...skipping 12 matching lines...) Expand all Loading... |
681 pass.get()); | 681 pass.get()); |
682 unsigned original_resource_id = original_quad->resource_id(); | 682 unsigned original_resource_id = original_quad->resource_id(); |
683 | 683 |
684 // Add something behind it. | 684 // Add something behind it. |
685 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 685 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
686 pass->shared_quad_state_list.back(), pass.get()); | 686 pass->shared_quad_state_list.back(), pass.get()); |
687 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 687 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
688 pass->shared_quad_state_list.back(), pass.get()); | 688 pass->shared_quad_state_list.back(), pass.get()); |
689 | 689 |
690 RenderPassList pass_list; | 690 RenderPassList pass_list; |
691 pass_list.push_back(pass.Pass()); | 691 pass_list.push_back(std::move(pass)); |
692 | 692 |
693 // Check for potential candidates. | 693 // Check for potential candidates. |
694 OverlayCandidateList candidate_list; | 694 OverlayCandidateList candidate_list; |
695 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 695 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
696 &candidate_list, &damage_rect_); | 696 &candidate_list, &damage_rect_); |
697 | 697 |
698 ASSERT_EQ(1U, pass_list.size()); | 698 ASSERT_EQ(1U, pass_list.size()); |
699 ASSERT_EQ(1U, candidate_list.size()); | 699 ASSERT_EQ(1U, candidate_list.size()); |
700 | 700 |
701 RenderPass* main_pass = pass_list.back().get(); | 701 RenderPass* main_pass = pass_list.back().get(); |
(...skipping 17 matching lines...) Expand all Loading... |
719 pass.get()); | 719 pass.get()); |
720 damage_rect_ = kOverlayRect; | 720 damage_rect_ = kOverlayRect; |
721 | 721 |
722 // Add something behind it. | 722 // Add something behind it. |
723 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 723 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
724 pass->shared_quad_state_list.back(), pass.get()); | 724 pass->shared_quad_state_list.back(), pass.get()); |
725 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 725 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
726 pass->shared_quad_state_list.back(), pass.get()); | 726 pass->shared_quad_state_list.back(), pass.get()); |
727 | 727 |
728 RenderPassList pass_list; | 728 RenderPassList pass_list; |
729 pass_list.push_back(pass.Pass()); | 729 pass_list.push_back(std::move(pass)); |
730 | 730 |
731 // Check for potential candidates. | 731 // Check for potential candidates. |
732 OverlayCandidateList candidate_list; | 732 OverlayCandidateList candidate_list; |
733 | 733 |
734 // Primary plane. | 734 // Primary plane. |
735 OverlayCandidate output_surface_plane; | 735 OverlayCandidate output_surface_plane; |
736 output_surface_plane.display_rect = gfx::RectF(kOverlayRect); | 736 output_surface_plane.display_rect = gfx::RectF(kOverlayRect); |
737 output_surface_plane.quad_rect_in_target_space = kOverlayRect; | 737 output_surface_plane.quad_rect_in_target_space = kOverlayRect; |
738 output_surface_plane.use_output_surface_for_resource = true; | 738 output_surface_plane.use_output_surface_for_resource = true; |
739 output_surface_plane.overlay_handled = true; | 739 output_surface_plane.overlay_handled = true; |
740 candidate_list.push_back(output_surface_plane); | 740 candidate_list.push_back(output_surface_plane); |
741 | 741 |
742 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 742 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
743 &candidate_list, &damage_rect_); | 743 &candidate_list, &damage_rect_); |
744 DCHECK(damage_rect_.IsEmpty()); | 744 DCHECK(damage_rect_.IsEmpty()); |
745 } | 745 } |
746 | 746 |
747 TEST_F(SingleOverlayOnTopTest, NoCandidates) { | 747 TEST_F(SingleOverlayOnTopTest, NoCandidates) { |
748 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 748 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
749 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 749 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
750 pass->shared_quad_state_list.back(), pass.get()); | 750 pass->shared_quad_state_list.back(), pass.get()); |
751 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 751 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
752 pass->shared_quad_state_list.back(), pass.get()); | 752 pass->shared_quad_state_list.back(), pass.get()); |
753 | 753 |
754 RenderPassList pass_list; | 754 RenderPassList pass_list; |
755 pass_list.push_back(pass.Pass()); | 755 pass_list.push_back(std::move(pass)); |
756 | 756 |
757 RenderPassList original_pass_list; | 757 RenderPassList original_pass_list; |
758 RenderPass::CopyAll(pass_list, &original_pass_list); | 758 RenderPass::CopyAll(pass_list, &original_pass_list); |
759 | 759 |
760 OverlayCandidateList candidate_list; | 760 OverlayCandidateList candidate_list; |
761 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 761 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
762 &candidate_list, &damage_rect_); | 762 &candidate_list, &damage_rect_); |
763 EXPECT_EQ(0U, candidate_list.size()); | 763 EXPECT_EQ(0U, candidate_list.size()); |
764 // There should be nothing new here. | 764 // There should be nothing new here. |
765 CompareRenderPassLists(pass_list, original_pass_list); | 765 CompareRenderPassLists(pass_list, original_pass_list); |
766 } | 766 } |
767 | 767 |
768 TEST_F(SingleOverlayOnTopTest, OccludedCandidates) { | 768 TEST_F(SingleOverlayOnTopTest, OccludedCandidates) { |
769 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 769 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
770 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 770 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
771 pass->shared_quad_state_list.back(), pass.get()); | 771 pass->shared_quad_state_list.back(), pass.get()); |
772 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 772 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
773 pass->shared_quad_state_list.back(), pass.get()); | 773 pass->shared_quad_state_list.back(), pass.get()); |
774 | 774 |
775 CreateFullscreenCandidateQuad(resource_provider_.get(), | 775 CreateFullscreenCandidateQuad(resource_provider_.get(), |
776 pass->shared_quad_state_list.back(), | 776 pass->shared_quad_state_list.back(), |
777 pass.get()); | 777 pass.get()); |
778 | 778 |
779 RenderPassList pass_list; | 779 RenderPassList pass_list; |
780 pass_list.push_back(pass.Pass()); | 780 pass_list.push_back(std::move(pass)); |
781 | 781 |
782 RenderPassList original_pass_list; | 782 RenderPassList original_pass_list; |
783 RenderPass::CopyAll(pass_list, &original_pass_list); | 783 RenderPass::CopyAll(pass_list, &original_pass_list); |
784 | 784 |
785 OverlayCandidateList candidate_list; | 785 OverlayCandidateList candidate_list; |
786 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 786 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
787 &candidate_list, &damage_rect_); | 787 &candidate_list, &damage_rect_); |
788 EXPECT_EQ(0U, candidate_list.size()); | 788 EXPECT_EQ(0U, candidate_list.size()); |
789 // There should be nothing new here. | 789 // There should be nothing new here. |
790 CompareRenderPassLists(pass_list, original_pass_list); | 790 CompareRenderPassLists(pass_list, original_pass_list); |
791 } | 791 } |
792 | 792 |
793 // Test with multiple render passes. | 793 // Test with multiple render passes. |
794 TEST_F(SingleOverlayOnTopTest, MultipleRenderPasses) { | 794 TEST_F(SingleOverlayOnTopTest, MultipleRenderPasses) { |
795 RenderPassList pass_list; | 795 RenderPassList pass_list; |
796 pass_list.push_back(CreateRenderPass()); | 796 pass_list.push_back(CreateRenderPass()); |
797 | 797 |
798 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 798 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
799 CreateFullscreenCandidateQuad(resource_provider_.get(), | 799 CreateFullscreenCandidateQuad(resource_provider_.get(), |
800 pass->shared_quad_state_list.back(), | 800 pass->shared_quad_state_list.back(), |
801 pass.get()); | 801 pass.get()); |
802 | 802 |
803 // Add something behind it. | 803 // Add something behind it. |
804 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 804 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
805 pass->shared_quad_state_list.back(), pass.get()); | 805 pass->shared_quad_state_list.back(), pass.get()); |
806 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 806 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
807 pass->shared_quad_state_list.back(), pass.get()); | 807 pass->shared_quad_state_list.back(), pass.get()); |
808 | 808 |
809 pass_list.push_back(pass.Pass()); | 809 pass_list.push_back(std::move(pass)); |
810 | 810 |
811 RenderPassList original_pass_list; | 811 RenderPassList original_pass_list; |
812 RenderPass::CopyAll(pass_list, &original_pass_list); | 812 RenderPass::CopyAll(pass_list, &original_pass_list); |
813 | 813 |
814 // Check for potential candidates. | 814 // Check for potential candidates. |
815 OverlayCandidateList candidate_list; | 815 OverlayCandidateList candidate_list; |
816 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 816 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
817 &candidate_list, &damage_rect_); | 817 &candidate_list, &damage_rect_); |
818 EXPECT_EQ(1U, candidate_list.size()); | 818 EXPECT_EQ(1U, candidate_list.size()); |
819 | 819 |
820 // This should be the same. | 820 // This should be the same. |
821 ASSERT_EQ(2U, pass_list.size()); | 821 ASSERT_EQ(2U, pass_list.size()); |
822 } | 822 } |
823 | 823 |
824 TEST_F(SingleOverlayOnTopTest, RejectPremultipliedAlpha) { | 824 TEST_F(SingleOverlayOnTopTest, RejectPremultipliedAlpha) { |
825 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 825 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
826 TextureDrawQuad* quad = | 826 TextureDrawQuad* quad = |
827 CreateFullscreenCandidateQuad(resource_provider_.get(), | 827 CreateFullscreenCandidateQuad(resource_provider_.get(), |
828 pass->shared_quad_state_list.back(), | 828 pass->shared_quad_state_list.back(), |
829 pass.get()); | 829 pass.get()); |
830 quad->premultiplied_alpha = true; | 830 quad->premultiplied_alpha = true; |
831 | 831 |
832 RenderPassList pass_list; | 832 RenderPassList pass_list; |
833 pass_list.push_back(pass.Pass()); | 833 pass_list.push_back(std::move(pass)); |
834 OverlayCandidateList candidate_list; | 834 OverlayCandidateList candidate_list; |
835 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 835 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
836 &candidate_list, &damage_rect_); | 836 &candidate_list, &damage_rect_); |
837 EXPECT_EQ(1U, pass_list.size()); | 837 EXPECT_EQ(1U, pass_list.size()); |
838 EXPECT_EQ(0U, candidate_list.size()); | 838 EXPECT_EQ(0U, candidate_list.size()); |
839 } | 839 } |
840 | 840 |
841 TEST_F(SingleOverlayOnTopTest, RejectBlending) { | 841 TEST_F(SingleOverlayOnTopTest, RejectBlending) { |
842 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 842 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
843 TextureDrawQuad* quad = | 843 TextureDrawQuad* quad = |
844 CreateFullscreenCandidateQuad(resource_provider_.get(), | 844 CreateFullscreenCandidateQuad(resource_provider_.get(), |
845 pass->shared_quad_state_list.back(), | 845 pass->shared_quad_state_list.back(), |
846 pass.get()); | 846 pass.get()); |
847 quad->needs_blending = true; | 847 quad->needs_blending = true; |
848 | 848 |
849 RenderPassList pass_list; | 849 RenderPassList pass_list; |
850 pass_list.push_back(pass.Pass()); | 850 pass_list.push_back(std::move(pass)); |
851 OverlayCandidateList candidate_list; | 851 OverlayCandidateList candidate_list; |
852 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 852 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
853 &candidate_list, &damage_rect_); | 853 &candidate_list, &damage_rect_); |
854 ASSERT_EQ(1U, pass_list.size()); | 854 ASSERT_EQ(1U, pass_list.size()); |
855 EXPECT_EQ(0U, candidate_list.size()); | 855 EXPECT_EQ(0U, candidate_list.size()); |
856 } | 856 } |
857 | 857 |
858 TEST_F(SingleOverlayOnTopTest, RejectBackgroundColor) { | 858 TEST_F(SingleOverlayOnTopTest, RejectBackgroundColor) { |
859 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 859 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
860 TextureDrawQuad* quad = | 860 TextureDrawQuad* quad = |
861 CreateFullscreenCandidateQuad(resource_provider_.get(), | 861 CreateFullscreenCandidateQuad(resource_provider_.get(), |
862 pass->shared_quad_state_list.back(), | 862 pass->shared_quad_state_list.back(), |
863 pass.get()); | 863 pass.get()); |
864 quad->background_color = SK_ColorBLACK; | 864 quad->background_color = SK_ColorBLACK; |
865 | 865 |
866 RenderPassList pass_list; | 866 RenderPassList pass_list; |
867 pass_list.push_back(pass.Pass()); | 867 pass_list.push_back(std::move(pass)); |
868 OverlayCandidateList candidate_list; | 868 OverlayCandidateList candidate_list; |
869 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 869 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
870 &candidate_list, &damage_rect_); | 870 &candidate_list, &damage_rect_); |
871 ASSERT_EQ(1U, pass_list.size()); | 871 ASSERT_EQ(1U, pass_list.size()); |
872 EXPECT_EQ(0U, candidate_list.size()); | 872 EXPECT_EQ(0U, candidate_list.size()); |
873 } | 873 } |
874 | 874 |
875 TEST_F(SingleOverlayOnTopTest, RejectBlendMode) { | 875 TEST_F(SingleOverlayOnTopTest, RejectBlendMode) { |
876 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 876 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
877 CreateFullscreenCandidateQuad(resource_provider_.get(), | 877 CreateFullscreenCandidateQuad(resource_provider_.get(), |
878 pass->shared_quad_state_list.back(), | 878 pass->shared_quad_state_list.back(), |
879 pass.get()); | 879 pass.get()); |
880 pass->shared_quad_state_list.back()->blend_mode = SkXfermode::kScreen_Mode; | 880 pass->shared_quad_state_list.back()->blend_mode = SkXfermode::kScreen_Mode; |
881 | 881 |
882 RenderPassList pass_list; | 882 RenderPassList pass_list; |
883 pass_list.push_back(pass.Pass()); | 883 pass_list.push_back(std::move(pass)); |
884 OverlayCandidateList candidate_list; | 884 OverlayCandidateList candidate_list; |
885 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 885 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
886 &candidate_list, &damage_rect_); | 886 &candidate_list, &damage_rect_); |
887 ASSERT_EQ(1U, pass_list.size()); | 887 ASSERT_EQ(1U, pass_list.size()); |
888 EXPECT_EQ(0U, candidate_list.size()); | 888 EXPECT_EQ(0U, candidate_list.size()); |
889 } | 889 } |
890 | 890 |
891 TEST_F(SingleOverlayOnTopTest, RejectOpacity) { | 891 TEST_F(SingleOverlayOnTopTest, RejectOpacity) { |
892 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 892 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
893 CreateFullscreenCandidateQuad(resource_provider_.get(), | 893 CreateFullscreenCandidateQuad(resource_provider_.get(), |
894 pass->shared_quad_state_list.back(), | 894 pass->shared_quad_state_list.back(), |
895 pass.get()); | 895 pass.get()); |
896 pass->shared_quad_state_list.back()->opacity = 0.5f; | 896 pass->shared_quad_state_list.back()->opacity = 0.5f; |
897 | 897 |
898 RenderPassList pass_list; | 898 RenderPassList pass_list; |
899 pass_list.push_back(pass.Pass()); | 899 pass_list.push_back(std::move(pass)); |
900 OverlayCandidateList candidate_list; | 900 OverlayCandidateList candidate_list; |
901 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 901 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
902 &candidate_list, &damage_rect_); | 902 &candidate_list, &damage_rect_); |
903 ASSERT_EQ(1U, pass_list.size()); | 903 ASSERT_EQ(1U, pass_list.size()); |
904 EXPECT_EQ(0U, candidate_list.size()); | 904 EXPECT_EQ(0U, candidate_list.size()); |
905 } | 905 } |
906 | 906 |
907 TEST_F(SingleOverlayOnTopTest, RejectNonAxisAlignedTransform) { | 907 TEST_F(SingleOverlayOnTopTest, RejectNonAxisAlignedTransform) { |
908 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 908 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
909 CreateFullscreenCandidateQuad(resource_provider_.get(), | 909 CreateFullscreenCandidateQuad(resource_provider_.get(), |
910 pass->shared_quad_state_list.back(), | 910 pass->shared_quad_state_list.back(), |
911 pass.get()); | 911 pass.get()); |
912 pass->shared_quad_state_list.back() | 912 pass->shared_quad_state_list.back() |
913 ->quad_to_target_transform.RotateAboutXAxis(45.f); | 913 ->quad_to_target_transform.RotateAboutXAxis(45.f); |
914 | 914 |
915 RenderPassList pass_list; | 915 RenderPassList pass_list; |
916 pass_list.push_back(pass.Pass()); | 916 pass_list.push_back(std::move(pass)); |
917 OverlayCandidateList candidate_list; | 917 OverlayCandidateList candidate_list; |
918 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 918 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
919 &candidate_list, &damage_rect_); | 919 &candidate_list, &damage_rect_); |
920 ASSERT_EQ(1U, pass_list.size()); | 920 ASSERT_EQ(1U, pass_list.size()); |
921 EXPECT_EQ(0U, candidate_list.size()); | 921 EXPECT_EQ(0U, candidate_list.size()); |
922 } | 922 } |
923 | 923 |
924 TEST_F(SingleOverlayOnTopTest, AllowClipped) { | 924 TEST_F(SingleOverlayOnTopTest, AllowClipped) { |
925 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 925 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
926 CreateFullscreenCandidateQuad(resource_provider_.get(), | 926 CreateFullscreenCandidateQuad(resource_provider_.get(), |
927 pass->shared_quad_state_list.back(), | 927 pass->shared_quad_state_list.back(), |
928 pass.get()); | 928 pass.get()); |
929 pass->shared_quad_state_list.back()->is_clipped = true; | 929 pass->shared_quad_state_list.back()->is_clipped = true; |
930 pass->shared_quad_state_list.back()->clip_rect = kOverlayClipRect; | 930 pass->shared_quad_state_list.back()->clip_rect = kOverlayClipRect; |
931 | 931 |
932 RenderPassList pass_list; | 932 RenderPassList pass_list; |
933 pass_list.push_back(pass.Pass()); | 933 pass_list.push_back(std::move(pass)); |
934 OverlayCandidateList candidate_list; | 934 OverlayCandidateList candidate_list; |
935 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 935 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
936 &candidate_list, &damage_rect_); | 936 &candidate_list, &damage_rect_); |
937 ASSERT_EQ(1U, pass_list.size()); | 937 ASSERT_EQ(1U, pass_list.size()); |
938 EXPECT_EQ(1U, candidate_list.size()); | 938 EXPECT_EQ(1U, candidate_list.size()); |
939 } | 939 } |
940 | 940 |
941 TEST_F(SingleOverlayOnTopTest, AllowVerticalFlip) { | 941 TEST_F(SingleOverlayOnTopTest, AllowVerticalFlip) { |
942 gfx::Rect rect = kOverlayRect; | 942 gfx::Rect rect = kOverlayRect; |
943 rect.set_width(rect.width() / 2); | 943 rect.set_width(rect.width() / 2); |
944 rect.Offset(0, -rect.height()); | 944 rect.Offset(0, -rect.height()); |
945 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 945 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
946 CreateCandidateQuadAt(resource_provider_.get(), | 946 CreateCandidateQuadAt(resource_provider_.get(), |
947 pass->shared_quad_state_list.back(), pass.get(), rect); | 947 pass->shared_quad_state_list.back(), pass.get(), rect); |
948 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(2.0f, | 948 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(2.0f, |
949 -1.0f); | 949 -1.0f); |
950 | 950 |
951 RenderPassList pass_list; | 951 RenderPassList pass_list; |
952 pass_list.push_back(pass.Pass()); | 952 pass_list.push_back(std::move(pass)); |
953 OverlayCandidateList candidate_list; | 953 OverlayCandidateList candidate_list; |
954 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 954 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
955 &candidate_list, &damage_rect_); | 955 &candidate_list, &damage_rect_); |
956 ASSERT_EQ(1U, pass_list.size()); | 956 ASSERT_EQ(1U, pass_list.size()); |
957 ASSERT_EQ(1U, candidate_list.size()); | 957 ASSERT_EQ(1U, candidate_list.size()); |
958 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_VERTICAL, | 958 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_VERTICAL, |
959 candidate_list.back().transform); | 959 candidate_list.back().transform); |
960 } | 960 } |
961 | 961 |
962 TEST_F(SingleOverlayOnTopTest, AllowHorizontalFlip) { | 962 TEST_F(SingleOverlayOnTopTest, AllowHorizontalFlip) { |
963 gfx::Rect rect = kOverlayRect; | 963 gfx::Rect rect = kOverlayRect; |
964 rect.set_height(rect.height() / 2); | 964 rect.set_height(rect.height() / 2); |
965 rect.Offset(-rect.width(), 0); | 965 rect.Offset(-rect.width(), 0); |
966 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 966 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
967 CreateCandidateQuadAt(resource_provider_.get(), | 967 CreateCandidateQuadAt(resource_provider_.get(), |
968 pass->shared_quad_state_list.back(), pass.get(), rect); | 968 pass->shared_quad_state_list.back(), pass.get(), rect); |
969 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(-1.0f, | 969 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(-1.0f, |
970 2.0f); | 970 2.0f); |
971 | 971 |
972 RenderPassList pass_list; | 972 RenderPassList pass_list; |
973 pass_list.push_back(pass.Pass()); | 973 pass_list.push_back(std::move(pass)); |
974 OverlayCandidateList candidate_list; | 974 OverlayCandidateList candidate_list; |
975 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 975 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
976 &candidate_list, &damage_rect_); | 976 &candidate_list, &damage_rect_); |
977 ASSERT_EQ(1U, pass_list.size()); | 977 ASSERT_EQ(1U, pass_list.size()); |
978 ASSERT_EQ(1U, candidate_list.size()); | 978 ASSERT_EQ(1U, candidate_list.size()); |
979 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_HORIZONTAL, | 979 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_HORIZONTAL, |
980 candidate_list.back().transform); | 980 candidate_list.back().transform); |
981 } | 981 } |
982 | 982 |
983 TEST_F(SingleOverlayOnTopTest, AllowPositiveScaleTransform) { | 983 TEST_F(SingleOverlayOnTopTest, AllowPositiveScaleTransform) { |
984 gfx::Rect rect = kOverlayRect; | 984 gfx::Rect rect = kOverlayRect; |
985 rect.set_width(rect.width() / 2); | 985 rect.set_width(rect.width() / 2); |
986 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 986 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
987 CreateCandidateQuadAt(resource_provider_.get(), | 987 CreateCandidateQuadAt(resource_provider_.get(), |
988 pass->shared_quad_state_list.back(), pass.get(), rect); | 988 pass->shared_quad_state_list.back(), pass.get(), rect); |
989 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(2.0f, | 989 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(2.0f, |
990 1.0f); | 990 1.0f); |
991 | 991 |
992 RenderPassList pass_list; | 992 RenderPassList pass_list; |
993 pass_list.push_back(pass.Pass()); | 993 pass_list.push_back(std::move(pass)); |
994 OverlayCandidateList candidate_list; | 994 OverlayCandidateList candidate_list; |
995 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 995 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
996 &candidate_list, &damage_rect_); | 996 &candidate_list, &damage_rect_); |
997 ASSERT_EQ(1U, pass_list.size()); | 997 ASSERT_EQ(1U, pass_list.size()); |
998 EXPECT_EQ(1U, candidate_list.size()); | 998 EXPECT_EQ(1U, candidate_list.size()); |
999 } | 999 } |
1000 | 1000 |
1001 TEST_F(SingleOverlayOnTopTest, Allow90DegreeRotation) { | 1001 TEST_F(SingleOverlayOnTopTest, Allow90DegreeRotation) { |
1002 gfx::Rect rect = kOverlayRect; | 1002 gfx::Rect rect = kOverlayRect; |
1003 rect.Offset(0, -rect.height()); | 1003 rect.Offset(0, -rect.height()); |
1004 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1004 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
1005 CreateCandidateQuadAt(resource_provider_.get(), | 1005 CreateCandidateQuadAt(resource_provider_.get(), |
1006 pass->shared_quad_state_list.back(), pass.get(), rect); | 1006 pass->shared_quad_state_list.back(), pass.get(), rect); |
1007 pass->shared_quad_state_list.back() | 1007 pass->shared_quad_state_list.back() |
1008 ->quad_to_target_transform.RotateAboutZAxis(90.f); | 1008 ->quad_to_target_transform.RotateAboutZAxis(90.f); |
1009 | 1009 |
1010 RenderPassList pass_list; | 1010 RenderPassList pass_list; |
1011 pass_list.push_back(pass.Pass()); | 1011 pass_list.push_back(std::move(pass)); |
1012 OverlayCandidateList candidate_list; | 1012 OverlayCandidateList candidate_list; |
1013 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1013 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
1014 &candidate_list, &damage_rect_); | 1014 &candidate_list, &damage_rect_); |
1015 ASSERT_EQ(1U, pass_list.size()); | 1015 ASSERT_EQ(1U, pass_list.size()); |
1016 ASSERT_EQ(1U, candidate_list.size()); | 1016 ASSERT_EQ(1U, candidate_list.size()); |
1017 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_90, candidate_list.back().transform); | 1017 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_90, candidate_list.back().transform); |
1018 } | 1018 } |
1019 | 1019 |
1020 TEST_F(SingleOverlayOnTopTest, Allow180DegreeRotation) { | 1020 TEST_F(SingleOverlayOnTopTest, Allow180DegreeRotation) { |
1021 gfx::Rect rect = kOverlayRect; | 1021 gfx::Rect rect = kOverlayRect; |
1022 rect.Offset(-rect.width(), -rect.height()); | 1022 rect.Offset(-rect.width(), -rect.height()); |
1023 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1023 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
1024 CreateCandidateQuadAt(resource_provider_.get(), | 1024 CreateCandidateQuadAt(resource_provider_.get(), |
1025 pass->shared_quad_state_list.back(), pass.get(), rect); | 1025 pass->shared_quad_state_list.back(), pass.get(), rect); |
1026 pass->shared_quad_state_list.back() | 1026 pass->shared_quad_state_list.back() |
1027 ->quad_to_target_transform.RotateAboutZAxis(180.f); | 1027 ->quad_to_target_transform.RotateAboutZAxis(180.f); |
1028 | 1028 |
1029 RenderPassList pass_list; | 1029 RenderPassList pass_list; |
1030 pass_list.push_back(pass.Pass()); | 1030 pass_list.push_back(std::move(pass)); |
1031 OverlayCandidateList candidate_list; | 1031 OverlayCandidateList candidate_list; |
1032 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1032 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
1033 &candidate_list, &damage_rect_); | 1033 &candidate_list, &damage_rect_); |
1034 ASSERT_EQ(1U, pass_list.size()); | 1034 ASSERT_EQ(1U, pass_list.size()); |
1035 ASSERT_EQ(1U, candidate_list.size()); | 1035 ASSERT_EQ(1U, candidate_list.size()); |
1036 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_180, candidate_list.back().transform); | 1036 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_180, candidate_list.back().transform); |
1037 } | 1037 } |
1038 | 1038 |
1039 TEST_F(SingleOverlayOnTopTest, Allow270DegreeRotation) { | 1039 TEST_F(SingleOverlayOnTopTest, Allow270DegreeRotation) { |
1040 gfx::Rect rect = kOverlayRect; | 1040 gfx::Rect rect = kOverlayRect; |
1041 rect.Offset(-rect.width(), 0); | 1041 rect.Offset(-rect.width(), 0); |
1042 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1042 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
1043 CreateCandidateQuadAt(resource_provider_.get(), | 1043 CreateCandidateQuadAt(resource_provider_.get(), |
1044 pass->shared_quad_state_list.back(), pass.get(), rect); | 1044 pass->shared_quad_state_list.back(), pass.get(), rect); |
1045 pass->shared_quad_state_list.back() | 1045 pass->shared_quad_state_list.back() |
1046 ->quad_to_target_transform.RotateAboutZAxis(270.f); | 1046 ->quad_to_target_transform.RotateAboutZAxis(270.f); |
1047 | 1047 |
1048 RenderPassList pass_list; | 1048 RenderPassList pass_list; |
1049 pass_list.push_back(pass.Pass()); | 1049 pass_list.push_back(std::move(pass)); |
1050 OverlayCandidateList candidate_list; | 1050 OverlayCandidateList candidate_list; |
1051 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1051 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
1052 &candidate_list, &damage_rect_); | 1052 &candidate_list, &damage_rect_); |
1053 ASSERT_EQ(1U, pass_list.size()); | 1053 ASSERT_EQ(1U, pass_list.size()); |
1054 ASSERT_EQ(1U, candidate_list.size()); | 1054 ASSERT_EQ(1U, candidate_list.size()); |
1055 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_270, candidate_list.back().transform); | 1055 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_270, candidate_list.back().transform); |
1056 } | 1056 } |
1057 | 1057 |
1058 TEST_F(SingleOverlayOnTopTest, AllowNotTopIfNotOccluded) { | 1058 TEST_F(SingleOverlayOnTopTest, AllowNotTopIfNotOccluded) { |
1059 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1059 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
1060 CreateOpaqueQuadAt(resource_provider_.get(), | 1060 CreateOpaqueQuadAt(resource_provider_.get(), |
1061 pass->shared_quad_state_list.back(), pass.get(), | 1061 pass->shared_quad_state_list.back(), pass.get(), |
1062 kOverlayTopLeftRect); | 1062 kOverlayTopLeftRect); |
1063 CreateCandidateQuadAt(resource_provider_.get(), | 1063 CreateCandidateQuadAt(resource_provider_.get(), |
1064 pass->shared_quad_state_list.back(), | 1064 pass->shared_quad_state_list.back(), |
1065 pass.get(), | 1065 pass.get(), |
1066 kOverlayBottomRightRect); | 1066 kOverlayBottomRightRect); |
1067 | 1067 |
1068 RenderPassList pass_list; | 1068 RenderPassList pass_list; |
1069 pass_list.push_back(pass.Pass()); | 1069 pass_list.push_back(std::move(pass)); |
1070 | 1070 |
1071 RenderPassList original_pass_list; | 1071 RenderPassList original_pass_list; |
1072 RenderPass::CopyAll(pass_list, &original_pass_list); | 1072 RenderPass::CopyAll(pass_list, &original_pass_list); |
1073 | 1073 |
1074 OverlayCandidateList candidate_list; | 1074 OverlayCandidateList candidate_list; |
1075 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1075 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
1076 &candidate_list, &damage_rect_); | 1076 &candidate_list, &damage_rect_); |
1077 EXPECT_EQ(1U, pass_list.size()); | 1077 EXPECT_EQ(1U, pass_list.size()); |
1078 EXPECT_EQ(1U, candidate_list.size()); | 1078 EXPECT_EQ(1U, candidate_list.size()); |
1079 } | 1079 } |
1080 | 1080 |
1081 TEST_F(SingleOverlayOnTopTest, AllowTransparentOnTop) { | 1081 TEST_F(SingleOverlayOnTopTest, AllowTransparentOnTop) { |
1082 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1082 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
1083 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); | 1083 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); |
1084 shared_state->opacity = 0.f; | 1084 shared_state->opacity = 0.f; |
1085 CreateSolidColorQuadAt(shared_state, SK_ColorBLACK, pass.get(), | 1085 CreateSolidColorQuadAt(shared_state, SK_ColorBLACK, pass.get(), |
1086 kOverlayBottomRightRect); | 1086 kOverlayBottomRightRect); |
1087 shared_state = pass->CreateAndAppendSharedQuadState(); | 1087 shared_state = pass->CreateAndAppendSharedQuadState(); |
1088 shared_state->opacity = 1.f; | 1088 shared_state->opacity = 1.f; |
1089 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(), | 1089 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(), |
1090 kOverlayBottomRightRect); | 1090 kOverlayBottomRightRect); |
1091 | 1091 |
1092 RenderPassList pass_list; | 1092 RenderPassList pass_list; |
1093 pass_list.push_back(pass.Pass()); | 1093 pass_list.push_back(std::move(pass)); |
1094 | 1094 |
1095 RenderPassList original_pass_list; | 1095 RenderPassList original_pass_list; |
1096 RenderPass::CopyAll(pass_list, &original_pass_list); | 1096 RenderPass::CopyAll(pass_list, &original_pass_list); |
1097 | 1097 |
1098 OverlayCandidateList candidate_list; | 1098 OverlayCandidateList candidate_list; |
1099 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1099 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
1100 &candidate_list, &damage_rect_); | 1100 &candidate_list, &damage_rect_); |
1101 EXPECT_EQ(1U, pass_list.size()); | 1101 EXPECT_EQ(1U, pass_list.size()); |
1102 EXPECT_EQ(1U, candidate_list.size()); | 1102 EXPECT_EQ(1U, candidate_list.size()); |
1103 } | 1103 } |
1104 | 1104 |
1105 TEST_F(SingleOverlayOnTopTest, AllowTransparentColorOnTop) { | 1105 TEST_F(SingleOverlayOnTopTest, AllowTransparentColorOnTop) { |
1106 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1106 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
1107 CreateSolidColorQuadAt(pass->shared_quad_state_list.back(), | 1107 CreateSolidColorQuadAt(pass->shared_quad_state_list.back(), |
1108 SK_ColorTRANSPARENT, pass.get(), | 1108 SK_ColorTRANSPARENT, pass.get(), |
1109 kOverlayBottomRightRect); | 1109 kOverlayBottomRightRect); |
1110 CreateCandidateQuadAt(resource_provider_.get(), | 1110 CreateCandidateQuadAt(resource_provider_.get(), |
1111 pass->shared_quad_state_list.back(), pass.get(), | 1111 pass->shared_quad_state_list.back(), pass.get(), |
1112 kOverlayBottomRightRect); | 1112 kOverlayBottomRightRect); |
1113 | 1113 |
1114 RenderPassList pass_list; | 1114 RenderPassList pass_list; |
1115 pass_list.push_back(pass.Pass()); | 1115 pass_list.push_back(std::move(pass)); |
1116 | 1116 |
1117 RenderPassList original_pass_list; | 1117 RenderPassList original_pass_list; |
1118 RenderPass::CopyAll(pass_list, &original_pass_list); | 1118 RenderPass::CopyAll(pass_list, &original_pass_list); |
1119 | 1119 |
1120 OverlayCandidateList candidate_list; | 1120 OverlayCandidateList candidate_list; |
1121 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1121 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
1122 &candidate_list, &damage_rect_); | 1122 &candidate_list, &damage_rect_); |
1123 EXPECT_EQ(1U, pass_list.size()); | 1123 EXPECT_EQ(1U, pass_list.size()); |
1124 EXPECT_EQ(1U, candidate_list.size()); | 1124 EXPECT_EQ(1U, candidate_list.size()); |
1125 } | 1125 } |
1126 | 1126 |
1127 TEST_F(SingleOverlayOnTopTest, RejectOpaqueColorOnTop) { | 1127 TEST_F(SingleOverlayOnTopTest, RejectOpaqueColorOnTop) { |
1128 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1128 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
1129 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); | 1129 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); |
1130 shared_state->opacity = 0.5f; | 1130 shared_state->opacity = 0.5f; |
1131 CreateSolidColorQuadAt(shared_state, SK_ColorBLACK, pass.get(), | 1131 CreateSolidColorQuadAt(shared_state, SK_ColorBLACK, pass.get(), |
1132 kOverlayBottomRightRect); | 1132 kOverlayBottomRightRect); |
1133 shared_state = pass->CreateAndAppendSharedQuadState(); | 1133 shared_state = pass->CreateAndAppendSharedQuadState(); |
1134 shared_state->opacity = 1.f; | 1134 shared_state->opacity = 1.f; |
1135 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(), | 1135 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(), |
1136 kOverlayBottomRightRect); | 1136 kOverlayBottomRightRect); |
1137 | 1137 |
1138 RenderPassList pass_list; | 1138 RenderPassList pass_list; |
1139 pass_list.push_back(pass.Pass()); | 1139 pass_list.push_back(std::move(pass)); |
1140 | 1140 |
1141 RenderPassList original_pass_list; | 1141 RenderPassList original_pass_list; |
1142 RenderPass::CopyAll(pass_list, &original_pass_list); | 1142 RenderPass::CopyAll(pass_list, &original_pass_list); |
1143 | 1143 |
1144 OverlayCandidateList candidate_list; | 1144 OverlayCandidateList candidate_list; |
1145 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1145 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
1146 &candidate_list, &damage_rect_); | 1146 &candidate_list, &damage_rect_); |
1147 EXPECT_EQ(1U, pass_list.size()); | 1147 EXPECT_EQ(1U, pass_list.size()); |
1148 EXPECT_EQ(0U, candidate_list.size()); | 1148 EXPECT_EQ(0U, candidate_list.size()); |
1149 } | 1149 } |
1150 | 1150 |
1151 TEST_F(SingleOverlayOnTopTest, RejectTransparentColorOnTopWithoutBlending) { | 1151 TEST_F(SingleOverlayOnTopTest, RejectTransparentColorOnTopWithoutBlending) { |
1152 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1152 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
1153 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); | 1153 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); |
1154 CreateSolidColorQuadAt(shared_state, SK_ColorTRANSPARENT, pass.get(), | 1154 CreateSolidColorQuadAt(shared_state, SK_ColorTRANSPARENT, pass.get(), |
1155 kOverlayBottomRightRect)->opaque_rect = | 1155 kOverlayBottomRightRect)->opaque_rect = |
1156 kOverlayBottomRightRect; | 1156 kOverlayBottomRightRect; |
1157 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(), | 1157 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(), |
1158 kOverlayBottomRightRect); | 1158 kOverlayBottomRightRect); |
1159 | 1159 |
1160 RenderPassList pass_list; | 1160 RenderPassList pass_list; |
1161 pass_list.push_back(pass.Pass()); | 1161 pass_list.push_back(std::move(pass)); |
1162 | 1162 |
1163 RenderPassList original_pass_list; | 1163 RenderPassList original_pass_list; |
1164 RenderPass::CopyAll(pass_list, &original_pass_list); | 1164 RenderPass::CopyAll(pass_list, &original_pass_list); |
1165 | 1165 |
1166 OverlayCandidateList candidate_list; | 1166 OverlayCandidateList candidate_list; |
1167 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1167 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
1168 &candidate_list, &damage_rect_); | 1168 &candidate_list, &damage_rect_); |
1169 EXPECT_EQ(1U, pass_list.size()); | 1169 EXPECT_EQ(1U, pass_list.size()); |
1170 EXPECT_EQ(0U, candidate_list.size()); | 1170 EXPECT_EQ(0U, candidate_list.size()); |
1171 } | 1171 } |
1172 | 1172 |
1173 TEST_F(SingleOverlayOnTopTest, RejectVideoSwapTransform) { | 1173 TEST_F(SingleOverlayOnTopTest, RejectVideoSwapTransform) { |
1174 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1174 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
1175 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), | 1175 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), |
1176 pass->shared_quad_state_list.back(), | 1176 pass->shared_quad_state_list.back(), |
1177 pass.get(), kSwapTransform); | 1177 pass.get(), kSwapTransform); |
1178 | 1178 |
1179 RenderPassList pass_list; | 1179 RenderPassList pass_list; |
1180 pass_list.push_back(pass.Pass()); | 1180 pass_list.push_back(std::move(pass)); |
1181 OverlayCandidateList candidate_list; | 1181 OverlayCandidateList candidate_list; |
1182 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1182 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
1183 &candidate_list, &damage_rect_); | 1183 &candidate_list, &damage_rect_); |
1184 ASSERT_EQ(1U, pass_list.size()); | 1184 ASSERT_EQ(1U, pass_list.size()); |
1185 EXPECT_EQ(0U, candidate_list.size()); | 1185 EXPECT_EQ(0U, candidate_list.size()); |
1186 } | 1186 } |
1187 | 1187 |
1188 TEST_F(SingleOverlayOnTopTest, AllowVideoXMirrorTransform) { | 1188 TEST_F(SingleOverlayOnTopTest, AllowVideoXMirrorTransform) { |
1189 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1189 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
1190 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), | 1190 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), |
1191 pass->shared_quad_state_list.back(), | 1191 pass->shared_quad_state_list.back(), |
1192 pass.get(), kXMirrorTransform); | 1192 pass.get(), kXMirrorTransform); |
1193 | 1193 |
1194 RenderPassList pass_list; | 1194 RenderPassList pass_list; |
1195 pass_list.push_back(pass.Pass()); | 1195 pass_list.push_back(std::move(pass)); |
1196 OverlayCandidateList candidate_list; | 1196 OverlayCandidateList candidate_list; |
1197 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1197 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
1198 &candidate_list, &damage_rect_); | 1198 &candidate_list, &damage_rect_); |
1199 ASSERT_EQ(1U, pass_list.size()); | 1199 ASSERT_EQ(1U, pass_list.size()); |
1200 EXPECT_EQ(1U, candidate_list.size()); | 1200 EXPECT_EQ(1U, candidate_list.size()); |
1201 } | 1201 } |
1202 | 1202 |
1203 TEST_F(SingleOverlayOnTopTest, AllowVideoBothMirrorTransform) { | 1203 TEST_F(SingleOverlayOnTopTest, AllowVideoBothMirrorTransform) { |
1204 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1204 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
1205 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), | 1205 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), |
1206 pass->shared_quad_state_list.back(), | 1206 pass->shared_quad_state_list.back(), |
1207 pass.get(), kBothMirrorTransform); | 1207 pass.get(), kBothMirrorTransform); |
1208 | 1208 |
1209 RenderPassList pass_list; | 1209 RenderPassList pass_list; |
1210 pass_list.push_back(pass.Pass()); | 1210 pass_list.push_back(std::move(pass)); |
1211 OverlayCandidateList candidate_list; | 1211 OverlayCandidateList candidate_list; |
1212 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1212 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
1213 &candidate_list, &damage_rect_); | 1213 &candidate_list, &damage_rect_); |
1214 ASSERT_EQ(1U, pass_list.size()); | 1214 ASSERT_EQ(1U, pass_list.size()); |
1215 EXPECT_EQ(1U, candidate_list.size()); | 1215 EXPECT_EQ(1U, candidate_list.size()); |
1216 } | 1216 } |
1217 | 1217 |
1218 TEST_F(SingleOverlayOnTopTest, AllowVideoNormalTransform) { | 1218 TEST_F(SingleOverlayOnTopTest, AllowVideoNormalTransform) { |
1219 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1219 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
1220 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), | 1220 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), |
1221 pass->shared_quad_state_list.back(), | 1221 pass->shared_quad_state_list.back(), |
1222 pass.get(), kNormalTransform); | 1222 pass.get(), kNormalTransform); |
1223 | 1223 |
1224 RenderPassList pass_list; | 1224 RenderPassList pass_list; |
1225 pass_list.push_back(pass.Pass()); | 1225 pass_list.push_back(std::move(pass)); |
1226 OverlayCandidateList candidate_list; | 1226 OverlayCandidateList candidate_list; |
1227 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1227 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
1228 &candidate_list, &damage_rect_); | 1228 &candidate_list, &damage_rect_); |
1229 ASSERT_EQ(1U, pass_list.size()); | 1229 ASSERT_EQ(1U, pass_list.size()); |
1230 EXPECT_EQ(1U, candidate_list.size()); | 1230 EXPECT_EQ(1U, candidate_list.size()); |
1231 } | 1231 } |
1232 | 1232 |
1233 TEST_F(SingleOverlayOnTopTest, AllowVideoYMirrorTransform) { | 1233 TEST_F(SingleOverlayOnTopTest, AllowVideoYMirrorTransform) { |
1234 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1234 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
1235 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), | 1235 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), |
1236 pass->shared_quad_state_list.back(), | 1236 pass->shared_quad_state_list.back(), |
1237 pass.get(), kYMirrorTransform); | 1237 pass.get(), kYMirrorTransform); |
1238 | 1238 |
1239 RenderPassList pass_list; | 1239 RenderPassList pass_list; |
1240 pass_list.push_back(pass.Pass()); | 1240 pass_list.push_back(std::move(pass)); |
1241 OverlayCandidateList candidate_list; | 1241 OverlayCandidateList candidate_list; |
1242 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1242 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
1243 &candidate_list, &damage_rect_); | 1243 &candidate_list, &damage_rect_); |
1244 ASSERT_EQ(1U, pass_list.size()); | 1244 ASSERT_EQ(1U, pass_list.size()); |
1245 EXPECT_EQ(1U, candidate_list.size()); | 1245 EXPECT_EQ(1U, candidate_list.size()); |
1246 } | 1246 } |
1247 | 1247 |
1248 TEST_F(UnderlayTest, OverlayLayerUnderMainLayer) { | 1248 TEST_F(UnderlayTest, OverlayLayerUnderMainLayer) { |
1249 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1249 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
1250 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 1250 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
1251 pass->shared_quad_state_list.back(), pass.get()); | 1251 pass->shared_quad_state_list.back(), pass.get()); |
1252 CreateCandidateQuadAt(resource_provider_.get(), | 1252 CreateCandidateQuadAt(resource_provider_.get(), |
1253 pass->shared_quad_state_list.back(), pass.get(), | 1253 pass->shared_quad_state_list.back(), pass.get(), |
1254 kOverlayBottomRightRect); | 1254 kOverlayBottomRightRect); |
1255 | 1255 |
1256 RenderPassList pass_list; | 1256 RenderPassList pass_list; |
1257 pass_list.push_back(pass.Pass()); | 1257 pass_list.push_back(std::move(pass)); |
1258 | 1258 |
1259 OverlayCandidateList candidate_list; | 1259 OverlayCandidateList candidate_list; |
1260 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1260 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
1261 &candidate_list, &damage_rect_); | 1261 &candidate_list, &damage_rect_); |
1262 EXPECT_EQ(1U, pass_list.size()); | 1262 EXPECT_EQ(1U, pass_list.size()); |
1263 ASSERT_EQ(1U, candidate_list.size()); | 1263 ASSERT_EQ(1U, candidate_list.size()); |
1264 EXPECT_EQ(-1, candidate_list[0].plane_z_order); | 1264 EXPECT_EQ(-1, candidate_list[0].plane_z_order); |
1265 EXPECT_EQ(2U, pass_list[0]->quad_list.size()); | 1265 EXPECT_EQ(2U, pass_list[0]->quad_list.size()); |
1266 // The overlay quad should have changed to a SOLID_COLOR quad. | 1266 // The overlay quad should have changed to a SOLID_COLOR quad. |
1267 EXPECT_EQ(pass_list[0]->quad_list.back()->material, DrawQuad::SOLID_COLOR); | 1267 EXPECT_EQ(pass_list[0]->quad_list.back()->material, DrawQuad::SOLID_COLOR); |
1268 } | 1268 } |
1269 | 1269 |
1270 TEST_F(UnderlayTest, AllowOnTop) { | 1270 TEST_F(UnderlayTest, AllowOnTop) { |
1271 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1271 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
1272 CreateFullscreenCandidateQuad(resource_provider_.get(), | 1272 CreateFullscreenCandidateQuad(resource_provider_.get(), |
1273 pass->shared_quad_state_list.back(), | 1273 pass->shared_quad_state_list.back(), |
1274 pass.get()); | 1274 pass.get()); |
1275 pass->CreateAndAppendSharedQuadState()->opacity = 0.5f; | 1275 pass->CreateAndAppendSharedQuadState()->opacity = 0.5f; |
1276 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 1276 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
1277 pass->shared_quad_state_list.back(), pass.get()); | 1277 pass->shared_quad_state_list.back(), pass.get()); |
1278 | 1278 |
1279 RenderPassList pass_list; | 1279 RenderPassList pass_list; |
1280 pass_list.push_back(pass.Pass()); | 1280 pass_list.push_back(std::move(pass)); |
1281 | 1281 |
1282 OverlayCandidateList candidate_list; | 1282 OverlayCandidateList candidate_list; |
1283 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1283 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
1284 &candidate_list, &damage_rect_); | 1284 &candidate_list, &damage_rect_); |
1285 EXPECT_EQ(1U, pass_list.size()); | 1285 EXPECT_EQ(1U, pass_list.size()); |
1286 ASSERT_EQ(1U, candidate_list.size()); | 1286 ASSERT_EQ(1U, candidate_list.size()); |
1287 EXPECT_EQ(-1, candidate_list[0].plane_z_order); | 1287 EXPECT_EQ(-1, candidate_list[0].plane_z_order); |
1288 // The overlay quad should have changed to a SOLID_COLOR quad. | 1288 // The overlay quad should have changed to a SOLID_COLOR quad. |
1289 EXPECT_EQ(pass_list[0]->quad_list.front()->material, DrawQuad::SOLID_COLOR); | 1289 EXPECT_EQ(pass_list[0]->quad_list.front()->material, DrawQuad::SOLID_COLOR); |
1290 } | 1290 } |
1291 | 1291 |
1292 TEST_F(UnderlayTest, DamageRect) { | 1292 TEST_F(UnderlayTest, DamageRect) { |
1293 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1293 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
1294 CreateFullscreenCandidateQuad(resource_provider_.get(), | 1294 CreateFullscreenCandidateQuad(resource_provider_.get(), |
1295 pass->shared_quad_state_list.back(), | 1295 pass->shared_quad_state_list.back(), |
1296 pass.get()); | 1296 pass.get()); |
1297 | 1297 |
1298 damage_rect_ = kOverlayRect; | 1298 damage_rect_ = kOverlayRect; |
1299 | 1299 |
1300 // Add something behind it. | 1300 // Add something behind it. |
1301 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 1301 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
1302 pass->shared_quad_state_list.back(), pass.get()); | 1302 pass->shared_quad_state_list.back(), pass.get()); |
1303 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 1303 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
1304 pass->shared_quad_state_list.back(), pass.get()); | 1304 pass->shared_quad_state_list.back(), pass.get()); |
1305 | 1305 |
1306 RenderPassList pass_list; | 1306 RenderPassList pass_list; |
1307 pass_list.push_back(pass.Pass()); | 1307 pass_list.push_back(std::move(pass)); |
1308 | 1308 |
1309 // Check for potential candidates. | 1309 // Check for potential candidates. |
1310 OverlayCandidateList candidate_list; | 1310 OverlayCandidateList candidate_list; |
1311 | 1311 |
1312 // Primary plane. | 1312 // Primary plane. |
1313 OverlayCandidate output_surface_plane; | 1313 OverlayCandidate output_surface_plane; |
1314 output_surface_plane.display_rect = gfx::RectF(kOverlayRect); | 1314 output_surface_plane.display_rect = gfx::RectF(kOverlayRect); |
1315 output_surface_plane.quad_rect_in_target_space = kOverlayRect; | 1315 output_surface_plane.quad_rect_in_target_space = kOverlayRect; |
1316 output_surface_plane.use_output_surface_for_resource = true; | 1316 output_surface_plane.use_output_surface_for_resource = true; |
1317 output_surface_plane.overlay_handled = true; | 1317 output_surface_plane.overlay_handled = true; |
(...skipping 18 matching lines...) Expand all Loading... |
1336 | 1336 |
1337 TEST_F(CALayerOverlayTest, AllowNonAxisAlignedTransform) { | 1337 TEST_F(CALayerOverlayTest, AllowNonAxisAlignedTransform) { |
1338 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1338 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
1339 CreateFullscreenCandidateQuad(resource_provider_.get(), | 1339 CreateFullscreenCandidateQuad(resource_provider_.get(), |
1340 pass->shared_quad_state_list.back(), | 1340 pass->shared_quad_state_list.back(), |
1341 pass.get()); | 1341 pass.get()); |
1342 pass->shared_quad_state_list.back() | 1342 pass->shared_quad_state_list.back() |
1343 ->quad_to_target_transform.RotateAboutZAxis(45.f); | 1343 ->quad_to_target_transform.RotateAboutZAxis(45.f); |
1344 | 1344 |
1345 RenderPassList pass_list; | 1345 RenderPassList pass_list; |
1346 pass_list.push_back(pass.Pass()); | 1346 pass_list.push_back(std::move(pass)); |
1347 CALayerOverlayList ca_layer_list; | 1347 CALayerOverlayList ca_layer_list; |
1348 OverlayCandidateList overlay_list( | 1348 OverlayCandidateList overlay_list( |
1349 BackbufferOverlayList(pass_list.back().get())); | 1349 BackbufferOverlayList(pass_list.back().get())); |
1350 overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list, | 1350 overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list, |
1351 &ca_layer_list, &overlay_list); | 1351 &ca_layer_list, &overlay_list); |
1352 ASSERT_EQ(1U, pass_list.size()); | 1352 ASSERT_EQ(1U, pass_list.size()); |
1353 EXPECT_EQ(0U, pass_list.back()->quad_list.size()); | 1353 EXPECT_EQ(0U, pass_list.back()->quad_list.size()); |
1354 EXPECT_EQ(0U, overlay_list.size()); | 1354 EXPECT_EQ(0U, overlay_list.size()); |
1355 EXPECT_EQ(1U, ca_layer_list.size()); | 1355 EXPECT_EQ(1U, ca_layer_list.size()); |
1356 } | 1356 } |
1357 | 1357 |
1358 TEST_F(CALayerOverlayTest, Disallow3DTransform) { | 1358 TEST_F(CALayerOverlayTest, Disallow3DTransform) { |
1359 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1359 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
1360 CreateFullscreenCandidateQuad(resource_provider_.get(), | 1360 CreateFullscreenCandidateQuad(resource_provider_.get(), |
1361 pass->shared_quad_state_list.back(), | 1361 pass->shared_quad_state_list.back(), |
1362 pass.get()); | 1362 pass.get()); |
1363 pass->shared_quad_state_list.back() | 1363 pass->shared_quad_state_list.back() |
1364 ->quad_to_target_transform.RotateAboutXAxis(45.f); | 1364 ->quad_to_target_transform.RotateAboutXAxis(45.f); |
1365 | 1365 |
1366 RenderPassList pass_list; | 1366 RenderPassList pass_list; |
1367 pass_list.push_back(pass.Pass()); | 1367 pass_list.push_back(std::move(pass)); |
1368 CALayerOverlayList ca_layer_list; | 1368 CALayerOverlayList ca_layer_list; |
1369 OverlayCandidateList overlay_list( | 1369 OverlayCandidateList overlay_list( |
1370 BackbufferOverlayList(pass_list.back().get())); | 1370 BackbufferOverlayList(pass_list.back().get())); |
1371 overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list, | 1371 overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list, |
1372 &ca_layer_list, &overlay_list); | 1372 &ca_layer_list, &overlay_list); |
1373 ASSERT_EQ(1U, pass_list.size()); | 1373 ASSERT_EQ(1U, pass_list.size()); |
1374 EXPECT_EQ(1U, pass_list.back()->quad_list.size()); | 1374 EXPECT_EQ(1U, pass_list.back()->quad_list.size()); |
1375 EXPECT_EQ(1U, overlay_list.size()); | 1375 EXPECT_EQ(1U, overlay_list.size()); |
1376 EXPECT_EQ(0U, ca_layer_list.size()); | 1376 EXPECT_EQ(0U, ca_layer_list.size()); |
1377 } | 1377 } |
1378 | 1378 |
1379 TEST_F(CALayerOverlayTest, AllowContainingClip) { | 1379 TEST_F(CALayerOverlayTest, AllowContainingClip) { |
1380 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1380 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
1381 CreateFullscreenCandidateQuad(resource_provider_.get(), | 1381 CreateFullscreenCandidateQuad(resource_provider_.get(), |
1382 pass->shared_quad_state_list.back(), | 1382 pass->shared_quad_state_list.back(), |
1383 pass.get()); | 1383 pass.get()); |
1384 pass->shared_quad_state_list.back()->is_clipped = true; | 1384 pass->shared_quad_state_list.back()->is_clipped = true; |
1385 pass->shared_quad_state_list.back()->clip_rect = kOverlayRect; | 1385 pass->shared_quad_state_list.back()->clip_rect = kOverlayRect; |
1386 | 1386 |
1387 RenderPassList pass_list; | 1387 RenderPassList pass_list; |
1388 pass_list.push_back(pass.Pass()); | 1388 pass_list.push_back(std::move(pass)); |
1389 CALayerOverlayList ca_layer_list; | 1389 CALayerOverlayList ca_layer_list; |
1390 OverlayCandidateList overlay_list( | 1390 OverlayCandidateList overlay_list( |
1391 BackbufferOverlayList(pass_list.back().get())); | 1391 BackbufferOverlayList(pass_list.back().get())); |
1392 overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list, | 1392 overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list, |
1393 &ca_layer_list, &overlay_list); | 1393 &ca_layer_list, &overlay_list); |
1394 ASSERT_EQ(1U, pass_list.size()); | 1394 ASSERT_EQ(1U, pass_list.size()); |
1395 EXPECT_EQ(0U, pass_list.back()->quad_list.size()); | 1395 EXPECT_EQ(0U, pass_list.back()->quad_list.size()); |
1396 EXPECT_EQ(0U, overlay_list.size()); | 1396 EXPECT_EQ(0U, overlay_list.size()); |
1397 EXPECT_EQ(1U, ca_layer_list.size()); | 1397 EXPECT_EQ(1U, ca_layer_list.size()); |
1398 } | 1398 } |
1399 | 1399 |
1400 TEST_F(CALayerOverlayTest, SkipDisjointClip) { | 1400 TEST_F(CALayerOverlayTest, SkipDisjointClip) { |
1401 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1401 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
1402 CreateFullscreenCandidateQuad(resource_provider_.get(), | 1402 CreateFullscreenCandidateQuad(resource_provider_.get(), |
1403 pass->shared_quad_state_list.back(), | 1403 pass->shared_quad_state_list.back(), |
1404 pass.get()); | 1404 pass.get()); |
1405 pass->shared_quad_state_list.back()->is_clipped = true; | 1405 pass->shared_quad_state_list.back()->is_clipped = true; |
1406 pass->shared_quad_state_list.back()->clip_rect = | 1406 pass->shared_quad_state_list.back()->clip_rect = |
1407 gfx::Rect(128, 128, 128, 128); | 1407 gfx::Rect(128, 128, 128, 128); |
1408 | 1408 |
1409 RenderPassList pass_list; | 1409 RenderPassList pass_list; |
1410 pass_list.push_back(pass.Pass()); | 1410 pass_list.push_back(std::move(pass)); |
1411 CALayerOverlayList ca_layer_list; | 1411 CALayerOverlayList ca_layer_list; |
1412 OverlayCandidateList overlay_list( | 1412 OverlayCandidateList overlay_list( |
1413 BackbufferOverlayList(pass_list.back().get())); | 1413 BackbufferOverlayList(pass_list.back().get())); |
1414 overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list, | 1414 overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list, |
1415 &ca_layer_list, &overlay_list); | 1415 &ca_layer_list, &overlay_list); |
1416 ASSERT_EQ(1U, pass_list.size()); | 1416 ASSERT_EQ(1U, pass_list.size()); |
1417 EXPECT_EQ(0U, pass_list.back()->quad_list.size()); | 1417 EXPECT_EQ(0U, pass_list.back()->quad_list.size()); |
1418 EXPECT_EQ(0U, overlay_list.size()); | 1418 EXPECT_EQ(0U, overlay_list.size()); |
1419 EXPECT_EQ(0U, ca_layer_list.size()); | 1419 EXPECT_EQ(0U, ca_layer_list.size()); |
1420 } | 1420 } |
1421 | 1421 |
1422 TEST_F(CALayerOverlayTest, DisallowNontrivialClip) { | 1422 TEST_F(CALayerOverlayTest, DisallowNontrivialClip) { |
1423 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1423 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
1424 CreateFullscreenCandidateQuad(resource_provider_.get(), | 1424 CreateFullscreenCandidateQuad(resource_provider_.get(), |
1425 pass->shared_quad_state_list.back(), | 1425 pass->shared_quad_state_list.back(), |
1426 pass.get()); | 1426 pass.get()); |
1427 pass->shared_quad_state_list.back()->is_clipped = true; | 1427 pass->shared_quad_state_list.back()->is_clipped = true; |
1428 pass->shared_quad_state_list.back()->clip_rect = gfx::Rect(64, 64, 128, 128); | 1428 pass->shared_quad_state_list.back()->clip_rect = gfx::Rect(64, 64, 128, 128); |
1429 | 1429 |
1430 RenderPassList pass_list; | 1430 RenderPassList pass_list; |
1431 pass_list.push_back(pass.Pass()); | 1431 pass_list.push_back(std::move(pass)); |
1432 CALayerOverlayList ca_layer_list; | 1432 CALayerOverlayList ca_layer_list; |
1433 OverlayCandidateList overlay_list( | 1433 OverlayCandidateList overlay_list( |
1434 BackbufferOverlayList(pass_list.back().get())); | 1434 BackbufferOverlayList(pass_list.back().get())); |
1435 overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list, | 1435 overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list, |
1436 &ca_layer_list, &overlay_list); | 1436 &ca_layer_list, &overlay_list); |
1437 | 1437 |
1438 ASSERT_EQ(1U, pass_list.size()); | 1438 ASSERT_EQ(1U, pass_list.size()); |
1439 EXPECT_EQ(1U, pass_list.back()->quad_list.size()); | 1439 EXPECT_EQ(1U, pass_list.back()->quad_list.size()); |
1440 EXPECT_EQ(1U, overlay_list.size()); | 1440 EXPECT_EQ(1U, overlay_list.size()); |
1441 EXPECT_EQ(0U, ca_layer_list.size()); | 1441 EXPECT_EQ(0U, ca_layer_list.size()); |
1442 } | 1442 } |
1443 | 1443 |
1444 TEST_F(CALayerOverlayTest, SkipTransparent) { | 1444 TEST_F(CALayerOverlayTest, SkipTransparent) { |
1445 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1445 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
1446 CreateFullscreenCandidateQuad(resource_provider_.get(), | 1446 CreateFullscreenCandidateQuad(resource_provider_.get(), |
1447 pass->shared_quad_state_list.back(), | 1447 pass->shared_quad_state_list.back(), |
1448 pass.get()); | 1448 pass.get()); |
1449 pass->shared_quad_state_list.back()->opacity = 0; | 1449 pass->shared_quad_state_list.back()->opacity = 0; |
1450 | 1450 |
1451 RenderPassList pass_list; | 1451 RenderPassList pass_list; |
1452 pass_list.push_back(pass.Pass()); | 1452 pass_list.push_back(std::move(pass)); |
1453 CALayerOverlayList ca_layer_list; | 1453 CALayerOverlayList ca_layer_list; |
1454 OverlayCandidateList overlay_list( | 1454 OverlayCandidateList overlay_list( |
1455 BackbufferOverlayList(pass_list.back().get())); | 1455 BackbufferOverlayList(pass_list.back().get())); |
1456 overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list, | 1456 overlay_processor_->ProcessForCALayers(resource_provider_.get(), &pass_list, |
1457 &ca_layer_list, &overlay_list); | 1457 &ca_layer_list, &overlay_list); |
1458 ASSERT_EQ(1U, pass_list.size()); | 1458 ASSERT_EQ(1U, pass_list.size()); |
1459 EXPECT_EQ(0U, pass_list.back()->quad_list.size()); | 1459 EXPECT_EQ(0U, pass_list.back()->quad_list.size()); |
1460 EXPECT_EQ(0U, overlay_list.size()); | 1460 EXPECT_EQ(0U, overlay_list.size()); |
1461 EXPECT_EQ(0U, ca_layer_list.size()); | 1461 EXPECT_EQ(0U, ca_layer_list.size()); |
1462 } | 1462 } |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1564 | 1564 |
1565 CreateCandidateQuadAt(resource_provider_.get(), | 1565 CreateCandidateQuadAt(resource_provider_.get(), |
1566 pass->shared_quad_state_list.back(), pass.get(), | 1566 pass->shared_quad_state_list.back(), pass.get(), |
1567 kOverlayBottomRightRect); | 1567 kOverlayBottomRightRect); |
1568 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 1568 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
1569 pass->shared_quad_state_list.back(), pass.get()); | 1569 pass->shared_quad_state_list.back(), pass.get()); |
1570 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 1570 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
1571 pass->shared_quad_state_list.back(), pass.get()); | 1571 pass->shared_quad_state_list.back(), pass.get()); |
1572 | 1572 |
1573 RenderPassList pass_list; | 1573 RenderPassList pass_list; |
1574 pass_list.push_back(pass.Pass()); | 1574 pass_list.push_back(std::move(pass)); |
1575 | 1575 |
1576 // Candidate pass was taken out and extra skipped pass added, | 1576 // Candidate pass was taken out and extra skipped pass added, |
1577 // so only draw 2 quads. | 1577 // so only draw 2 quads. |
1578 EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(2); | 1578 EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(2); |
1579 EXPECT_CALL(scheduler_, | 1579 EXPECT_CALL(scheduler_, |
1580 Schedule(0, gfx::OVERLAY_TRANSFORM_NONE, _, | 1580 Schedule(0, gfx::OVERLAY_TRANSFORM_NONE, _, |
1581 gfx::Rect(kDisplaySize), gfx::RectF(0, 0, 1, 1))) | 1581 gfx::Rect(kDisplaySize), gfx::RectF(0, 0, 1, 1))) |
1582 .Times(1); | 1582 .Times(1); |
1583 EXPECT_CALL(scheduler_, Schedule(1, gfx::OVERLAY_TRANSFORM_NONE, _, | 1583 EXPECT_CALL(scheduler_, Schedule(1, gfx::OVERLAY_TRANSFORM_NONE, _, |
1584 kOverlayBottomRightRect, | 1584 kOverlayBottomRightRect, |
(...skipping 18 matching lines...) Expand all Loading... |
1603 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 1603 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
1604 pass->shared_quad_state_list.back(), pass.get()); | 1604 pass->shared_quad_state_list.back(), pass.get()); |
1605 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 1605 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
1606 pass->shared_quad_state_list.back(), pass.get()); | 1606 pass->shared_quad_state_list.back(), pass.get()); |
1607 | 1607 |
1608 CreateFullscreenCandidateQuad(resource_provider_.get(), | 1608 CreateFullscreenCandidateQuad(resource_provider_.get(), |
1609 pass->shared_quad_state_list.back(), | 1609 pass->shared_quad_state_list.back(), |
1610 pass.get()); | 1610 pass.get()); |
1611 | 1611 |
1612 RenderPassList pass_list; | 1612 RenderPassList pass_list; |
1613 pass_list.push_back(pass.Pass()); | 1613 pass_list.push_back(std::move(pass)); |
1614 | 1614 |
1615 // Candidate quad should fail to be overlaid on top because of occlusion. | 1615 // Candidate quad should fail to be overlaid on top because of occlusion. |
1616 // Expect to be replaced with transparent hole quad and placed in underlay. | 1616 // Expect to be replaced with transparent hole quad and placed in underlay. |
1617 EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(3); | 1617 EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(3); |
1618 EXPECT_CALL(scheduler_, | 1618 EXPECT_CALL(scheduler_, |
1619 Schedule(0, gfx::OVERLAY_TRANSFORM_NONE, _, | 1619 Schedule(0, gfx::OVERLAY_TRANSFORM_NONE, _, |
1620 gfx::Rect(kDisplaySize), gfx::RectF(0, 0, 1, 1))) | 1620 gfx::Rect(kDisplaySize), gfx::RectF(0, 0, 1, 1))) |
1621 .Times(1); | 1621 .Times(1); |
1622 EXPECT_CALL(scheduler_, | 1622 EXPECT_CALL(scheduler_, |
1623 Schedule(-1, gfx::OVERLAY_TRANSFORM_NONE, _, kOverlayRect, | 1623 Schedule(-1, gfx::OVERLAY_TRANSFORM_NONE, _, kOverlayRect, |
(...skipping 18 matching lines...) Expand all Loading... |
1642 CreateFullscreenCandidateQuad(resource_provider_.get(), | 1642 CreateFullscreenCandidateQuad(resource_provider_.get(), |
1643 pass->shared_quad_state_list.back(), | 1643 pass->shared_quad_state_list.back(), |
1644 pass.get()); | 1644 pass.get()); |
1645 | 1645 |
1646 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 1646 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
1647 pass->shared_quad_state_list.back(), pass.get()); | 1647 pass->shared_quad_state_list.back(), pass.get()); |
1648 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 1648 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
1649 pass->shared_quad_state_list.back(), pass.get()); | 1649 pass->shared_quad_state_list.back(), pass.get()); |
1650 | 1650 |
1651 RenderPassList pass_list; | 1651 RenderPassList pass_list; |
1652 pass_list.push_back(pass.Pass()); | 1652 pass_list.push_back(std::move(pass)); |
1653 | 1653 |
1654 // Should not see the primary surface's overlay. | 1654 // Should not see the primary surface's overlay. |
1655 output_surface_->set_is_displayed_as_overlay_plane(false); | 1655 output_surface_->set_is_displayed_as_overlay_plane(false); |
1656 EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(3); | 1656 EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(3); |
1657 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0); | 1657 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(0); |
1658 renderer_->DrawFrame(&pass_list, 1.f, viewport_rect, viewport_rect, false); | 1658 renderer_->DrawFrame(&pass_list, 1.f, viewport_rect, viewport_rect, false); |
1659 SwapBuffers(); | 1659 SwapBuffers(); |
1660 Mock::VerifyAndClearExpectations(renderer_.get()); | 1660 Mock::VerifyAndClearExpectations(renderer_.get()); |
1661 Mock::VerifyAndClearExpectations(&scheduler_); | 1661 Mock::VerifyAndClearExpectations(&scheduler_); |
1662 } | 1662 } |
1663 | 1663 |
1664 TEST_F(GLRendererWithOverlaysTest, OccludedQuadNotDrawn) { | 1664 TEST_F(GLRendererWithOverlaysTest, OccludedQuadNotDrawn) { |
1665 bool use_validator = true; | 1665 bool use_validator = true; |
1666 Init(use_validator); | 1666 Init(use_validator); |
1667 renderer_->set_expect_overlays(true); | 1667 renderer_->set_expect_overlays(true); |
1668 gfx::Rect viewport_rect(16, 16); | 1668 gfx::Rect viewport_rect(16, 16); |
1669 | 1669 |
1670 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1670 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
1671 | 1671 |
1672 CreateFullscreenCandidateQuad(resource_provider_.get(), | 1672 CreateFullscreenCandidateQuad(resource_provider_.get(), |
1673 pass->shared_quad_state_list.back(), | 1673 pass->shared_quad_state_list.back(), |
1674 pass.get()); | 1674 pass.get()); |
1675 | 1675 |
1676 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 1676 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
1677 pass->shared_quad_state_list.back(), pass.get()); | 1677 pass->shared_quad_state_list.back(), pass.get()); |
1678 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 1678 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
1679 pass->shared_quad_state_list.back(), pass.get()); | 1679 pass->shared_quad_state_list.back(), pass.get()); |
1680 | 1680 |
1681 RenderPassList pass_list; | 1681 RenderPassList pass_list; |
1682 pass_list.push_back(pass.Pass()); | 1682 pass_list.push_back(std::move(pass)); |
1683 | 1683 |
1684 output_surface_->set_is_displayed_as_overlay_plane(true); | 1684 output_surface_->set_is_displayed_as_overlay_plane(true); |
1685 EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(0); | 1685 EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(0); |
1686 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2); | 1686 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2); |
1687 renderer_->DrawFrame(&pass_list, 1.f, viewport_rect, viewport_rect, false); | 1687 renderer_->DrawFrame(&pass_list, 1.f, viewport_rect, viewport_rect, false); |
1688 SwapBuffers(); | 1688 SwapBuffers(); |
1689 Mock::VerifyAndClearExpectations(renderer_.get()); | 1689 Mock::VerifyAndClearExpectations(renderer_.get()); |
1690 Mock::VerifyAndClearExpectations(&scheduler_); | 1690 Mock::VerifyAndClearExpectations(&scheduler_); |
1691 } | 1691 } |
1692 | 1692 |
1693 TEST_F(GLRendererWithOverlaysTest, ResourcesExportedAndReturnedWithDelay) { | 1693 TEST_F(GLRendererWithOverlaysTest, ResourcesExportedAndReturnedWithDelay) { |
1694 bool use_validator = true; | 1694 bool use_validator = true; |
1695 Init(use_validator); | 1695 Init(use_validator); |
1696 renderer_->set_expect_overlays(true); | 1696 renderer_->set_expect_overlays(true); |
1697 | 1697 |
1698 ResourceId resource1 = | 1698 ResourceId resource1 = |
1699 CreateResource(resource_provider_.get(), gfx::Size(32, 32), true); | 1699 CreateResource(resource_provider_.get(), gfx::Size(32, 32), true); |
1700 ResourceId resource2 = | 1700 ResourceId resource2 = |
1701 CreateResource(resource_provider_.get(), gfx::Size(32, 32), true); | 1701 CreateResource(resource_provider_.get(), gfx::Size(32, 32), true); |
1702 ResourceId resource3 = | 1702 ResourceId resource3 = |
1703 CreateResource(resource_provider_.get(), gfx::Size(32, 32), true); | 1703 CreateResource(resource_provider_.get(), gfx::Size(32, 32), true); |
1704 | 1704 |
1705 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1705 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
1706 RenderPassList pass_list; | 1706 RenderPassList pass_list; |
1707 pass_list.push_back(pass.Pass()); | 1707 pass_list.push_back(std::move(pass)); |
1708 | 1708 |
1709 DirectRenderer::DrawingFrame frame1; | 1709 DirectRenderer::DrawingFrame frame1; |
1710 frame1.render_passes_in_draw_order = &pass_list; | 1710 frame1.render_passes_in_draw_order = &pass_list; |
1711 frame1.overlay_list.resize(2); | 1711 frame1.overlay_list.resize(2); |
1712 frame1.overlay_list.front().use_output_surface_for_resource = true; | 1712 frame1.overlay_list.front().use_output_surface_for_resource = true; |
1713 OverlayCandidate& overlay1 = frame1.overlay_list.back(); | 1713 OverlayCandidate& overlay1 = frame1.overlay_list.back(); |
1714 overlay1.resource_id = resource1; | 1714 overlay1.resource_id = resource1; |
1715 overlay1.plane_z_order = 1; | 1715 overlay1.plane_z_order = 1; |
1716 | 1716 |
1717 DirectRenderer::DrawingFrame frame2; | 1717 DirectRenderer::DrawingFrame frame2; |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1807 renderer_->BeginDrawingFrame(&frame_no_overlays); | 1807 renderer_->BeginDrawingFrame(&frame_no_overlays); |
1808 renderer_->FinishDrawingFrame(&frame_no_overlays); | 1808 renderer_->FinishDrawingFrame(&frame_no_overlays); |
1809 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); | 1809 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); |
1810 SwapBuffers(); | 1810 SwapBuffers(); |
1811 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); | 1811 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); |
1812 Mock::VerifyAndClearExpectations(&scheduler_); | 1812 Mock::VerifyAndClearExpectations(&scheduler_); |
1813 } | 1813 } |
1814 | 1814 |
1815 } // namespace | 1815 } // namespace |
1816 } // namespace cc | 1816 } // namespace cc |
OLD | NEW |