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