| 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/base/scoped_ptr_vector.h" | 6 #include "cc/base/scoped_ptr_vector.h" |
| 7 #include "cc/output/compositor_frame_metadata.h" | 7 #include "cc/output/compositor_frame_metadata.h" |
| 8 #include "cc/output/gl_renderer.h" | 8 #include "cc/output/gl_renderer.h" |
| 9 #include "cc/output/output_surface.h" | 9 #include "cc/output/output_surface.h" |
| 10 #include "cc/output/output_surface_client.h" | 10 #include "cc/output/output_surface_client.h" |
| (...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 359 overlay_processor_.reset(new OverlayProcessor(output_surface_.get())); | 359 overlay_processor_.reset(new OverlayProcessor(output_surface_.get())); |
| 360 overlay_processor_->Initialize(); | 360 overlay_processor_->Initialize(); |
| 361 } | 361 } |
| 362 | 362 |
| 363 scoped_refptr<TestContextProvider> provider_; | 363 scoped_refptr<TestContextProvider> provider_; |
| 364 scoped_ptr<OverlayOutputSurface> output_surface_; | 364 scoped_ptr<OverlayOutputSurface> output_surface_; |
| 365 FakeOutputSurfaceClient client_; | 365 FakeOutputSurfaceClient client_; |
| 366 scoped_ptr<SharedBitmapManager> shared_bitmap_manager_; | 366 scoped_ptr<SharedBitmapManager> shared_bitmap_manager_; |
| 367 scoped_ptr<ResourceProvider> resource_provider_; | 367 scoped_ptr<ResourceProvider> resource_provider_; |
| 368 scoped_ptr<OverlayProcessor> overlay_processor_; | 368 scoped_ptr<OverlayProcessor> overlay_processor_; |
| 369 gfx::Rect damage_rect_; |
| 369 }; | 370 }; |
| 370 | 371 |
| 371 typedef OverlayTest<SingleOnTopOverlayValidator> SingleOverlayOnTopTest; | 372 typedef OverlayTest<SingleOnTopOverlayValidator> SingleOverlayOnTopTest; |
| 372 typedef OverlayTest<UnderlayOverlayValidator> UnderlayTest; | 373 typedef OverlayTest<UnderlayOverlayValidator> UnderlayTest; |
| 373 typedef OverlayTest<SandwichOverlayValidator> SandwichTest; | 374 typedef OverlayTest<SandwichOverlayValidator> SandwichTest; |
| 374 typedef OverlayTest<AllOrNothingOverlayValidator> AllOrNothingOverlayTest; | 375 typedef OverlayTest<AllOrNothingOverlayValidator> AllOrNothingOverlayTest; |
| 375 | 376 |
| 376 TEST(OverlayTest, NoOverlaysByDefault) { | 377 TEST(OverlayTest, NoOverlaysByDefault) { |
| 377 scoped_refptr<TestContextProvider> provider = TestContextProvider::Create(); | 378 scoped_refptr<TestContextProvider> provider = TestContextProvider::Create(); |
| 378 OverlayOutputSurface output_surface(provider); | 379 OverlayOutputSurface output_surface(provider); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 412 pass->shared_quad_state_list.back(), pass.get()); | 413 pass->shared_quad_state_list.back(), pass.get()); |
| 413 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 414 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 414 pass->shared_quad_state_list.back(), pass.get()); | 415 pass->shared_quad_state_list.back(), pass.get()); |
| 415 | 416 |
| 416 RenderPassList pass_list; | 417 RenderPassList pass_list; |
| 417 pass_list.push_back(pass.Pass()); | 418 pass_list.push_back(pass.Pass()); |
| 418 | 419 |
| 419 // Check for potential candidates. | 420 // Check for potential candidates. |
| 420 OverlayCandidateList candidate_list; | 421 OverlayCandidateList candidate_list; |
| 421 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 422 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 422 &candidate_list); | 423 &candidate_list, &damage_rect_); |
| 423 | 424 |
| 424 ASSERT_EQ(1U, pass_list.size()); | 425 ASSERT_EQ(1U, pass_list.size()); |
| 425 ASSERT_EQ(1U, candidate_list.size()); | 426 ASSERT_EQ(1U, candidate_list.size()); |
| 426 | 427 |
| 427 RenderPass* main_pass = pass_list.back(); | 428 RenderPass* main_pass = pass_list.back(); |
| 428 // Check that the quad is gone. | 429 // Check that the quad is gone. |
| 429 EXPECT_EQ(2U, main_pass->quad_list.size()); | 430 EXPECT_EQ(2U, main_pass->quad_list.size()); |
| 430 const QuadList& quad_list = main_pass->quad_list; | 431 const QuadList& quad_list = main_pass->quad_list; |
| 431 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); | 432 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); |
| 432 it != quad_list.BackToFrontEnd(); ++it) { | 433 it != quad_list.BackToFrontEnd(); ++it) { |
| (...skipping 21 matching lines...) Expand all Loading... |
| 454 pass->shared_quad_state_list.back(), pass.get()); | 455 pass->shared_quad_state_list.back(), pass.get()); |
| 455 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 456 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 456 pass->shared_quad_state_list.back(), pass.get()); | 457 pass->shared_quad_state_list.back(), pass.get()); |
| 457 | 458 |
| 458 RenderPassList pass_list; | 459 RenderPassList pass_list; |
| 459 pass_list.push_back(pass.Pass()); | 460 pass_list.push_back(pass.Pass()); |
| 460 | 461 |
| 461 // Check for potential candidates. | 462 // Check for potential candidates. |
| 462 OverlayCandidateList candidate_list; | 463 OverlayCandidateList candidate_list; |
| 463 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 464 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 464 &candidate_list); | 465 &candidate_list, &damage_rect_); |
| 465 | 466 |
| 466 // Ensure that the display and uv rects have cropping applied to them. | 467 // Ensure that the display and uv rects have cropping applied to them. |
| 467 ASSERT_EQ(1U, pass_list.size()); | 468 ASSERT_EQ(1U, pass_list.size()); |
| 468 ASSERT_EQ(1U, candidate_list.size()); | 469 ASSERT_EQ(1U, candidate_list.size()); |
| 469 EXPECT_EQ(candidate_id, candidate_list[0].resource_id); | 470 EXPECT_EQ(candidate_id, candidate_list[0].resource_id); |
| 470 EXPECT_EQ(gfx::RectF(0.f, 32.f, 64.f, 64.f), candidate_list[0].display_rect); | 471 EXPECT_EQ(gfx::RectF(0.f, 32.f, 64.f, 64.f), candidate_list[0].display_rect); |
| 471 EXPECT_EQ(gfx::RectF(0.f, 0.25f, 0.5f, 0.5f), candidate_list[0].uv_rect); | 472 EXPECT_EQ(gfx::RectF(0.f, 0.25f, 0.5f, 0.5f), candidate_list[0].uv_rect); |
| 472 } | 473 } |
| 473 | 474 |
| 474 TEST_F(SandwichTest, SuccessfulTwoOverlays) { | 475 TEST_F(SandwichTest, SuccessfulTwoOverlays) { |
| 475 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 476 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 476 | 477 |
| 477 // Add two non-overlapping candidates. | 478 // Add two non-overlapping candidates. |
| 478 CreateCandidateQuadAt(resource_provider_.get(), | 479 CreateCandidateQuadAt(resource_provider_.get(), |
| 479 pass->shared_quad_state_list.back(), pass.get(), | 480 pass->shared_quad_state_list.back(), pass.get(), |
| 480 kOverlayTopLeftRect); | 481 kOverlayTopLeftRect); |
| 481 CreateCandidateQuadAt(resource_provider_.get(), | 482 CreateCandidateQuadAt(resource_provider_.get(), |
| 482 pass->shared_quad_state_list.back(), pass.get(), | 483 pass->shared_quad_state_list.back(), pass.get(), |
| 483 kOverlayBottomRightRect); | 484 kOverlayBottomRightRect); |
| 484 | 485 |
| 485 // Add something behind it. | 486 // Add something behind it. |
| 486 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 487 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 487 pass->shared_quad_state_list.back(), pass.get()); | 488 pass->shared_quad_state_list.back(), pass.get()); |
| 488 | 489 |
| 489 RenderPassList pass_list; | 490 RenderPassList pass_list; |
| 490 pass_list.push_back(pass.Pass()); | 491 pass_list.push_back(pass.Pass()); |
| 491 OverlayCandidateList candidate_list; | 492 OverlayCandidateList candidate_list; |
| 492 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 493 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 493 &candidate_list); | 494 &candidate_list, &damage_rect_); |
| 494 | 495 |
| 495 // Both candidates should become overlays. | 496 // Both candidates should become overlays. |
| 496 EXPECT_EQ(1u, pass_list.size()); | 497 EXPECT_EQ(1u, pass_list.size()); |
| 497 EXPECT_EQ(2u, candidate_list.size()); | 498 EXPECT_EQ(2u, candidate_list.size()); |
| 498 EXPECT_EQ(gfx::RectF(kOverlayTopLeftRect), candidate_list[0].display_rect); | 499 EXPECT_EQ(gfx::RectF(kOverlayTopLeftRect), candidate_list[0].display_rect); |
| 499 EXPECT_EQ(gfx::RectF(kOverlayBottomRightRect), | 500 EXPECT_EQ(gfx::RectF(kOverlayBottomRightRect), |
| 500 candidate_list[1].display_rect); | 501 candidate_list[1].display_rect); |
| 501 | 502 |
| 502 // The overlay quads should be gone. | 503 // The overlay quads should be gone. |
| 503 const QuadList& quad_list = pass_list.back()->quad_list; | 504 const QuadList& quad_list = pass_list.back()->quad_list; |
| (...skipping 13 matching lines...) Expand all Loading... |
| 517 kOverlayRect); | 518 kOverlayRect); |
| 518 | 519 |
| 519 // Add something behind it. | 520 // Add something behind it. |
| 520 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 521 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 521 pass->shared_quad_state_list.back(), pass.get()); | 522 pass->shared_quad_state_list.back(), pass.get()); |
| 522 | 523 |
| 523 RenderPassList pass_list; | 524 RenderPassList pass_list; |
| 524 pass_list.push_back(pass.Pass()); | 525 pass_list.push_back(pass.Pass()); |
| 525 OverlayCandidateList candidate_list; | 526 OverlayCandidateList candidate_list; |
| 526 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 527 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 527 &candidate_list); | 528 &candidate_list, &damage_rect_); |
| 528 | 529 |
| 529 // Only one of the candidates should become an overlay. | 530 // Only one of the candidates should become an overlay. |
| 530 EXPECT_EQ(1u, pass_list.size()); | 531 EXPECT_EQ(1u, pass_list.size()); |
| 531 EXPECT_EQ(1u, candidate_list.size()); | 532 EXPECT_EQ(1u, candidate_list.size()); |
| 532 EXPECT_EQ(gfx::RectF(kOverlayTopLeftRect), candidate_list[0].display_rect); | 533 EXPECT_EQ(gfx::RectF(kOverlayTopLeftRect), candidate_list[0].display_rect); |
| 533 | 534 |
| 534 // One of the overlay quads should be gone. | 535 // One of the overlay quads should be gone. |
| 535 const QuadList& quad_list = pass_list.back()->quad_list; | 536 const QuadList& quad_list = pass_list.back()->quad_list; |
| 536 EXPECT_EQ(2u, quad_list.size()); | 537 EXPECT_EQ(2u, quad_list.size()); |
| 537 EXPECT_EQ(DrawQuad::TEXTURE_CONTENT, quad_list.front()->material); | 538 EXPECT_EQ(DrawQuad::TEXTURE_CONTENT, quad_list.front()->material); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 552 CreateOpaqueQuadAt(resource_provider_.get(), | 553 CreateOpaqueQuadAt(resource_provider_.get(), |
| 553 pass->shared_quad_state_list.back(), pass.get(), | 554 pass->shared_quad_state_list.back(), pass.get(), |
| 554 gfx::Rect(kDisplaySize)); | 555 gfx::Rect(kDisplaySize)); |
| 555 | 556 |
| 556 RenderPassList pass_list; | 557 RenderPassList pass_list; |
| 557 pass_list.push_back(pass.Pass()); | 558 pass_list.push_back(pass.Pass()); |
| 558 | 559 |
| 559 // Check for potential candidates. | 560 // Check for potential candidates. |
| 560 OverlayCandidateList candidate_list; | 561 OverlayCandidateList candidate_list; |
| 561 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 562 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 562 &candidate_list); | 563 &candidate_list, &damage_rect_); |
| 563 | |
| 564 ASSERT_EQ(1U, pass_list.size()); | 564 ASSERT_EQ(1U, pass_list.size()); |
| 565 ASSERT_EQ(2U, candidate_list.size()); | 565 ASSERT_EQ(2U, candidate_list.size()); |
| 566 | 566 |
| 567 RenderPass* main_pass = pass_list.back(); | 567 RenderPass* main_pass = pass_list.back(); |
| 568 // Check that the quad is gone. | 568 // Check that the quad is gone. |
| 569 EXPECT_EQ(3U, main_pass->quad_list.size()); | 569 EXPECT_EQ(3U, main_pass->quad_list.size()); |
| 570 const QuadList& quad_list = main_pass->quad_list; | 570 const QuadList& quad_list = main_pass->quad_list; |
| 571 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); | 571 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); |
| 572 it != quad_list.BackToFrontEnd(); ++it) { | 572 it != quad_list.BackToFrontEnd(); ++it) { |
| 573 EXPECT_NE(DrawQuad::TEXTURE_CONTENT, it->material); | 573 EXPECT_NE(DrawQuad::TEXTURE_CONTENT, it->material); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 608 gfx::Rect(kDisplaySize)); | 608 gfx::Rect(kDisplaySize)); |
| 609 | 609 |
| 610 RenderPassList pass_list; | 610 RenderPassList pass_list; |
| 611 pass_list.push_back(pass.Pass()); | 611 pass_list.push_back(pass.Pass()); |
| 612 | 612 |
| 613 // Run the overlay strategy on that input. | 613 // Run the overlay strategy on that input. |
| 614 RenderPass* main_pass = pass_list.back(); | 614 RenderPass* main_pass = pass_list.back(); |
| 615 OverlayCandidateList candidate_list; | 615 OverlayCandidateList candidate_list; |
| 616 EXPECT_EQ(4U, main_pass->quad_list.size()); | 616 EXPECT_EQ(4U, main_pass->quad_list.size()); |
| 617 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 617 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 618 &candidate_list); | 618 &candidate_list, &damage_rect_); |
| 619 ASSERT_EQ(1U, pass_list.size()); | 619 ASSERT_EQ(1U, pass_list.size()); |
| 620 ASSERT_EQ(3U, candidate_list.size()); | 620 ASSERT_EQ(3U, candidate_list.size()); |
| 621 | 621 |
| 622 // Check that the candidate quad is gone and that we now have two transparent | 622 // Check that the candidate quad is gone and that we now have two transparent |
| 623 // quads for the same region that was covered on the overlay. | 623 // quads for the same region that was covered on the overlay. |
| 624 EXPECT_EQ(5U, main_pass->quad_list.size()); | 624 EXPECT_EQ(5U, main_pass->quad_list.size()); |
| 625 const QuadList& quad_list = main_pass->quad_list; | 625 const QuadList& quad_list = main_pass->quad_list; |
| 626 Region transparent_quad_region; | 626 Region transparent_quad_region; |
| 627 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); | 627 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); |
| 628 it != quad_list.BackToFrontEnd(); ++it) { | 628 it != quad_list.BackToFrontEnd(); ++it) { |
| (...skipping 11 matching lines...) Expand all Loading... |
| 640 EXPECT_EQ(candidate_id, candidate_list[0].resource_id); | 640 EXPECT_EQ(candidate_id, candidate_list[0].resource_id); |
| 641 EXPECT_EQ(gfx::RectF(64.f, 64.f), candidate_list[0].display_rect); | 641 EXPECT_EQ(gfx::RectF(64.f, 64.f), candidate_list[0].display_rect); |
| 642 EXPECT_TRUE(candidate_list[1].use_output_surface_for_resource); | 642 EXPECT_TRUE(candidate_list[1].use_output_surface_for_resource); |
| 643 EXPECT_TRUE(candidate_list[2].use_output_surface_for_resource); | 643 EXPECT_TRUE(candidate_list[2].use_output_surface_for_resource); |
| 644 Region overlay_region; | 644 Region overlay_region; |
| 645 overlay_region.Union(gfx::ToEnclosingRect(candidate_list[1].display_rect)); | 645 overlay_region.Union(gfx::ToEnclosingRect(candidate_list[1].display_rect)); |
| 646 overlay_region.Union(gfx::ToEnclosingRect(candidate_list[2].display_rect)); | 646 overlay_region.Union(gfx::ToEnclosingRect(candidate_list[2].display_rect)); |
| 647 DCHECK(covered_region == overlay_region); | 647 DCHECK(covered_region == overlay_region); |
| 648 } | 648 } |
| 649 | 649 |
| 650 TEST_F(SandwichTest, DamageRect) { |
| 651 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 652 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 653 pass->shared_quad_state_list.back(), |
| 654 pass.get()); |
| 655 |
| 656 damage_rect_ = kOverlayRect; |
| 657 |
| 658 // Add something behind it. |
| 659 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 660 pass->shared_quad_state_list.back(), pass.get()); |
| 661 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 662 pass->shared_quad_state_list.back(), pass.get()); |
| 663 |
| 664 RenderPassList pass_list; |
| 665 pass_list.push_back(pass.Pass()); |
| 666 |
| 667 // Check for potential candidates. |
| 668 OverlayCandidateList candidate_list; |
| 669 |
| 670 // Primary plane. |
| 671 OverlayCandidate output_surface_plane; |
| 672 output_surface_plane.display_rect = gfx::RectF(kOverlayRect); |
| 673 output_surface_plane.quad_rect_in_target_space = kOverlayRect; |
| 674 output_surface_plane.use_output_surface_for_resource = true; |
| 675 output_surface_plane.overlay_handled = true; |
| 676 candidate_list.push_back(output_surface_plane); |
| 677 |
| 678 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 679 &candidate_list, &damage_rect_); |
| 680 DCHECK(!damage_rect_.IsEmpty()); |
| 681 } |
| 682 |
| 650 TEST_F(SingleOverlayOnTopTest, SuccessfullOverlay) { | 683 TEST_F(SingleOverlayOnTopTest, SuccessfullOverlay) { |
| 651 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 684 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 652 TextureDrawQuad* original_quad = | 685 TextureDrawQuad* original_quad = |
| 653 CreateFullscreenCandidateQuad(resource_provider_.get(), | 686 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 654 pass->shared_quad_state_list.back(), | 687 pass->shared_quad_state_list.back(), |
| 655 pass.get()); | 688 pass.get()); |
| 656 unsigned original_resource_id = original_quad->resource_id(); | 689 unsigned original_resource_id = original_quad->resource_id(); |
| 657 | 690 |
| 658 // Add something behind it. | 691 // Add something behind it. |
| 659 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 692 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 660 pass->shared_quad_state_list.back(), pass.get()); | 693 pass->shared_quad_state_list.back(), pass.get()); |
| 661 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 694 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 662 pass->shared_quad_state_list.back(), pass.get()); | 695 pass->shared_quad_state_list.back(), pass.get()); |
| 663 | 696 |
| 664 RenderPassList pass_list; | 697 RenderPassList pass_list; |
| 665 pass_list.push_back(pass.Pass()); | 698 pass_list.push_back(pass.Pass()); |
| 666 | 699 |
| 667 // Check for potential candidates. | 700 // Check for potential candidates. |
| 668 OverlayCandidateList candidate_list; | 701 OverlayCandidateList candidate_list; |
| 669 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 702 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 670 &candidate_list); | 703 &candidate_list, &damage_rect_); |
| 671 | 704 |
| 672 ASSERT_EQ(1U, pass_list.size()); | 705 ASSERT_EQ(1U, pass_list.size()); |
| 673 ASSERT_EQ(1U, candidate_list.size()); | 706 ASSERT_EQ(1U, candidate_list.size()); |
| 674 | 707 |
| 675 RenderPass* main_pass = pass_list.back(); | 708 RenderPass* main_pass = pass_list.back(); |
| 676 // Check that the quad is gone. | 709 // Check that the quad is gone. |
| 677 EXPECT_EQ(2U, main_pass->quad_list.size()); | 710 EXPECT_EQ(2U, main_pass->quad_list.size()); |
| 678 const QuadList& quad_list = main_pass->quad_list; | 711 const QuadList& quad_list = main_pass->quad_list; |
| 679 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); | 712 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); |
| 680 it != quad_list.BackToFrontEnd(); | 713 it != quad_list.BackToFrontEnd(); |
| 681 ++it) { | 714 ++it) { |
| 682 EXPECT_NE(DrawQuad::TEXTURE_CONTENT, it->material); | 715 EXPECT_NE(DrawQuad::TEXTURE_CONTENT, it->material); |
| 683 } | 716 } |
| 684 | 717 |
| 685 // Check that the right resource id got extracted. | 718 // Check that the right resource id got extracted. |
| 686 EXPECT_EQ(original_resource_id, candidate_list.back().resource_id); | 719 EXPECT_EQ(original_resource_id, candidate_list.back().resource_id); |
| 687 } | 720 } |
| 688 | 721 |
| 722 TEST_F(SingleOverlayOnTopTest, DamageRect) { |
| 723 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 724 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 725 pass->shared_quad_state_list.back(), |
| 726 pass.get()); |
| 727 damage_rect_ = kOverlayRect; |
| 728 |
| 729 // Add something behind it. |
| 730 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 731 pass->shared_quad_state_list.back(), pass.get()); |
| 732 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 733 pass->shared_quad_state_list.back(), pass.get()); |
| 734 |
| 735 RenderPassList pass_list; |
| 736 pass_list.push_back(pass.Pass()); |
| 737 |
| 738 // Check for potential candidates. |
| 739 OverlayCandidateList candidate_list; |
| 740 |
| 741 // Primary plane. |
| 742 OverlayCandidate output_surface_plane; |
| 743 output_surface_plane.display_rect = gfx::RectF(kOverlayRect); |
| 744 output_surface_plane.quad_rect_in_target_space = kOverlayRect; |
| 745 output_surface_plane.use_output_surface_for_resource = true; |
| 746 output_surface_plane.overlay_handled = true; |
| 747 candidate_list.push_back(output_surface_plane); |
| 748 |
| 749 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 750 &candidate_list, &damage_rect_); |
| 751 DCHECK(damage_rect_.IsEmpty()); |
| 752 } |
| 753 |
| 689 TEST_F(SingleOverlayOnTopTest, NoCandidates) { | 754 TEST_F(SingleOverlayOnTopTest, NoCandidates) { |
| 690 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 755 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 691 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 756 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 692 pass->shared_quad_state_list.back(), pass.get()); | 757 pass->shared_quad_state_list.back(), pass.get()); |
| 693 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 758 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 694 pass->shared_quad_state_list.back(), pass.get()); | 759 pass->shared_quad_state_list.back(), pass.get()); |
| 695 | 760 |
| 696 RenderPassList pass_list; | 761 RenderPassList pass_list; |
| 697 pass_list.push_back(pass.Pass()); | 762 pass_list.push_back(pass.Pass()); |
| 698 | 763 |
| 699 RenderPassList original_pass_list; | 764 RenderPassList original_pass_list; |
| 700 RenderPass::CopyAll(pass_list, &original_pass_list); | 765 RenderPass::CopyAll(pass_list, &original_pass_list); |
| 701 | 766 |
| 702 OverlayCandidateList candidate_list; | 767 OverlayCandidateList candidate_list; |
| 703 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 768 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 704 &candidate_list); | 769 &candidate_list, &damage_rect_); |
| 705 EXPECT_EQ(0U, candidate_list.size()); | 770 EXPECT_EQ(0U, candidate_list.size()); |
| 706 // There should be nothing new here. | 771 // There should be nothing new here. |
| 707 CompareRenderPassLists(pass_list, original_pass_list); | 772 CompareRenderPassLists(pass_list, original_pass_list); |
| 708 } | 773 } |
| 709 | 774 |
| 710 TEST_F(SingleOverlayOnTopTest, OccludedCandidates) { | 775 TEST_F(SingleOverlayOnTopTest, OccludedCandidates) { |
| 711 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 776 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 712 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 777 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 713 pass->shared_quad_state_list.back(), pass.get()); | 778 pass->shared_quad_state_list.back(), pass.get()); |
| 714 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 779 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 715 pass->shared_quad_state_list.back(), pass.get()); | 780 pass->shared_quad_state_list.back(), pass.get()); |
| 716 | 781 |
| 717 CreateFullscreenCandidateQuad(resource_provider_.get(), | 782 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 718 pass->shared_quad_state_list.back(), | 783 pass->shared_quad_state_list.back(), |
| 719 pass.get()); | 784 pass.get()); |
| 720 | 785 |
| 721 RenderPassList pass_list; | 786 RenderPassList pass_list; |
| 722 pass_list.push_back(pass.Pass()); | 787 pass_list.push_back(pass.Pass()); |
| 723 | 788 |
| 724 RenderPassList original_pass_list; | 789 RenderPassList original_pass_list; |
| 725 RenderPass::CopyAll(pass_list, &original_pass_list); | 790 RenderPass::CopyAll(pass_list, &original_pass_list); |
| 726 | 791 |
| 727 OverlayCandidateList candidate_list; | 792 OverlayCandidateList candidate_list; |
| 728 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 793 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 729 &candidate_list); | 794 &candidate_list, &damage_rect_); |
| 730 EXPECT_EQ(0U, candidate_list.size()); | 795 EXPECT_EQ(0U, candidate_list.size()); |
| 731 // There should be nothing new here. | 796 // There should be nothing new here. |
| 732 CompareRenderPassLists(pass_list, original_pass_list); | 797 CompareRenderPassLists(pass_list, original_pass_list); |
| 733 } | 798 } |
| 734 | 799 |
| 735 // Test with multiple render passes. | 800 // Test with multiple render passes. |
| 736 TEST_F(SingleOverlayOnTopTest, MultipleRenderPasses) { | 801 TEST_F(SingleOverlayOnTopTest, MultipleRenderPasses) { |
| 737 RenderPassList pass_list; | 802 RenderPassList pass_list; |
| 738 pass_list.push_back(CreateRenderPass()); | 803 pass_list.push_back(CreateRenderPass()); |
| 739 | 804 |
| 740 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 805 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 741 CreateFullscreenCandidateQuad(resource_provider_.get(), | 806 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 742 pass->shared_quad_state_list.back(), | 807 pass->shared_quad_state_list.back(), |
| 743 pass.get()); | 808 pass.get()); |
| 744 | 809 |
| 745 // Add something behind it. | 810 // Add something behind it. |
| 746 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 811 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 747 pass->shared_quad_state_list.back(), pass.get()); | 812 pass->shared_quad_state_list.back(), pass.get()); |
| 748 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 813 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 749 pass->shared_quad_state_list.back(), pass.get()); | 814 pass->shared_quad_state_list.back(), pass.get()); |
| 750 | 815 |
| 751 pass_list.push_back(pass.Pass()); | 816 pass_list.push_back(pass.Pass()); |
| 752 | 817 |
| 753 RenderPassList original_pass_list; | 818 RenderPassList original_pass_list; |
| 754 RenderPass::CopyAll(pass_list, &original_pass_list); | 819 RenderPass::CopyAll(pass_list, &original_pass_list); |
| 755 | 820 |
| 756 // Check for potential candidates. | 821 // Check for potential candidates. |
| 757 OverlayCandidateList candidate_list; | 822 OverlayCandidateList candidate_list; |
| 758 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 823 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 759 &candidate_list); | 824 &candidate_list, &damage_rect_); |
| 760 EXPECT_EQ(1U, candidate_list.size()); | 825 EXPECT_EQ(1U, candidate_list.size()); |
| 761 | 826 |
| 762 // This should be the same. | 827 // This should be the same. |
| 763 ASSERT_EQ(2U, pass_list.size()); | 828 ASSERT_EQ(2U, pass_list.size()); |
| 764 } | 829 } |
| 765 | 830 |
| 766 TEST_F(SingleOverlayOnTopTest, RejectPremultipliedAlpha) { | 831 TEST_F(SingleOverlayOnTopTest, RejectPremultipliedAlpha) { |
| 767 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 832 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 768 TextureDrawQuad* quad = | 833 TextureDrawQuad* quad = |
| 769 CreateFullscreenCandidateQuad(resource_provider_.get(), | 834 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 770 pass->shared_quad_state_list.back(), | 835 pass->shared_quad_state_list.back(), |
| 771 pass.get()); | 836 pass.get()); |
| 772 quad->premultiplied_alpha = true; | 837 quad->premultiplied_alpha = true; |
| 773 | 838 |
| 774 RenderPassList pass_list; | 839 RenderPassList pass_list; |
| 775 pass_list.push_back(pass.Pass()); | 840 pass_list.push_back(pass.Pass()); |
| 776 OverlayCandidateList candidate_list; | 841 OverlayCandidateList candidate_list; |
| 777 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 842 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 778 &candidate_list); | 843 &candidate_list, &damage_rect_); |
| 779 EXPECT_EQ(1U, pass_list.size()); | 844 EXPECT_EQ(1U, pass_list.size()); |
| 780 EXPECT_EQ(0U, candidate_list.size()); | 845 EXPECT_EQ(0U, candidate_list.size()); |
| 781 } | 846 } |
| 782 | 847 |
| 783 TEST_F(SingleOverlayOnTopTest, RejectBlending) { | 848 TEST_F(SingleOverlayOnTopTest, RejectBlending) { |
| 784 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 849 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 785 TextureDrawQuad* quad = | 850 TextureDrawQuad* quad = |
| 786 CreateFullscreenCandidateQuad(resource_provider_.get(), | 851 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 787 pass->shared_quad_state_list.back(), | 852 pass->shared_quad_state_list.back(), |
| 788 pass.get()); | 853 pass.get()); |
| 789 quad->needs_blending = true; | 854 quad->needs_blending = true; |
| 790 | 855 |
| 791 RenderPassList pass_list; | 856 RenderPassList pass_list; |
| 792 pass_list.push_back(pass.Pass()); | 857 pass_list.push_back(pass.Pass()); |
| 793 OverlayCandidateList candidate_list; | 858 OverlayCandidateList candidate_list; |
| 794 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 859 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 795 &candidate_list); | 860 &candidate_list, &damage_rect_); |
| 796 ASSERT_EQ(1U, pass_list.size()); | 861 ASSERT_EQ(1U, pass_list.size()); |
| 797 EXPECT_EQ(0U, candidate_list.size()); | 862 EXPECT_EQ(0U, candidate_list.size()); |
| 798 } | 863 } |
| 799 | 864 |
| 800 TEST_F(SingleOverlayOnTopTest, RejectBackgroundColor) { | 865 TEST_F(SingleOverlayOnTopTest, RejectBackgroundColor) { |
| 801 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 866 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 802 TextureDrawQuad* quad = | 867 TextureDrawQuad* quad = |
| 803 CreateFullscreenCandidateQuad(resource_provider_.get(), | 868 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 804 pass->shared_quad_state_list.back(), | 869 pass->shared_quad_state_list.back(), |
| 805 pass.get()); | 870 pass.get()); |
| 806 quad->background_color = SK_ColorBLACK; | 871 quad->background_color = SK_ColorBLACK; |
| 807 | 872 |
| 808 RenderPassList pass_list; | 873 RenderPassList pass_list; |
| 809 pass_list.push_back(pass.Pass()); | 874 pass_list.push_back(pass.Pass()); |
| 810 OverlayCandidateList candidate_list; | 875 OverlayCandidateList candidate_list; |
| 811 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 876 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 812 &candidate_list); | 877 &candidate_list, &damage_rect_); |
| 813 ASSERT_EQ(1U, pass_list.size()); | 878 ASSERT_EQ(1U, pass_list.size()); |
| 814 EXPECT_EQ(0U, candidate_list.size()); | 879 EXPECT_EQ(0U, candidate_list.size()); |
| 815 } | 880 } |
| 816 | 881 |
| 817 TEST_F(SingleOverlayOnTopTest, RejectBlendMode) { | 882 TEST_F(SingleOverlayOnTopTest, RejectBlendMode) { |
| 818 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 883 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 819 CreateFullscreenCandidateQuad(resource_provider_.get(), | 884 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 820 pass->shared_quad_state_list.back(), | 885 pass->shared_quad_state_list.back(), |
| 821 pass.get()); | 886 pass.get()); |
| 822 pass->shared_quad_state_list.back()->blend_mode = SkXfermode::kScreen_Mode; | 887 pass->shared_quad_state_list.back()->blend_mode = SkXfermode::kScreen_Mode; |
| 823 | 888 |
| 824 RenderPassList pass_list; | 889 RenderPassList pass_list; |
| 825 pass_list.push_back(pass.Pass()); | 890 pass_list.push_back(pass.Pass()); |
| 826 OverlayCandidateList candidate_list; | 891 OverlayCandidateList candidate_list; |
| 827 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 892 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 828 &candidate_list); | 893 &candidate_list, &damage_rect_); |
| 829 ASSERT_EQ(1U, pass_list.size()); | 894 ASSERT_EQ(1U, pass_list.size()); |
| 830 EXPECT_EQ(0U, candidate_list.size()); | 895 EXPECT_EQ(0U, candidate_list.size()); |
| 831 } | 896 } |
| 832 | 897 |
| 833 TEST_F(SingleOverlayOnTopTest, RejectOpacity) { | 898 TEST_F(SingleOverlayOnTopTest, RejectOpacity) { |
| 834 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 899 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 835 CreateFullscreenCandidateQuad(resource_provider_.get(), | 900 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 836 pass->shared_quad_state_list.back(), | 901 pass->shared_quad_state_list.back(), |
| 837 pass.get()); | 902 pass.get()); |
| 838 pass->shared_quad_state_list.back()->opacity = 0.5f; | 903 pass->shared_quad_state_list.back()->opacity = 0.5f; |
| 839 | 904 |
| 840 RenderPassList pass_list; | 905 RenderPassList pass_list; |
| 841 pass_list.push_back(pass.Pass()); | 906 pass_list.push_back(pass.Pass()); |
| 842 OverlayCandidateList candidate_list; | 907 OverlayCandidateList candidate_list; |
| 843 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 908 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 844 &candidate_list); | 909 &candidate_list, &damage_rect_); |
| 845 ASSERT_EQ(1U, pass_list.size()); | 910 ASSERT_EQ(1U, pass_list.size()); |
| 846 EXPECT_EQ(0U, candidate_list.size()); | 911 EXPECT_EQ(0U, candidate_list.size()); |
| 847 } | 912 } |
| 848 | 913 |
| 849 TEST_F(SingleOverlayOnTopTest, RejectNonAxisAlignedTransform) { | 914 TEST_F(SingleOverlayOnTopTest, RejectNonAxisAlignedTransform) { |
| 850 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 915 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 851 CreateFullscreenCandidateQuad(resource_provider_.get(), | 916 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 852 pass->shared_quad_state_list.back(), | 917 pass->shared_quad_state_list.back(), |
| 853 pass.get()); | 918 pass.get()); |
| 854 pass->shared_quad_state_list.back() | 919 pass->shared_quad_state_list.back() |
| 855 ->quad_to_target_transform.RotateAboutXAxis(45.f); | 920 ->quad_to_target_transform.RotateAboutXAxis(45.f); |
| 856 | 921 |
| 857 RenderPassList pass_list; | 922 RenderPassList pass_list; |
| 858 pass_list.push_back(pass.Pass()); | 923 pass_list.push_back(pass.Pass()); |
| 859 OverlayCandidateList candidate_list; | 924 OverlayCandidateList candidate_list; |
| 860 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 925 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 861 &candidate_list); | 926 &candidate_list, &damage_rect_); |
| 862 ASSERT_EQ(1U, pass_list.size()); | 927 ASSERT_EQ(1U, pass_list.size()); |
| 863 EXPECT_EQ(0U, candidate_list.size()); | 928 EXPECT_EQ(0U, candidate_list.size()); |
| 864 } | 929 } |
| 865 | 930 |
| 866 TEST_F(SingleOverlayOnTopTest, AllowClipped) { | 931 TEST_F(SingleOverlayOnTopTest, AllowClipped) { |
| 867 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 932 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 868 CreateFullscreenCandidateQuad(resource_provider_.get(), | 933 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 869 pass->shared_quad_state_list.back(), | 934 pass->shared_quad_state_list.back(), |
| 870 pass.get()); | 935 pass.get()); |
| 871 pass->shared_quad_state_list.back()->is_clipped = true; | 936 pass->shared_quad_state_list.back()->is_clipped = true; |
| 872 pass->shared_quad_state_list.back()->clip_rect = kOverlayClipRect; | 937 pass->shared_quad_state_list.back()->clip_rect = kOverlayClipRect; |
| 873 | 938 |
| 874 RenderPassList pass_list; | 939 RenderPassList pass_list; |
| 875 pass_list.push_back(pass.Pass()); | 940 pass_list.push_back(pass.Pass()); |
| 876 OverlayCandidateList candidate_list; | 941 OverlayCandidateList candidate_list; |
| 877 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 942 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 878 &candidate_list); | 943 &candidate_list, &damage_rect_); |
| 879 ASSERT_EQ(1U, pass_list.size()); | 944 ASSERT_EQ(1U, pass_list.size()); |
| 880 EXPECT_EQ(1U, candidate_list.size()); | 945 EXPECT_EQ(1U, candidate_list.size()); |
| 881 } | 946 } |
| 882 | 947 |
| 883 TEST_F(SingleOverlayOnTopTest, AllowVerticalFlip) { | 948 TEST_F(SingleOverlayOnTopTest, AllowVerticalFlip) { |
| 884 gfx::Rect rect = kOverlayRect; | 949 gfx::Rect rect = kOverlayRect; |
| 885 rect.set_width(rect.width() / 2); | 950 rect.set_width(rect.width() / 2); |
| 886 rect.Offset(0, -rect.height()); | 951 rect.Offset(0, -rect.height()); |
| 887 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 952 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 888 CreateCandidateQuadAt(resource_provider_.get(), | 953 CreateCandidateQuadAt(resource_provider_.get(), |
| 889 pass->shared_quad_state_list.back(), pass.get(), rect); | 954 pass->shared_quad_state_list.back(), pass.get(), rect); |
| 890 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(2.0f, | 955 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(2.0f, |
| 891 -1.0f); | 956 -1.0f); |
| 892 | 957 |
| 893 RenderPassList pass_list; | 958 RenderPassList pass_list; |
| 894 pass_list.push_back(pass.Pass()); | 959 pass_list.push_back(pass.Pass()); |
| 895 OverlayCandidateList candidate_list; | 960 OverlayCandidateList candidate_list; |
| 896 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 961 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 897 &candidate_list); | 962 &candidate_list, &damage_rect_); |
| 898 ASSERT_EQ(1U, pass_list.size()); | 963 ASSERT_EQ(1U, pass_list.size()); |
| 899 ASSERT_EQ(1U, candidate_list.size()); | 964 ASSERT_EQ(1U, candidate_list.size()); |
| 900 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_VERTICAL, | 965 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_VERTICAL, |
| 901 candidate_list.back().transform); | 966 candidate_list.back().transform); |
| 902 } | 967 } |
| 903 | 968 |
| 904 TEST_F(SingleOverlayOnTopTest, AllowHorizontalFlip) { | 969 TEST_F(SingleOverlayOnTopTest, AllowHorizontalFlip) { |
| 905 gfx::Rect rect = kOverlayRect; | 970 gfx::Rect rect = kOverlayRect; |
| 906 rect.set_height(rect.height() / 2); | 971 rect.set_height(rect.height() / 2); |
| 907 rect.Offset(-rect.width(), 0); | 972 rect.Offset(-rect.width(), 0); |
| 908 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 973 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 909 CreateCandidateQuadAt(resource_provider_.get(), | 974 CreateCandidateQuadAt(resource_provider_.get(), |
| 910 pass->shared_quad_state_list.back(), pass.get(), rect); | 975 pass->shared_quad_state_list.back(), pass.get(), rect); |
| 911 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(-1.0f, | 976 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(-1.0f, |
| 912 2.0f); | 977 2.0f); |
| 913 | 978 |
| 914 RenderPassList pass_list; | 979 RenderPassList pass_list; |
| 915 pass_list.push_back(pass.Pass()); | 980 pass_list.push_back(pass.Pass()); |
| 916 OverlayCandidateList candidate_list; | 981 OverlayCandidateList candidate_list; |
| 917 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 982 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 918 &candidate_list); | 983 &candidate_list, &damage_rect_); |
| 919 ASSERT_EQ(1U, pass_list.size()); | 984 ASSERT_EQ(1U, pass_list.size()); |
| 920 ASSERT_EQ(1U, candidate_list.size()); | 985 ASSERT_EQ(1U, candidate_list.size()); |
| 921 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_HORIZONTAL, | 986 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_HORIZONTAL, |
| 922 candidate_list.back().transform); | 987 candidate_list.back().transform); |
| 923 } | 988 } |
| 924 | 989 |
| 925 TEST_F(SingleOverlayOnTopTest, AllowPositiveScaleTransform) { | 990 TEST_F(SingleOverlayOnTopTest, AllowPositiveScaleTransform) { |
| 926 gfx::Rect rect = kOverlayRect; | 991 gfx::Rect rect = kOverlayRect; |
| 927 rect.set_width(rect.width() / 2); | 992 rect.set_width(rect.width() / 2); |
| 928 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 993 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 929 CreateCandidateQuadAt(resource_provider_.get(), | 994 CreateCandidateQuadAt(resource_provider_.get(), |
| 930 pass->shared_quad_state_list.back(), pass.get(), rect); | 995 pass->shared_quad_state_list.back(), pass.get(), rect); |
| 931 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(2.0f, | 996 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(2.0f, |
| 932 1.0f); | 997 1.0f); |
| 933 | 998 |
| 934 RenderPassList pass_list; | 999 RenderPassList pass_list; |
| 935 pass_list.push_back(pass.Pass()); | 1000 pass_list.push_back(pass.Pass()); |
| 936 OverlayCandidateList candidate_list; | 1001 OverlayCandidateList candidate_list; |
| 937 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1002 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 938 &candidate_list); | 1003 &candidate_list, &damage_rect_); |
| 939 ASSERT_EQ(1U, pass_list.size()); | 1004 ASSERT_EQ(1U, pass_list.size()); |
| 940 EXPECT_EQ(1U, candidate_list.size()); | 1005 EXPECT_EQ(1U, candidate_list.size()); |
| 941 } | 1006 } |
| 942 | 1007 |
| 943 TEST_F(SingleOverlayOnTopTest, Allow90DegreeRotation) { | 1008 TEST_F(SingleOverlayOnTopTest, Allow90DegreeRotation) { |
| 944 gfx::Rect rect = kOverlayRect; | 1009 gfx::Rect rect = kOverlayRect; |
| 945 rect.Offset(0, -rect.height()); | 1010 rect.Offset(0, -rect.height()); |
| 946 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1011 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 947 CreateCandidateQuadAt(resource_provider_.get(), | 1012 CreateCandidateQuadAt(resource_provider_.get(), |
| 948 pass->shared_quad_state_list.back(), pass.get(), rect); | 1013 pass->shared_quad_state_list.back(), pass.get(), rect); |
| 949 pass->shared_quad_state_list.back() | 1014 pass->shared_quad_state_list.back() |
| 950 ->quad_to_target_transform.RotateAboutZAxis(90.f); | 1015 ->quad_to_target_transform.RotateAboutZAxis(90.f); |
| 951 | 1016 |
| 952 RenderPassList pass_list; | 1017 RenderPassList pass_list; |
| 953 pass_list.push_back(pass.Pass()); | 1018 pass_list.push_back(pass.Pass()); |
| 954 OverlayCandidateList candidate_list; | 1019 OverlayCandidateList candidate_list; |
| 955 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1020 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 956 &candidate_list); | 1021 &candidate_list, &damage_rect_); |
| 957 ASSERT_EQ(1U, pass_list.size()); | 1022 ASSERT_EQ(1U, pass_list.size()); |
| 958 ASSERT_EQ(1U, candidate_list.size()); | 1023 ASSERT_EQ(1U, candidate_list.size()); |
| 959 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_90, candidate_list.back().transform); | 1024 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_90, candidate_list.back().transform); |
| 960 } | 1025 } |
| 961 | 1026 |
| 962 TEST_F(SingleOverlayOnTopTest, Allow180DegreeRotation) { | 1027 TEST_F(SingleOverlayOnTopTest, Allow180DegreeRotation) { |
| 963 gfx::Rect rect = kOverlayRect; | 1028 gfx::Rect rect = kOverlayRect; |
| 964 rect.Offset(-rect.width(), -rect.height()); | 1029 rect.Offset(-rect.width(), -rect.height()); |
| 965 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1030 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 966 CreateCandidateQuadAt(resource_provider_.get(), | 1031 CreateCandidateQuadAt(resource_provider_.get(), |
| 967 pass->shared_quad_state_list.back(), pass.get(), rect); | 1032 pass->shared_quad_state_list.back(), pass.get(), rect); |
| 968 pass->shared_quad_state_list.back() | 1033 pass->shared_quad_state_list.back() |
| 969 ->quad_to_target_transform.RotateAboutZAxis(180.f); | 1034 ->quad_to_target_transform.RotateAboutZAxis(180.f); |
| 970 | 1035 |
| 971 RenderPassList pass_list; | 1036 RenderPassList pass_list; |
| 972 pass_list.push_back(pass.Pass()); | 1037 pass_list.push_back(pass.Pass()); |
| 973 OverlayCandidateList candidate_list; | 1038 OverlayCandidateList candidate_list; |
| 974 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1039 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 975 &candidate_list); | 1040 &candidate_list, &damage_rect_); |
| 976 ASSERT_EQ(1U, pass_list.size()); | 1041 ASSERT_EQ(1U, pass_list.size()); |
| 977 ASSERT_EQ(1U, candidate_list.size()); | 1042 ASSERT_EQ(1U, candidate_list.size()); |
| 978 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_180, candidate_list.back().transform); | 1043 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_180, candidate_list.back().transform); |
| 979 } | 1044 } |
| 980 | 1045 |
| 981 TEST_F(SingleOverlayOnTopTest, Allow270DegreeRotation) { | 1046 TEST_F(SingleOverlayOnTopTest, Allow270DegreeRotation) { |
| 982 gfx::Rect rect = kOverlayRect; | 1047 gfx::Rect rect = kOverlayRect; |
| 983 rect.Offset(-rect.width(), 0); | 1048 rect.Offset(-rect.width(), 0); |
| 984 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1049 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 985 CreateCandidateQuadAt(resource_provider_.get(), | 1050 CreateCandidateQuadAt(resource_provider_.get(), |
| 986 pass->shared_quad_state_list.back(), pass.get(), rect); | 1051 pass->shared_quad_state_list.back(), pass.get(), rect); |
| 987 pass->shared_quad_state_list.back() | 1052 pass->shared_quad_state_list.back() |
| 988 ->quad_to_target_transform.RotateAboutZAxis(270.f); | 1053 ->quad_to_target_transform.RotateAboutZAxis(270.f); |
| 989 | 1054 |
| 990 RenderPassList pass_list; | 1055 RenderPassList pass_list; |
| 991 pass_list.push_back(pass.Pass()); | 1056 pass_list.push_back(pass.Pass()); |
| 992 OverlayCandidateList candidate_list; | 1057 OverlayCandidateList candidate_list; |
| 993 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1058 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 994 &candidate_list); | 1059 &candidate_list, &damage_rect_); |
| 995 ASSERT_EQ(1U, pass_list.size()); | 1060 ASSERT_EQ(1U, pass_list.size()); |
| 996 ASSERT_EQ(1U, candidate_list.size()); | 1061 ASSERT_EQ(1U, candidate_list.size()); |
| 997 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_270, candidate_list.back().transform); | 1062 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_270, candidate_list.back().transform); |
| 998 } | 1063 } |
| 999 | 1064 |
| 1000 TEST_F(SingleOverlayOnTopTest, AllowNotTopIfNotOccluded) { | 1065 TEST_F(SingleOverlayOnTopTest, AllowNotTopIfNotOccluded) { |
| 1001 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1066 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1002 CreateOpaqueQuadAt(resource_provider_.get(), | 1067 CreateOpaqueQuadAt(resource_provider_.get(), |
| 1003 pass->shared_quad_state_list.back(), pass.get(), | 1068 pass->shared_quad_state_list.back(), pass.get(), |
| 1004 kOverlayTopLeftRect); | 1069 kOverlayTopLeftRect); |
| 1005 CreateCandidateQuadAt(resource_provider_.get(), | 1070 CreateCandidateQuadAt(resource_provider_.get(), |
| 1006 pass->shared_quad_state_list.back(), | 1071 pass->shared_quad_state_list.back(), |
| 1007 pass.get(), | 1072 pass.get(), |
| 1008 kOverlayBottomRightRect); | 1073 kOverlayBottomRightRect); |
| 1009 | 1074 |
| 1010 RenderPassList pass_list; | 1075 RenderPassList pass_list; |
| 1011 pass_list.push_back(pass.Pass()); | 1076 pass_list.push_back(pass.Pass()); |
| 1012 | 1077 |
| 1013 RenderPassList original_pass_list; | 1078 RenderPassList original_pass_list; |
| 1014 RenderPass::CopyAll(pass_list, &original_pass_list); | 1079 RenderPass::CopyAll(pass_list, &original_pass_list); |
| 1015 | 1080 |
| 1016 OverlayCandidateList candidate_list; | 1081 OverlayCandidateList candidate_list; |
| 1017 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1082 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 1018 &candidate_list); | 1083 &candidate_list, &damage_rect_); |
| 1019 EXPECT_EQ(1U, pass_list.size()); | 1084 EXPECT_EQ(1U, pass_list.size()); |
| 1020 EXPECT_EQ(1U, candidate_list.size()); | 1085 EXPECT_EQ(1U, candidate_list.size()); |
| 1021 } | 1086 } |
| 1022 | 1087 |
| 1023 TEST_F(SingleOverlayOnTopTest, AllowTransparentOnTop) { | 1088 TEST_F(SingleOverlayOnTopTest, AllowTransparentOnTop) { |
| 1024 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1089 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1025 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); | 1090 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); |
| 1026 shared_state->opacity = 0.f; | 1091 shared_state->opacity = 0.f; |
| 1027 CreateSolidColorQuadAt(shared_state, SK_ColorBLACK, pass.get(), | 1092 CreateSolidColorQuadAt(shared_state, SK_ColorBLACK, pass.get(), |
| 1028 kOverlayBottomRightRect); | 1093 kOverlayBottomRightRect); |
| 1029 shared_state = pass->CreateAndAppendSharedQuadState(); | 1094 shared_state = pass->CreateAndAppendSharedQuadState(); |
| 1030 shared_state->opacity = 1.f; | 1095 shared_state->opacity = 1.f; |
| 1031 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(), | 1096 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(), |
| 1032 kOverlayBottomRightRect); | 1097 kOverlayBottomRightRect); |
| 1033 | 1098 |
| 1034 RenderPassList pass_list; | 1099 RenderPassList pass_list; |
| 1035 pass_list.push_back(pass.Pass()); | 1100 pass_list.push_back(pass.Pass()); |
| 1036 | 1101 |
| 1037 RenderPassList original_pass_list; | 1102 RenderPassList original_pass_list; |
| 1038 RenderPass::CopyAll(pass_list, &original_pass_list); | 1103 RenderPass::CopyAll(pass_list, &original_pass_list); |
| 1039 | 1104 |
| 1040 OverlayCandidateList candidate_list; | 1105 OverlayCandidateList candidate_list; |
| 1041 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1106 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 1042 &candidate_list); | 1107 &candidate_list, &damage_rect_); |
| 1043 EXPECT_EQ(1U, pass_list.size()); | 1108 EXPECT_EQ(1U, pass_list.size()); |
| 1044 EXPECT_EQ(1U, candidate_list.size()); | 1109 EXPECT_EQ(1U, candidate_list.size()); |
| 1045 } | 1110 } |
| 1046 | 1111 |
| 1047 TEST_F(SingleOverlayOnTopTest, AllowTransparentColorOnTop) { | 1112 TEST_F(SingleOverlayOnTopTest, AllowTransparentColorOnTop) { |
| 1048 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1113 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1049 CreateSolidColorQuadAt(pass->shared_quad_state_list.back(), | 1114 CreateSolidColorQuadAt(pass->shared_quad_state_list.back(), |
| 1050 SK_ColorTRANSPARENT, pass.get(), | 1115 SK_ColorTRANSPARENT, pass.get(), |
| 1051 kOverlayBottomRightRect); | 1116 kOverlayBottomRightRect); |
| 1052 CreateCandidateQuadAt(resource_provider_.get(), | 1117 CreateCandidateQuadAt(resource_provider_.get(), |
| 1053 pass->shared_quad_state_list.back(), pass.get(), | 1118 pass->shared_quad_state_list.back(), pass.get(), |
| 1054 kOverlayBottomRightRect); | 1119 kOverlayBottomRightRect); |
| 1055 | 1120 |
| 1056 RenderPassList pass_list; | 1121 RenderPassList pass_list; |
| 1057 pass_list.push_back(pass.Pass()); | 1122 pass_list.push_back(pass.Pass()); |
| 1058 | 1123 |
| 1059 RenderPassList original_pass_list; | 1124 RenderPassList original_pass_list; |
| 1060 RenderPass::CopyAll(pass_list, &original_pass_list); | 1125 RenderPass::CopyAll(pass_list, &original_pass_list); |
| 1061 | 1126 |
| 1062 OverlayCandidateList candidate_list; | 1127 OverlayCandidateList candidate_list; |
| 1063 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1128 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 1064 &candidate_list); | 1129 &candidate_list, &damage_rect_); |
| 1065 EXPECT_EQ(1U, pass_list.size()); | 1130 EXPECT_EQ(1U, pass_list.size()); |
| 1066 EXPECT_EQ(1U, candidate_list.size()); | 1131 EXPECT_EQ(1U, candidate_list.size()); |
| 1067 } | 1132 } |
| 1068 | 1133 |
| 1069 TEST_F(SingleOverlayOnTopTest, RejectOpaqueColorOnTop) { | 1134 TEST_F(SingleOverlayOnTopTest, RejectOpaqueColorOnTop) { |
| 1070 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1135 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1071 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); | 1136 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); |
| 1072 shared_state->opacity = 0.5f; | 1137 shared_state->opacity = 0.5f; |
| 1073 CreateSolidColorQuadAt(shared_state, SK_ColorBLACK, pass.get(), | 1138 CreateSolidColorQuadAt(shared_state, SK_ColorBLACK, pass.get(), |
| 1074 kOverlayBottomRightRect); | 1139 kOverlayBottomRightRect); |
| 1075 shared_state = pass->CreateAndAppendSharedQuadState(); | 1140 shared_state = pass->CreateAndAppendSharedQuadState(); |
| 1076 shared_state->opacity = 1.f; | 1141 shared_state->opacity = 1.f; |
| 1077 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(), | 1142 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(), |
| 1078 kOverlayBottomRightRect); | 1143 kOverlayBottomRightRect); |
| 1079 | 1144 |
| 1080 RenderPassList pass_list; | 1145 RenderPassList pass_list; |
| 1081 pass_list.push_back(pass.Pass()); | 1146 pass_list.push_back(pass.Pass()); |
| 1082 | 1147 |
| 1083 RenderPassList original_pass_list; | 1148 RenderPassList original_pass_list; |
| 1084 RenderPass::CopyAll(pass_list, &original_pass_list); | 1149 RenderPass::CopyAll(pass_list, &original_pass_list); |
| 1085 | 1150 |
| 1086 OverlayCandidateList candidate_list; | 1151 OverlayCandidateList candidate_list; |
| 1087 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1152 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 1088 &candidate_list); | 1153 &candidate_list, &damage_rect_); |
| 1089 EXPECT_EQ(1U, pass_list.size()); | 1154 EXPECT_EQ(1U, pass_list.size()); |
| 1090 EXPECT_EQ(0U, candidate_list.size()); | 1155 EXPECT_EQ(0U, candidate_list.size()); |
| 1091 } | 1156 } |
| 1092 | 1157 |
| 1093 TEST_F(SingleOverlayOnTopTest, RejectTransparentColorOnTopWithoutBlending) { | 1158 TEST_F(SingleOverlayOnTopTest, RejectTransparentColorOnTopWithoutBlending) { |
| 1094 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1159 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1095 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); | 1160 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); |
| 1096 CreateSolidColorQuadAt(shared_state, SK_ColorTRANSPARENT, pass.get(), | 1161 CreateSolidColorQuadAt(shared_state, SK_ColorTRANSPARENT, pass.get(), |
| 1097 kOverlayBottomRightRect)->opaque_rect = | 1162 kOverlayBottomRightRect)->opaque_rect = |
| 1098 kOverlayBottomRightRect; | 1163 kOverlayBottomRightRect; |
| 1099 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(), | 1164 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(), |
| 1100 kOverlayBottomRightRect); | 1165 kOverlayBottomRightRect); |
| 1101 | 1166 |
| 1102 RenderPassList pass_list; | 1167 RenderPassList pass_list; |
| 1103 pass_list.push_back(pass.Pass()); | 1168 pass_list.push_back(pass.Pass()); |
| 1104 | 1169 |
| 1105 RenderPassList original_pass_list; | 1170 RenderPassList original_pass_list; |
| 1106 RenderPass::CopyAll(pass_list, &original_pass_list); | 1171 RenderPass::CopyAll(pass_list, &original_pass_list); |
| 1107 | 1172 |
| 1108 OverlayCandidateList candidate_list; | 1173 OverlayCandidateList candidate_list; |
| 1109 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1174 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 1110 &candidate_list); | 1175 &candidate_list, &damage_rect_); |
| 1111 EXPECT_EQ(1U, pass_list.size()); | 1176 EXPECT_EQ(1U, pass_list.size()); |
| 1112 EXPECT_EQ(0U, candidate_list.size()); | 1177 EXPECT_EQ(0U, candidate_list.size()); |
| 1113 } | 1178 } |
| 1114 | 1179 |
| 1115 TEST_F(SingleOverlayOnTopTest, RejectVideoSwapTransform) { | 1180 TEST_F(SingleOverlayOnTopTest, RejectVideoSwapTransform) { |
| 1116 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1181 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1117 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), | 1182 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), |
| 1118 pass->shared_quad_state_list.back(), | 1183 pass->shared_quad_state_list.back(), |
| 1119 pass.get(), kSwapTransform); | 1184 pass.get(), kSwapTransform); |
| 1120 | 1185 |
| 1121 RenderPassList pass_list; | 1186 RenderPassList pass_list; |
| 1122 pass_list.push_back(pass.Pass()); | 1187 pass_list.push_back(pass.Pass()); |
| 1123 OverlayCandidateList candidate_list; | 1188 OverlayCandidateList candidate_list; |
| 1124 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1189 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 1125 &candidate_list); | 1190 &candidate_list, &damage_rect_); |
| 1126 ASSERT_EQ(1U, pass_list.size()); | 1191 ASSERT_EQ(1U, pass_list.size()); |
| 1127 EXPECT_EQ(0U, candidate_list.size()); | 1192 EXPECT_EQ(0U, candidate_list.size()); |
| 1128 } | 1193 } |
| 1129 | 1194 |
| 1130 TEST_F(SingleOverlayOnTopTest, AllowVideoXMirrorTransform) { | 1195 TEST_F(SingleOverlayOnTopTest, AllowVideoXMirrorTransform) { |
| 1131 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1196 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1132 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), | 1197 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), |
| 1133 pass->shared_quad_state_list.back(), | 1198 pass->shared_quad_state_list.back(), |
| 1134 pass.get(), kXMirrorTransform); | 1199 pass.get(), kXMirrorTransform); |
| 1135 | 1200 |
| 1136 RenderPassList pass_list; | 1201 RenderPassList pass_list; |
| 1137 pass_list.push_back(pass.Pass()); | 1202 pass_list.push_back(pass.Pass()); |
| 1138 OverlayCandidateList candidate_list; | 1203 OverlayCandidateList candidate_list; |
| 1139 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1204 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 1140 &candidate_list); | 1205 &candidate_list, &damage_rect_); |
| 1141 ASSERT_EQ(1U, pass_list.size()); | 1206 ASSERT_EQ(1U, pass_list.size()); |
| 1142 EXPECT_EQ(1U, candidate_list.size()); | 1207 EXPECT_EQ(1U, candidate_list.size()); |
| 1143 } | 1208 } |
| 1144 | 1209 |
| 1145 TEST_F(SingleOverlayOnTopTest, AllowVideoBothMirrorTransform) { | 1210 TEST_F(SingleOverlayOnTopTest, AllowVideoBothMirrorTransform) { |
| 1146 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1211 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1147 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), | 1212 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), |
| 1148 pass->shared_quad_state_list.back(), | 1213 pass->shared_quad_state_list.back(), |
| 1149 pass.get(), kBothMirrorTransform); | 1214 pass.get(), kBothMirrorTransform); |
| 1150 | 1215 |
| 1151 RenderPassList pass_list; | 1216 RenderPassList pass_list; |
| 1152 pass_list.push_back(pass.Pass()); | 1217 pass_list.push_back(pass.Pass()); |
| 1153 OverlayCandidateList candidate_list; | 1218 OverlayCandidateList candidate_list; |
| 1154 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1219 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 1155 &candidate_list); | 1220 &candidate_list, &damage_rect_); |
| 1156 ASSERT_EQ(1U, pass_list.size()); | 1221 ASSERT_EQ(1U, pass_list.size()); |
| 1157 EXPECT_EQ(1U, candidate_list.size()); | 1222 EXPECT_EQ(1U, candidate_list.size()); |
| 1158 } | 1223 } |
| 1159 | 1224 |
| 1160 TEST_F(SingleOverlayOnTopTest, AllowVideoNormalTransform) { | 1225 TEST_F(SingleOverlayOnTopTest, AllowVideoNormalTransform) { |
| 1161 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1226 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1162 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), | 1227 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), |
| 1163 pass->shared_quad_state_list.back(), | 1228 pass->shared_quad_state_list.back(), |
| 1164 pass.get(), kNormalTransform); | 1229 pass.get(), kNormalTransform); |
| 1165 | 1230 |
| 1166 RenderPassList pass_list; | 1231 RenderPassList pass_list; |
| 1167 pass_list.push_back(pass.Pass()); | 1232 pass_list.push_back(pass.Pass()); |
| 1168 OverlayCandidateList candidate_list; | 1233 OverlayCandidateList candidate_list; |
| 1169 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1234 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 1170 &candidate_list); | 1235 &candidate_list, &damage_rect_); |
| 1171 ASSERT_EQ(1U, pass_list.size()); | 1236 ASSERT_EQ(1U, pass_list.size()); |
| 1172 EXPECT_EQ(1U, candidate_list.size()); | 1237 EXPECT_EQ(1U, candidate_list.size()); |
| 1173 } | 1238 } |
| 1174 | 1239 |
| 1175 TEST_F(SingleOverlayOnTopTest, AllowVideoYMirrorTransform) { | 1240 TEST_F(SingleOverlayOnTopTest, AllowVideoYMirrorTransform) { |
| 1176 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1241 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1177 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), | 1242 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), |
| 1178 pass->shared_quad_state_list.back(), | 1243 pass->shared_quad_state_list.back(), |
| 1179 pass.get(), kYMirrorTransform); | 1244 pass.get(), kYMirrorTransform); |
| 1180 | 1245 |
| 1181 RenderPassList pass_list; | 1246 RenderPassList pass_list; |
| 1182 pass_list.push_back(pass.Pass()); | 1247 pass_list.push_back(pass.Pass()); |
| 1183 OverlayCandidateList candidate_list; | 1248 OverlayCandidateList candidate_list; |
| 1184 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1249 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 1185 &candidate_list); | 1250 &candidate_list, &damage_rect_); |
| 1186 ASSERT_EQ(1U, pass_list.size()); | 1251 ASSERT_EQ(1U, pass_list.size()); |
| 1187 EXPECT_EQ(1U, candidate_list.size()); | 1252 EXPECT_EQ(1U, candidate_list.size()); |
| 1188 } | 1253 } |
| 1189 | 1254 |
| 1190 TEST_F(UnderlayTest, OverlayLayerUnderMainLayer) { | 1255 TEST_F(UnderlayTest, OverlayLayerUnderMainLayer) { |
| 1191 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1256 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1192 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 1257 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 1193 pass->shared_quad_state_list.back(), pass.get()); | 1258 pass->shared_quad_state_list.back(), pass.get()); |
| 1194 CreateCandidateQuadAt(resource_provider_.get(), | 1259 CreateCandidateQuadAt(resource_provider_.get(), |
| 1195 pass->shared_quad_state_list.back(), pass.get(), | 1260 pass->shared_quad_state_list.back(), pass.get(), |
| 1196 kOverlayBottomRightRect); | 1261 kOverlayBottomRightRect); |
| 1197 | 1262 |
| 1198 RenderPassList pass_list; | 1263 RenderPassList pass_list; |
| 1199 pass_list.push_back(pass.Pass()); | 1264 pass_list.push_back(pass.Pass()); |
| 1200 | 1265 |
| 1201 OverlayCandidateList candidate_list; | 1266 OverlayCandidateList candidate_list; |
| 1202 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1267 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 1203 &candidate_list); | 1268 &candidate_list, &damage_rect_); |
| 1204 EXPECT_EQ(1U, pass_list.size()); | 1269 EXPECT_EQ(1U, pass_list.size()); |
| 1205 ASSERT_EQ(1U, candidate_list.size()); | 1270 ASSERT_EQ(1U, candidate_list.size()); |
| 1206 EXPECT_EQ(-1, candidate_list[0].plane_z_order); | 1271 EXPECT_EQ(-1, candidate_list[0].plane_z_order); |
| 1207 EXPECT_EQ(2U, pass_list[0]->quad_list.size()); | 1272 EXPECT_EQ(2U, pass_list[0]->quad_list.size()); |
| 1208 // The overlay quad should have changed to a SOLID_COLOR quad. | 1273 // The overlay quad should have changed to a SOLID_COLOR quad. |
| 1209 EXPECT_EQ(pass_list[0]->quad_list.back()->material, DrawQuad::SOLID_COLOR); | 1274 EXPECT_EQ(pass_list[0]->quad_list.back()->material, DrawQuad::SOLID_COLOR); |
| 1210 } | 1275 } |
| 1211 | 1276 |
| 1212 TEST_F(UnderlayTest, AllowOnTop) { | 1277 TEST_F(UnderlayTest, AllowOnTop) { |
| 1213 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1278 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1214 CreateFullscreenCandidateQuad(resource_provider_.get(), | 1279 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 1215 pass->shared_quad_state_list.back(), | 1280 pass->shared_quad_state_list.back(), |
| 1216 pass.get()); | 1281 pass.get()); |
| 1217 pass->CreateAndAppendSharedQuadState()->opacity = 0.5f; | 1282 pass->CreateAndAppendSharedQuadState()->opacity = 0.5f; |
| 1218 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 1283 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 1219 pass->shared_quad_state_list.back(), pass.get()); | 1284 pass->shared_quad_state_list.back(), pass.get()); |
| 1220 | 1285 |
| 1221 RenderPassList pass_list; | 1286 RenderPassList pass_list; |
| 1222 pass_list.push_back(pass.Pass()); | 1287 pass_list.push_back(pass.Pass()); |
| 1223 | 1288 |
| 1224 OverlayCandidateList candidate_list; | 1289 OverlayCandidateList candidate_list; |
| 1225 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1290 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 1226 &candidate_list); | 1291 &candidate_list, &damage_rect_); |
| 1227 EXPECT_EQ(1U, pass_list.size()); | 1292 EXPECT_EQ(1U, pass_list.size()); |
| 1228 ASSERT_EQ(1U, candidate_list.size()); | 1293 ASSERT_EQ(1U, candidate_list.size()); |
| 1229 EXPECT_EQ(-1, candidate_list[0].plane_z_order); | 1294 EXPECT_EQ(-1, candidate_list[0].plane_z_order); |
| 1230 // The overlay quad should have changed to a SOLID_COLOR quad. | 1295 // The overlay quad should have changed to a SOLID_COLOR quad. |
| 1231 EXPECT_EQ(pass_list[0]->quad_list.front()->material, DrawQuad::SOLID_COLOR); | 1296 EXPECT_EQ(pass_list[0]->quad_list.front()->material, DrawQuad::SOLID_COLOR); |
| 1232 } | 1297 } |
| 1233 | 1298 |
| 1299 TEST_F(UnderlayTest, DamageRect) { |
| 1300 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1301 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 1302 pass->shared_quad_state_list.back(), |
| 1303 pass.get()); |
| 1304 |
| 1305 damage_rect_ = kOverlayRect; |
| 1306 |
| 1307 // Add something behind it. |
| 1308 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 1309 pass->shared_quad_state_list.back(), pass.get()); |
| 1310 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 1311 pass->shared_quad_state_list.back(), pass.get()); |
| 1312 |
| 1313 RenderPassList pass_list; |
| 1314 pass_list.push_back(pass.Pass()); |
| 1315 |
| 1316 // Check for potential candidates. |
| 1317 OverlayCandidateList candidate_list; |
| 1318 |
| 1319 // Primary plane. |
| 1320 OverlayCandidate output_surface_plane; |
| 1321 output_surface_plane.display_rect = gfx::RectF(kOverlayRect); |
| 1322 output_surface_plane.quad_rect_in_target_space = kOverlayRect; |
| 1323 output_surface_plane.use_output_surface_for_resource = true; |
| 1324 output_surface_plane.overlay_handled = true; |
| 1325 candidate_list.push_back(output_surface_plane); |
| 1326 |
| 1327 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 1328 &candidate_list, &damage_rect_); |
| 1329 DCHECK(!damage_rect_.IsEmpty()); |
| 1330 } |
| 1331 |
| 1234 TEST_F(AllOrNothingOverlayTest, SuccessfulOverlappingOverlays) { | 1332 TEST_F(AllOrNothingOverlayTest, SuccessfulOverlappingOverlays) { |
| 1235 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1333 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1236 | 1334 |
| 1237 // Add two overlapping candidates. | 1335 // Add two overlapping candidates. |
| 1238 CreateCandidateQuadAt(resource_provider_.get(), | 1336 CreateCandidateQuadAt(resource_provider_.get(), |
| 1239 pass->shared_quad_state_list.back(), pass.get(), | 1337 pass->shared_quad_state_list.back(), pass.get(), |
| 1240 kOverlayTopLeftRect); | 1338 kOverlayTopLeftRect); |
| 1241 CreateCandidateQuadAt(resource_provider_.get(), | 1339 CreateCandidateQuadAt(resource_provider_.get(), |
| 1242 pass->shared_quad_state_list.back(), pass.get(), | 1340 pass->shared_quad_state_list.back(), pass.get(), |
| 1243 kOverlayRect); | 1341 kOverlayRect); |
| 1244 | 1342 |
| 1245 RenderPassList pass_list; | 1343 RenderPassList pass_list; |
| 1246 pass_list.push_back(pass.Pass()); | 1344 pass_list.push_back(pass.Pass()); |
| 1247 OverlayCandidateList candidates; | 1345 OverlayCandidateList candidates; |
| 1248 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1346 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 1249 &candidates); | 1347 &candidates, &damage_rect_); |
| 1250 | 1348 |
| 1251 // Both quads should become overlays. | 1349 // Both quads should become overlays. |
| 1252 EXPECT_EQ(2u, candidates.size()); | 1350 EXPECT_EQ(2u, candidates.size()); |
| 1253 EXPECT_EQ(-1, candidates[0].plane_z_order); | 1351 EXPECT_EQ(-1, candidates[0].plane_z_order); |
| 1254 EXPECT_EQ(-2, candidates[1].plane_z_order); | 1352 EXPECT_EQ(-2, candidates[1].plane_z_order); |
| 1255 EXPECT_EQ(gfx::RectF(kOverlayTopLeftRect), candidates[0].display_rect); | 1353 EXPECT_EQ(gfx::RectF(kOverlayTopLeftRect), candidates[0].display_rect); |
| 1256 EXPECT_EQ(gfx::RectF(kOverlayRect), candidates[1].display_rect); | 1354 EXPECT_EQ(gfx::RectF(kOverlayRect), candidates[1].display_rect); |
| 1257 | 1355 |
| 1258 // All quads should be gone. | 1356 // All quads should be gone. |
| 1259 EXPECT_TRUE(pass_list.back()->quad_list.empty()); | 1357 EXPECT_TRUE(pass_list.back()->quad_list.empty()); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 1270 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); | 1368 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); |
| 1271 shared_state->opacity = 1.f; | 1369 shared_state->opacity = 1.f; |
| 1272 shared_state->quad_to_target_transform.Rotate(90); | 1370 shared_state->quad_to_target_transform.Rotate(90); |
| 1273 CreateSolidColorQuadAt(shared_state, SK_ColorBLACK, pass.get(), | 1371 CreateSolidColorQuadAt(shared_state, SK_ColorBLACK, pass.get(), |
| 1274 kOverlayBottomRightRect); | 1372 kOverlayBottomRightRect); |
| 1275 | 1373 |
| 1276 RenderPassList pass_list; | 1374 RenderPassList pass_list; |
| 1277 pass_list.push_back(pass.Pass()); | 1375 pass_list.push_back(pass.Pass()); |
| 1278 OverlayCandidateList candidates; | 1376 OverlayCandidateList candidates; |
| 1279 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 1377 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 1280 &candidates); | 1378 &candidates, &damage_rect_); |
| 1281 | 1379 |
| 1282 // No quads should become overlays. | 1380 // No quads should become overlays. |
| 1283 EXPECT_EQ(0u, candidates.size()); | 1381 EXPECT_EQ(0u, candidates.size()); |
| 1284 EXPECT_EQ(2u, pass_list.back()->quad_list.size()); | 1382 EXPECT_EQ(2u, pass_list.back()->quad_list.size()); |
| 1285 } | 1383 } |
| 1286 | 1384 |
| 1385 TEST_F(AllOrNothingOverlayTest, DamageRect) { |
| 1386 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1387 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 1388 pass->shared_quad_state_list.back(), |
| 1389 pass.get()); |
| 1390 |
| 1391 damage_rect_ = kOverlayRect; |
| 1392 |
| 1393 // Add something behind it. |
| 1394 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 1395 pass->shared_quad_state_list.back(), pass.get()); |
| 1396 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 1397 pass->shared_quad_state_list.back(), pass.get()); |
| 1398 |
| 1399 RenderPassList pass_list; |
| 1400 pass_list.push_back(pass.Pass()); |
| 1401 |
| 1402 // Check for potential candidates. |
| 1403 OverlayCandidateList candidate_list; |
| 1404 |
| 1405 // Primary plane. |
| 1406 OverlayCandidate output_surface_plane; |
| 1407 output_surface_plane.display_rect = gfx::RectF(kOverlayRect); |
| 1408 output_surface_plane.quad_rect_in_target_space = kOverlayRect; |
| 1409 output_surface_plane.use_output_surface_for_resource = true; |
| 1410 output_surface_plane.overlay_handled = true; |
| 1411 candidate_list.push_back(output_surface_plane); |
| 1412 |
| 1413 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 1414 &candidate_list, &damage_rect_); |
| 1415 DCHECK(!damage_rect_.IsEmpty()); |
| 1416 } |
| 1417 |
| 1287 class OverlayInfoRendererGL : public GLRenderer { | 1418 class OverlayInfoRendererGL : public GLRenderer { |
| 1288 public: | 1419 public: |
| 1289 OverlayInfoRendererGL(RendererClient* client, | 1420 OverlayInfoRendererGL(RendererClient* client, |
| 1290 const RendererSettings* settings, | 1421 const RendererSettings* settings, |
| 1291 OutputSurface* output_surface, | 1422 OutputSurface* output_surface, |
| 1292 ResourceProvider* resource_provider) | 1423 ResourceProvider* resource_provider) |
| 1293 : GLRenderer(client, | 1424 : GLRenderer(client, |
| 1294 settings, | 1425 settings, |
| 1295 output_surface, | 1426 output_surface, |
| 1296 resource_provider, | 1427 resource_provider, |
| (...skipping 10 matching lines...) Expand all Loading... |
| 1307 | 1438 |
| 1308 void FinishDrawingFrame(DrawingFrame* frame) override { | 1439 void FinishDrawingFrame(DrawingFrame* frame) override { |
| 1309 GLRenderer::FinishDrawingFrame(frame); | 1440 GLRenderer::FinishDrawingFrame(frame); |
| 1310 | 1441 |
| 1311 if (!expect_overlays_) { | 1442 if (!expect_overlays_) { |
| 1312 EXPECT_EQ(0U, frame->overlay_list.size()); | 1443 EXPECT_EQ(0U, frame->overlay_list.size()); |
| 1313 return; | 1444 return; |
| 1314 } | 1445 } |
| 1315 | 1446 |
| 1316 ASSERT_EQ(2U, frame->overlay_list.size()); | 1447 ASSERT_EQ(2U, frame->overlay_list.size()); |
| 1317 EXPECT_NE(0U, frame->overlay_list.back().resource_id); | 1448 EXPECT_GE(frame->overlay_list.back().resource_id, 0U); |
| 1318 } | 1449 } |
| 1319 | 1450 |
| 1320 void set_expect_overlays(bool expect_overlays) { | 1451 void set_expect_overlays(bool expect_overlays) { |
| 1321 expect_overlays_ = expect_overlays; | 1452 expect_overlays_ = expect_overlays; |
| 1322 } | 1453 } |
| 1323 | 1454 |
| 1324 private: | 1455 private: |
| 1325 bool expect_overlays_; | 1456 bool expect_overlays_; |
| 1326 }; | 1457 }; |
| 1327 | 1458 |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1378 }; | 1509 }; |
| 1379 | 1510 |
| 1380 TEST_F(GLRendererWithOverlaysTest, OverlayQuadNotDrawn) { | 1511 TEST_F(GLRendererWithOverlaysTest, OverlayQuadNotDrawn) { |
| 1381 bool use_validator = true; | 1512 bool use_validator = true; |
| 1382 Init(use_validator); | 1513 Init(use_validator); |
| 1383 renderer_->set_expect_overlays(true); | 1514 renderer_->set_expect_overlays(true); |
| 1384 gfx::Rect viewport_rect(16, 16); | 1515 gfx::Rect viewport_rect(16, 16); |
| 1385 | 1516 |
| 1386 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1517 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1387 | 1518 |
| 1388 CreateFullscreenCandidateQuad(resource_provider_.get(), | 1519 CreateCandidateQuadAt(resource_provider_.get(), |
| 1389 pass->shared_quad_state_list.back(), | 1520 pass->shared_quad_state_list.back(), pass.get(), |
| 1390 pass.get()); | 1521 kOverlayBottomRightRect); |
| 1391 | |
| 1392 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 1522 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 1393 pass->shared_quad_state_list.back(), pass.get()); | 1523 pass->shared_quad_state_list.back(), pass.get()); |
| 1394 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 1524 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 1395 pass->shared_quad_state_list.back(), pass.get()); | 1525 pass->shared_quad_state_list.back(), pass.get()); |
| 1396 | 1526 |
| 1397 RenderPassList pass_list; | 1527 RenderPassList pass_list; |
| 1398 pass_list.push_back(pass.Pass()); | 1528 pass_list.push_back(pass.Pass()); |
| 1399 | 1529 |
| 1400 // Candidate pass was taken out and extra skipped pass added, | 1530 // Candidate pass was taken out and extra skipped pass added, |
| 1401 // so only draw 2 quads. | 1531 // so only draw 2 quads. |
| 1402 EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(2); | 1532 EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(2); |
| 1403 EXPECT_CALL(scheduler_, | 1533 EXPECT_CALL(scheduler_, |
| 1404 Schedule(0, gfx::OVERLAY_TRANSFORM_NONE, _, | 1534 Schedule(0, gfx::OVERLAY_TRANSFORM_NONE, _, |
| 1405 gfx::Rect(kDisplaySize), gfx::RectF(0, 0, 1, 1))) | 1535 gfx::Rect(kDisplaySize), gfx::RectF(0, 0, 1, 1))) |
| 1406 .Times(1); | 1536 .Times(1); |
| 1407 EXPECT_CALL(scheduler_, | 1537 EXPECT_CALL(scheduler_, Schedule(1, gfx::OVERLAY_TRANSFORM_NONE, _, |
| 1408 Schedule(1, gfx::OVERLAY_TRANSFORM_NONE, _, kOverlayRect, | 1538 kOverlayBottomRightRect, |
| 1409 BoundingRect(kUVTopLeft, kUVBottomRight))) | 1539 BoundingRect(kUVTopLeft, kUVBottomRight))) |
| 1410 .Times(1); | 1540 .Times(1); |
| 1411 renderer_->DrawFrame(&pass_list, 1.f, viewport_rect, viewport_rect, false); | 1541 renderer_->DrawFrame(&pass_list, 1.f, viewport_rect, viewport_rect, false); |
| 1412 | 1542 |
| 1413 SwapBuffers(); | 1543 SwapBuffers(); |
| 1414 | 1544 |
| 1415 Mock::VerifyAndClearExpectations(renderer_.get()); | 1545 Mock::VerifyAndClearExpectations(renderer_.get()); |
| 1416 Mock::VerifyAndClearExpectations(&scheduler_); | 1546 Mock::VerifyAndClearExpectations(&scheduler_); |
| 1417 } | 1547 } |
| 1418 | 1548 |
| 1419 TEST_F(GLRendererWithOverlaysTest, OccludedQuadInUnderlay) { | 1549 TEST_F(GLRendererWithOverlaysTest, OccludedQuadInUnderlay) { |
| (...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1602 renderer_->BeginDrawingFrame(&frame_no_overlays); | 1732 renderer_->BeginDrawingFrame(&frame_no_overlays); |
| 1603 renderer_->FinishDrawingFrame(&frame_no_overlays); | 1733 renderer_->FinishDrawingFrame(&frame_no_overlays); |
| 1604 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); | 1734 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); |
| 1605 SwapBuffers(); | 1735 SwapBuffers(); |
| 1606 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); | 1736 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); |
| 1607 Mock::VerifyAndClearExpectations(&scheduler_); | 1737 Mock::VerifyAndClearExpectations(&scheduler_); |
| 1608 } | 1738 } |
| 1609 | 1739 |
| 1610 } // namespace | 1740 } // namespace |
| 1611 } // namespace cc | 1741 } // namespace cc |
| OLD | NEW |