Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(142)

Side by Side Diff: cc/output/overlay_unittest.cc

Issue 2543473004: cc: Move filters from RenderPassDrawQuad to RenderPass (Closed)
Patch Set: Address review comments Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 <stddef.h> 5 #include <stddef.h>
6 6
7 #include <utility> 7 #include <utility>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
191 191
192 private: 192 private:
193 std::unique_ptr<OverlayCandidateValidator> overlay_candidate_validator_; 193 std::unique_ptr<OverlayCandidateValidator> overlay_candidate_validator_;
194 bool is_displayed_as_overlay_plane_; 194 bool is_displayed_as_overlay_plane_;
195 unsigned bind_framebuffer_count_ = 0; 195 unsigned bind_framebuffer_count_ = 0;
196 }; 196 };
197 197
198 std::unique_ptr<RenderPass> CreateRenderPass() { 198 std::unique_ptr<RenderPass> CreateRenderPass() {
199 RenderPassId id(1, 0); 199 RenderPassId id(1, 0);
200 gfx::Rect output_rect(0, 0, 256, 256); 200 gfx::Rect output_rect(0, 0, 256, 256);
201 bool has_transparent_background = true;
202 201
203 std::unique_ptr<RenderPass> pass = RenderPass::Create(); 202 std::unique_ptr<RenderPass> pass = RenderPass::Create();
204 pass->SetAll(id, 203 pass->SetNew(id, output_rect, output_rect, gfx::Transform());
205 output_rect,
206 output_rect,
207 gfx::Transform(),
208 has_transparent_background);
209 204
210 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); 205 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState();
211 shared_state->opacity = 1.f; 206 shared_state->opacity = 1.f;
212 return pass; 207 return pass;
213 } 208 }
214 209
215 ResourceId CreateResource(ResourceProvider* resource_provider, 210 ResourceId CreateResource(ResourceProvider* resource_provider,
216 const gfx::Size& size, 211 const gfx::Size& size,
217 bool is_overlay_candidate) { 212 bool is_overlay_candidate) {
218 TextureMailbox mailbox = 213 TextureMailbox mailbox =
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
410 resource_provider_.get(), pass->shared_quad_state_list.back(), 405 resource_provider_.get(), pass->shared_quad_state_list.back(),
411 pass.get()); 406 pass.get());
412 unsigned original_resource_id = original_quad->resource_id(); 407 unsigned original_resource_id = original_quad->resource_id();
413 408
414 // Add something behind it. 409 // Add something behind it.
415 CreateFullscreenOpaqueQuad(resource_provider_.get(), 410 CreateFullscreenOpaqueQuad(resource_provider_.get(),
416 pass->shared_quad_state_list.back(), pass.get()); 411 pass->shared_quad_state_list.back(), pass.get());
417 412
418 // Check for potential candidates. 413 // Check for potential candidates.
419 OverlayCandidateList candidate_list; 414 OverlayCandidateList candidate_list;
420 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 415 RenderPassFilterList render_pass_filters;
421 &candidate_list, nullptr, 416 RenderPassFilterList render_pass_background_filters;
422 &damage_rect_); 417 overlay_processor_->ProcessForOverlays(
418 resource_provider_.get(), pass.get(), render_pass_filters,
419 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
423 ASSERT_EQ(1U, candidate_list.size()); 420 ASSERT_EQ(1U, candidate_list.size());
424 421
425 RenderPass* main_pass = pass.get(); 422 RenderPass* main_pass = pass.get();
426 // Check that all the quads are gone. 423 // Check that all the quads are gone.
427 EXPECT_EQ(0U, main_pass->quad_list.size()); 424 EXPECT_EQ(0U, main_pass->quad_list.size());
428 // Check that we have only one overlay. 425 // Check that we have only one overlay.
429 EXPECT_EQ(1U, candidate_list.size()); 426 EXPECT_EQ(1U, candidate_list.size());
430 // Check that the right resource id got extracted. 427 // Check that the right resource id got extracted.
431 EXPECT_EQ(original_resource_id, candidate_list.front().resource_id); 428 EXPECT_EQ(original_resource_id, candidate_list.front().resource_id);
432 } 429 }
433 430
434 TEST_F(FullscreenOverlayTest, ResourceSizeInPixelsFail) { 431 TEST_F(FullscreenOverlayTest, ResourceSizeInPixelsFail) {
435 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 432 std::unique_ptr<RenderPass> pass = CreateRenderPass();
436 TextureDrawQuad* original_quad = CreateFullscreenCandidateQuad( 433 TextureDrawQuad* original_quad = CreateFullscreenCandidateQuad(
437 resource_provider_.get(), pass->shared_quad_state_list.back(), 434 resource_provider_.get(), pass->shared_quad_state_list.back(),
438 pass.get()); 435 pass.get());
439 original_quad->set_resource_size_in_pixels(gfx::Size(64, 64)); 436 original_quad->set_resource_size_in_pixels(gfx::Size(64, 64));
440 437
441 // Check for potential candidates. 438 // Check for potential candidates.
442 OverlayCandidateList candidate_list; 439 OverlayCandidateList candidate_list;
443 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 440 RenderPassFilterList render_pass_filters;
444 &candidate_list, nullptr, 441 RenderPassFilterList render_pass_background_filters;
445 &damage_rect_); 442 overlay_processor_->ProcessForOverlays(
443 resource_provider_.get(), pass.get(), render_pass_filters,
444 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
446 ASSERT_EQ(0U, candidate_list.size()); 445 ASSERT_EQ(0U, candidate_list.size());
447 446
448 RenderPass* main_pass = pass.get(); 447 RenderPass* main_pass = pass.get();
449 // Check that the quad is not gone. 448 // Check that the quad is not gone.
450 EXPECT_EQ(1U, main_pass->quad_list.size()); 449 EXPECT_EQ(1U, main_pass->quad_list.size());
451 } 450 }
452 451
453 TEST_F(FullscreenOverlayTest, OnTopFail) { 452 TEST_F(FullscreenOverlayTest, OnTopFail) {
454 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 453 std::unique_ptr<RenderPass> pass = CreateRenderPass();
455 454
456 // Add something in front of it. 455 // Add something in front of it.
457 CreateOpaqueQuadAt(resource_provider_.get(), 456 CreateOpaqueQuadAt(resource_provider_.get(),
458 pass->shared_quad_state_list.back(), pass.get(), 457 pass->shared_quad_state_list.back(), pass.get(),
459 kOverlayTopLeftRect); 458 kOverlayTopLeftRect);
460 459
461 CreateFullscreenCandidateQuad(resource_provider_.get(), 460 CreateFullscreenCandidateQuad(resource_provider_.get(),
462 pass->shared_quad_state_list.back(), 461 pass->shared_quad_state_list.back(),
463 pass.get()); 462 pass.get());
464 463
465 // Check for potential candidates. 464 // Check for potential candidates.
466 OverlayCandidateList candidate_list; 465 OverlayCandidateList candidate_list;
467 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 466 RenderPassFilterList render_pass_filters;
468 &candidate_list, nullptr, 467 RenderPassFilterList render_pass_background_filters;
469 &damage_rect_); 468 overlay_processor_->ProcessForOverlays(
469 resource_provider_.get(), pass.get(), render_pass_filters,
470 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
470 ASSERT_EQ(0U, candidate_list.size()); 471 ASSERT_EQ(0U, candidate_list.size());
471 472
472 RenderPass* main_pass = pass.get(); 473 RenderPass* main_pass = pass.get();
473 // Check that the 2 quads are not gone. 474 // Check that the 2 quads are not gone.
474 EXPECT_EQ(2U, main_pass->quad_list.size()); 475 EXPECT_EQ(2U, main_pass->quad_list.size());
475 } 476 }
476 477
477 TEST_F(FullscreenOverlayTest, NotCoveringFullscreenFail) { 478 TEST_F(FullscreenOverlayTest, NotCoveringFullscreenFail) {
478 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 479 std::unique_ptr<RenderPass> pass = CreateRenderPass();
479 gfx::Rect inset_rect = pass->output_rect; 480 gfx::Rect inset_rect = pass->output_rect;
480 inset_rect.Inset(0, 1, 0, 1); 481 inset_rect.Inset(0, 1, 0, 1);
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 inset_rect); 484 inset_rect);
484 485
485 // Check for potential candidates. 486 // Check for potential candidates.
486 OverlayCandidateList candidate_list; 487 OverlayCandidateList candidate_list;
487 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 488 RenderPassFilterList render_pass_filters;
488 &candidate_list, nullptr, 489 RenderPassFilterList render_pass_background_filters;
489 &damage_rect_); 490 overlay_processor_->ProcessForOverlays(
491 resource_provider_.get(), pass.get(), render_pass_filters,
492 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
490 ASSERT_EQ(0U, candidate_list.size()); 493 ASSERT_EQ(0U, candidate_list.size());
491 494
492 RenderPass* main_pass = pass.get(); 495 RenderPass* main_pass = pass.get();
493 // Check that the quad is not gone. 496 // Check that the quad is not gone.
494 EXPECT_EQ(1U, main_pass->quad_list.size()); 497 EXPECT_EQ(1U, main_pass->quad_list.size());
495 } 498 }
496 499
497 TEST_F(FullscreenOverlayTest, RemoveFullscreenQuadFromQuadList) { 500 TEST_F(FullscreenOverlayTest, RemoveFullscreenQuadFromQuadList) {
498 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 501 std::unique_ptr<RenderPass> pass = CreateRenderPass();
499 502
500 // Add something in front of it that is fully transparent. 503 // Add something in front of it that is fully transparent.
501 pass->shared_quad_state_list.back()->opacity = 0.0f; 504 pass->shared_quad_state_list.back()->opacity = 0.0f;
502 CreateOpaqueQuadAt(resource_provider_.get(), 505 CreateOpaqueQuadAt(resource_provider_.get(),
503 pass->shared_quad_state_list.back(), pass.get(), 506 pass->shared_quad_state_list.back(), pass.get(),
504 kOverlayTopLeftRect); 507 kOverlayTopLeftRect);
505 508
506 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); 509 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState();
507 shared_state->opacity = 1.f; 510 shared_state->opacity = 1.f;
508 CreateFullscreenCandidateQuad(resource_provider_.get(), 511 CreateFullscreenCandidateQuad(resource_provider_.get(),
509 pass->shared_quad_state_list.back(), 512 pass->shared_quad_state_list.back(),
510 pass.get()); 513 pass.get());
511 514
512 // Check for potential candidates. 515 // Check for potential candidates.
513 OverlayCandidateList candidate_list; 516 OverlayCandidateList candidate_list;
514 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 517 RenderPassFilterList render_pass_filters;
515 &candidate_list, nullptr, 518 RenderPassFilterList render_pass_background_filters;
516 &damage_rect_); 519 overlay_processor_->ProcessForOverlays(
520 resource_provider_.get(), pass.get(), render_pass_filters,
521 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
517 ASSERT_EQ(1U, candidate_list.size()); 522 ASSERT_EQ(1U, candidate_list.size());
518 523
519 // Check that the fullscreen quad is gone. 524 // Check that the fullscreen quad is gone.
520 for (const DrawQuad* quad : pass->quad_list) { 525 for (const DrawQuad* quad : pass->quad_list) {
521 EXPECT_NE(pass->output_rect, quad->rect); 526 EXPECT_NE(pass->output_rect, quad->rect);
522 } 527 }
523 } 528 }
524 529
525 TEST_F(SingleOverlayOnTopTest, SuccessfulOverlay) { 530 TEST_F(SingleOverlayOnTopTest, SuccessfulOverlay) {
526 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 531 std::unique_ptr<RenderPass> pass = CreateRenderPass();
527 TextureDrawQuad* original_quad = 532 TextureDrawQuad* original_quad =
528 CreateFullscreenCandidateQuad(resource_provider_.get(), 533 CreateFullscreenCandidateQuad(resource_provider_.get(),
529 pass->shared_quad_state_list.back(), 534 pass->shared_quad_state_list.back(),
530 pass.get()); 535 pass.get());
531 unsigned original_resource_id = original_quad->resource_id(); 536 unsigned original_resource_id = original_quad->resource_id();
532 537
533 // Add something behind it. 538 // Add something behind it.
534 CreateFullscreenOpaqueQuad(resource_provider_.get(), 539 CreateFullscreenOpaqueQuad(resource_provider_.get(),
535 pass->shared_quad_state_list.back(), pass.get()); 540 pass->shared_quad_state_list.back(), pass.get());
536 CreateFullscreenOpaqueQuad(resource_provider_.get(), 541 CreateFullscreenOpaqueQuad(resource_provider_.get(),
537 pass->shared_quad_state_list.back(), pass.get()); 542 pass->shared_quad_state_list.back(), pass.get());
538 543
539 // Check for potential candidates. 544 // Check for potential candidates.
540 OverlayCandidateList candidate_list; 545 OverlayCandidateList candidate_list;
541 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 546 RenderPassFilterList render_pass_filters;
542 &candidate_list, nullptr, 547 RenderPassFilterList render_pass_background_filters;
543 &damage_rect_); 548 overlay_processor_->ProcessForOverlays(
549 resource_provider_.get(), pass.get(), render_pass_filters,
550 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
544 ASSERT_EQ(1U, candidate_list.size()); 551 ASSERT_EQ(1U, candidate_list.size());
545 552
546 RenderPass* main_pass = pass.get(); 553 RenderPass* main_pass = pass.get();
547 // Check that the quad is gone. 554 // Check that the quad is gone.
548 EXPECT_EQ(2U, main_pass->quad_list.size()); 555 EXPECT_EQ(2U, main_pass->quad_list.size());
549 const QuadList& quad_list = main_pass->quad_list; 556 const QuadList& quad_list = main_pass->quad_list;
550 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); 557 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin();
551 it != quad_list.BackToFrontEnd(); 558 it != quad_list.BackToFrontEnd();
552 ++it) { 559 ++it) {
553 EXPECT_NE(DrawQuad::TEXTURE_CONTENT, it->material); 560 EXPECT_NE(DrawQuad::TEXTURE_CONTENT, it->material);
(...skipping 20 matching lines...) Expand all
574 OverlayCandidateList candidate_list; 581 OverlayCandidateList candidate_list;
575 582
576 // Primary plane. 583 // Primary plane.
577 OverlayCandidate output_surface_plane; 584 OverlayCandidate output_surface_plane;
578 output_surface_plane.display_rect = gfx::RectF(kOverlayRect); 585 output_surface_plane.display_rect = gfx::RectF(kOverlayRect);
579 output_surface_plane.quad_rect_in_target_space = kOverlayRect; 586 output_surface_plane.quad_rect_in_target_space = kOverlayRect;
580 output_surface_plane.use_output_surface_for_resource = true; 587 output_surface_plane.use_output_surface_for_resource = true;
581 output_surface_plane.overlay_handled = true; 588 output_surface_plane.overlay_handled = true;
582 candidate_list.push_back(output_surface_plane); 589 candidate_list.push_back(output_surface_plane);
583 590
584 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 591 RenderPassFilterList render_pass_filters;
585 &candidate_list, nullptr, 592 RenderPassFilterList render_pass_background_filters;
586 &damage_rect_); 593 overlay_processor_->ProcessForOverlays(
594 resource_provider_.get(), pass.get(), render_pass_filters,
595 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
587 DCHECK(damage_rect_.IsEmpty()); 596 DCHECK(damage_rect_.IsEmpty());
588 } 597 }
589 598
590 TEST_F(SingleOverlayOnTopTest, NoCandidates) { 599 TEST_F(SingleOverlayOnTopTest, NoCandidates) {
591 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 600 std::unique_ptr<RenderPass> pass = CreateRenderPass();
592 CreateFullscreenOpaqueQuad(resource_provider_.get(), 601 CreateFullscreenOpaqueQuad(resource_provider_.get(),
593 pass->shared_quad_state_list.back(), pass.get()); 602 pass->shared_quad_state_list.back(), pass.get());
594 CreateFullscreenOpaqueQuad(resource_provider_.get(), 603 CreateFullscreenOpaqueQuad(resource_provider_.get(),
595 pass->shared_quad_state_list.back(), pass.get()); 604 pass->shared_quad_state_list.back(), pass.get());
596 605
597 RenderPassList pass_list; 606 RenderPassList pass_list;
598 pass_list.push_back(std::move(pass)); 607 pass_list.push_back(std::move(pass));
599 608
600 RenderPassList original_pass_list; 609 RenderPassList original_pass_list;
601 RenderPass::CopyAll(pass_list, &original_pass_list); 610 RenderPass::CopyAll(pass_list, &original_pass_list);
602 611
603 OverlayCandidateList candidate_list; 612 OverlayCandidateList candidate_list;
613 RenderPassFilterList render_pass_filters;
614 RenderPassFilterList render_pass_background_filters;
604 overlay_processor_->ProcessForOverlays( 615 overlay_processor_->ProcessForOverlays(
605 resource_provider_.get(), pass_list.back().get(), &candidate_list, 616 resource_provider_.get(), pass_list.back().get(), render_pass_filters,
606 nullptr, &damage_rect_); 617 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
607 EXPECT_EQ(0U, candidate_list.size()); 618 EXPECT_EQ(0U, candidate_list.size());
608 // There should be nothing new here. 619 // There should be nothing new here.
609 CompareRenderPassLists(pass_list, original_pass_list); 620 CompareRenderPassLists(pass_list, original_pass_list);
610 } 621 }
611 622
612 TEST_F(SingleOverlayOnTopTest, OccludedCandidates) { 623 TEST_F(SingleOverlayOnTopTest, OccludedCandidates) {
613 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 624 std::unique_ptr<RenderPass> pass = CreateRenderPass();
614 CreateFullscreenOpaqueQuad(resource_provider_.get(), 625 CreateFullscreenOpaqueQuad(resource_provider_.get(),
615 pass->shared_quad_state_list.back(), pass.get()); 626 pass->shared_quad_state_list.back(), pass.get());
616 CreateFullscreenOpaqueQuad(resource_provider_.get(), 627 CreateFullscreenOpaqueQuad(resource_provider_.get(),
617 pass->shared_quad_state_list.back(), pass.get()); 628 pass->shared_quad_state_list.back(), pass.get());
618 629
619 CreateFullscreenCandidateQuad(resource_provider_.get(), 630 CreateFullscreenCandidateQuad(resource_provider_.get(),
620 pass->shared_quad_state_list.back(), 631 pass->shared_quad_state_list.back(),
621 pass.get()); 632 pass.get());
622 633
623 RenderPassList pass_list; 634 RenderPassList pass_list;
624 pass_list.push_back(std::move(pass)); 635 pass_list.push_back(std::move(pass));
625 636
626 RenderPassList original_pass_list; 637 RenderPassList original_pass_list;
627 RenderPass::CopyAll(pass_list, &original_pass_list); 638 RenderPass::CopyAll(pass_list, &original_pass_list);
628 639
629 OverlayCandidateList candidate_list; 640 OverlayCandidateList candidate_list;
641 RenderPassFilterList render_pass_filters;
642 RenderPassFilterList render_pass_background_filters;
630 overlay_processor_->ProcessForOverlays( 643 overlay_processor_->ProcessForOverlays(
631 resource_provider_.get(), pass_list.back().get(), &candidate_list, 644 resource_provider_.get(), pass_list.back().get(), render_pass_filters,
632 nullptr, &damage_rect_); 645 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
633 EXPECT_EQ(0U, candidate_list.size()); 646 EXPECT_EQ(0U, candidate_list.size());
634 // There should be nothing new here. 647 // There should be nothing new here.
635 CompareRenderPassLists(pass_list, original_pass_list); 648 CompareRenderPassLists(pass_list, original_pass_list);
636 } 649 }
637 650
638 // Test with multiple render passes. 651 // Test with multiple render passes.
639 TEST_F(SingleOverlayOnTopTest, MultipleRenderPasses) { 652 TEST_F(SingleOverlayOnTopTest, MultipleRenderPasses) {
640 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 653 std::unique_ptr<RenderPass> pass = CreateRenderPass();
641 CreateFullscreenCandidateQuad(resource_provider_.get(), 654 CreateFullscreenCandidateQuad(resource_provider_.get(),
642 pass->shared_quad_state_list.back(), 655 pass->shared_quad_state_list.back(),
643 pass.get()); 656 pass.get());
644 657
645 // Add something behind it. 658 // Add something behind it.
646 CreateFullscreenOpaqueQuad(resource_provider_.get(), 659 CreateFullscreenOpaqueQuad(resource_provider_.get(),
647 pass->shared_quad_state_list.back(), pass.get()); 660 pass->shared_quad_state_list.back(), pass.get());
648 CreateFullscreenOpaqueQuad(resource_provider_.get(), 661 CreateFullscreenOpaqueQuad(resource_provider_.get(),
649 pass->shared_quad_state_list.back(), pass.get()); 662 pass->shared_quad_state_list.back(), pass.get());
650 663
651 // Check for potential candidates. 664 // Check for potential candidates.
652 OverlayCandidateList candidate_list; 665 OverlayCandidateList candidate_list;
653 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 666 RenderPassFilterList render_pass_filters;
654 &candidate_list, nullptr, 667 RenderPassFilterList render_pass_background_filters;
655 &damage_rect_); 668 overlay_processor_->ProcessForOverlays(
669 resource_provider_.get(), pass.get(), render_pass_filters,
670 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
656 EXPECT_EQ(1U, candidate_list.size()); 671 EXPECT_EQ(1U, candidate_list.size());
657 } 672 }
658 673
659 TEST_F(SingleOverlayOnTopTest, RejectBlending) { 674 TEST_F(SingleOverlayOnTopTest, RejectBlending) {
660 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 675 std::unique_ptr<RenderPass> pass = CreateRenderPass();
661 TextureDrawQuad* quad = 676 TextureDrawQuad* quad =
662 CreateFullscreenCandidateQuad(resource_provider_.get(), 677 CreateFullscreenCandidateQuad(resource_provider_.get(),
663 pass->shared_quad_state_list.back(), 678 pass->shared_quad_state_list.back(),
664 pass.get()); 679 pass.get());
665 quad->needs_blending = true; 680 quad->needs_blending = true;
666 681
667 OverlayCandidateList candidate_list; 682 OverlayCandidateList candidate_list;
668 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 683 RenderPassFilterList render_pass_filters;
669 &candidate_list, nullptr, 684 RenderPassFilterList render_pass_background_filters;
670 &damage_rect_); 685 overlay_processor_->ProcessForOverlays(
686 resource_provider_.get(), pass.get(), render_pass_filters,
687 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
671 EXPECT_EQ(0U, candidate_list.size()); 688 EXPECT_EQ(0U, candidate_list.size());
672 } 689 }
673 690
674 TEST_F(SingleOverlayOnTopTest, RejectBackgroundColor) { 691 TEST_F(SingleOverlayOnTopTest, RejectBackgroundColor) {
675 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 692 std::unique_ptr<RenderPass> pass = CreateRenderPass();
676 TextureDrawQuad* quad = 693 TextureDrawQuad* quad =
677 CreateFullscreenCandidateQuad(resource_provider_.get(), 694 CreateFullscreenCandidateQuad(resource_provider_.get(),
678 pass->shared_quad_state_list.back(), 695 pass->shared_quad_state_list.back(),
679 pass.get()); 696 pass.get());
680 quad->background_color = SK_ColorBLACK; 697 quad->background_color = SK_ColorBLACK;
681 698
682 OverlayCandidateList candidate_list; 699 OverlayCandidateList candidate_list;
683 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 700 RenderPassFilterList render_pass_filters;
684 &candidate_list, nullptr, 701 RenderPassFilterList render_pass_background_filters;
685 &damage_rect_); 702 overlay_processor_->ProcessForOverlays(
703 resource_provider_.get(), pass.get(), render_pass_filters,
704 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
686 EXPECT_EQ(0U, candidate_list.size()); 705 EXPECT_EQ(0U, candidate_list.size());
687 } 706 }
688 707
689 TEST_F(SingleOverlayOnTopTest, RejectBlendMode) { 708 TEST_F(SingleOverlayOnTopTest, RejectBlendMode) {
690 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 709 std::unique_ptr<RenderPass> pass = CreateRenderPass();
691 CreateFullscreenCandidateQuad(resource_provider_.get(), 710 CreateFullscreenCandidateQuad(resource_provider_.get(),
692 pass->shared_quad_state_list.back(), 711 pass->shared_quad_state_list.back(),
693 pass.get()); 712 pass.get());
694 pass->shared_quad_state_list.back()->blend_mode = SkBlendMode::kScreen; 713 pass->shared_quad_state_list.back()->blend_mode = SkBlendMode::kScreen;
695 714
696 OverlayCandidateList candidate_list; 715 OverlayCandidateList candidate_list;
697 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 716 RenderPassFilterList render_pass_filters;
698 &candidate_list, nullptr, 717 RenderPassFilterList render_pass_background_filters;
699 &damage_rect_); 718 overlay_processor_->ProcessForOverlays(
719 resource_provider_.get(), pass.get(), render_pass_filters,
720 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
700 EXPECT_EQ(0U, candidate_list.size()); 721 EXPECT_EQ(0U, candidate_list.size());
701 } 722 }
702 723
703 TEST_F(SingleOverlayOnTopTest, RejectOpacity) { 724 TEST_F(SingleOverlayOnTopTest, RejectOpacity) {
704 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 725 std::unique_ptr<RenderPass> pass = CreateRenderPass();
705 CreateFullscreenCandidateQuad(resource_provider_.get(), 726 CreateFullscreenCandidateQuad(resource_provider_.get(),
706 pass->shared_quad_state_list.back(), 727 pass->shared_quad_state_list.back(),
707 pass.get()); 728 pass.get());
708 pass->shared_quad_state_list.back()->opacity = 0.5f; 729 pass->shared_quad_state_list.back()->opacity = 0.5f;
709 730
710 OverlayCandidateList candidate_list; 731 OverlayCandidateList candidate_list;
711 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 732 RenderPassFilterList render_pass_filters;
712 &candidate_list, nullptr, 733 RenderPassFilterList render_pass_background_filters;
713 &damage_rect_); 734 overlay_processor_->ProcessForOverlays(
735 resource_provider_.get(), pass.get(), render_pass_filters,
736 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
714 EXPECT_EQ(0U, candidate_list.size()); 737 EXPECT_EQ(0U, candidate_list.size());
715 } 738 }
716 739
717 TEST_F(SingleOverlayOnTopTest, RejectNonAxisAlignedTransform) { 740 TEST_F(SingleOverlayOnTopTest, RejectNonAxisAlignedTransform) {
718 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 741 std::unique_ptr<RenderPass> pass = CreateRenderPass();
719 CreateFullscreenCandidateQuad(resource_provider_.get(), 742 CreateFullscreenCandidateQuad(resource_provider_.get(),
720 pass->shared_quad_state_list.back(), 743 pass->shared_quad_state_list.back(),
721 pass.get()); 744 pass.get());
722 pass->shared_quad_state_list.back() 745 pass->shared_quad_state_list.back()
723 ->quad_to_target_transform.RotateAboutXAxis(45.f); 746 ->quad_to_target_transform.RotateAboutXAxis(45.f);
724 747
725 OverlayCandidateList candidate_list; 748 OverlayCandidateList candidate_list;
726 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 749 RenderPassFilterList render_pass_filters;
727 &candidate_list, nullptr, 750 RenderPassFilterList render_pass_background_filters;
728 &damage_rect_); 751 overlay_processor_->ProcessForOverlays(
752 resource_provider_.get(), pass.get(), render_pass_filters,
753 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
729 EXPECT_EQ(0U, candidate_list.size()); 754 EXPECT_EQ(0U, candidate_list.size());
730 } 755 }
731 756
732 TEST_F(SingleOverlayOnTopTest, AllowClipped) { 757 TEST_F(SingleOverlayOnTopTest, AllowClipped) {
733 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 758 std::unique_ptr<RenderPass> pass = CreateRenderPass();
734 CreateFullscreenCandidateQuad(resource_provider_.get(), 759 CreateFullscreenCandidateQuad(resource_provider_.get(),
735 pass->shared_quad_state_list.back(), 760 pass->shared_quad_state_list.back(),
736 pass.get()); 761 pass.get());
737 pass->shared_quad_state_list.back()->is_clipped = true; 762 pass->shared_quad_state_list.back()->is_clipped = true;
738 pass->shared_quad_state_list.back()->clip_rect = kOverlayClipRect; 763 pass->shared_quad_state_list.back()->clip_rect = kOverlayClipRect;
739 764
740 OverlayCandidateList candidate_list; 765 OverlayCandidateList candidate_list;
741 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 766 RenderPassFilterList render_pass_filters;
742 &candidate_list, nullptr, 767 RenderPassFilterList render_pass_background_filters;
743 &damage_rect_); 768 overlay_processor_->ProcessForOverlays(
769 resource_provider_.get(), pass.get(), render_pass_filters,
770 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
744 EXPECT_EQ(1U, candidate_list.size()); 771 EXPECT_EQ(1U, candidate_list.size());
745 } 772 }
746 773
747 TEST_F(SingleOverlayOnTopTest, AllowVerticalFlip) { 774 TEST_F(SingleOverlayOnTopTest, AllowVerticalFlip) {
748 gfx::Rect rect = kOverlayRect; 775 gfx::Rect rect = kOverlayRect;
749 rect.set_width(rect.width() / 2); 776 rect.set_width(rect.width() / 2);
750 rect.Offset(0, -rect.height()); 777 rect.Offset(0, -rect.height());
751 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 778 std::unique_ptr<RenderPass> pass = CreateRenderPass();
752 CreateCandidateQuadAt(resource_provider_.get(), 779 CreateCandidateQuadAt(resource_provider_.get(),
753 pass->shared_quad_state_list.back(), pass.get(), rect); 780 pass->shared_quad_state_list.back(), pass.get(), rect);
754 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(2.0f, 781 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(2.0f,
755 -1.0f); 782 -1.0f);
756 OverlayCandidateList candidate_list; 783 OverlayCandidateList candidate_list;
757 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 784 RenderPassFilterList render_pass_filters;
758 &candidate_list, nullptr, 785 RenderPassFilterList render_pass_background_filters;
759 &damage_rect_); 786 overlay_processor_->ProcessForOverlays(
787 resource_provider_.get(), pass.get(), render_pass_filters,
788 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
760 ASSERT_EQ(1U, candidate_list.size()); 789 ASSERT_EQ(1U, candidate_list.size());
761 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_VERTICAL, 790 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_VERTICAL,
762 candidate_list.back().transform); 791 candidate_list.back().transform);
763 } 792 }
764 793
765 TEST_F(SingleOverlayOnTopTest, AllowHorizontalFlip) { 794 TEST_F(SingleOverlayOnTopTest, AllowHorizontalFlip) {
766 gfx::Rect rect = kOverlayRect; 795 gfx::Rect rect = kOverlayRect;
767 rect.set_height(rect.height() / 2); 796 rect.set_height(rect.height() / 2);
768 rect.Offset(-rect.width(), 0); 797 rect.Offset(-rect.width(), 0);
769 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 798 std::unique_ptr<RenderPass> pass = CreateRenderPass();
770 CreateCandidateQuadAt(resource_provider_.get(), 799 CreateCandidateQuadAt(resource_provider_.get(),
771 pass->shared_quad_state_list.back(), pass.get(), rect); 800 pass->shared_quad_state_list.back(), pass.get(), rect);
772 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(-1.0f, 801 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(-1.0f,
773 2.0f); 802 2.0f);
774 803
775 OverlayCandidateList candidate_list; 804 OverlayCandidateList candidate_list;
776 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 805 RenderPassFilterList render_pass_filters;
777 &candidate_list, nullptr, 806 RenderPassFilterList render_pass_background_filters;
778 &damage_rect_); 807 overlay_processor_->ProcessForOverlays(
808 resource_provider_.get(), pass.get(), render_pass_filters,
809 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
779 ASSERT_EQ(1U, candidate_list.size()); 810 ASSERT_EQ(1U, candidate_list.size());
780 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_HORIZONTAL, 811 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_HORIZONTAL,
781 candidate_list.back().transform); 812 candidate_list.back().transform);
782 } 813 }
783 814
784 TEST_F(SingleOverlayOnTopTest, AllowPositiveScaleTransform) { 815 TEST_F(SingleOverlayOnTopTest, AllowPositiveScaleTransform) {
785 gfx::Rect rect = kOverlayRect; 816 gfx::Rect rect = kOverlayRect;
786 rect.set_width(rect.width() / 2); 817 rect.set_width(rect.width() / 2);
787 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 818 std::unique_ptr<RenderPass> pass = CreateRenderPass();
788 CreateCandidateQuadAt(resource_provider_.get(), 819 CreateCandidateQuadAt(resource_provider_.get(),
789 pass->shared_quad_state_list.back(), pass.get(), rect); 820 pass->shared_quad_state_list.back(), pass.get(), rect);
790 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(2.0f, 821 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(2.0f,
791 1.0f); 822 1.0f);
792 OverlayCandidateList candidate_list; 823 OverlayCandidateList candidate_list;
793 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 824 RenderPassFilterList render_pass_filters;
794 &candidate_list, nullptr, 825 RenderPassFilterList render_pass_background_filters;
795 &damage_rect_); 826 overlay_processor_->ProcessForOverlays(
827 resource_provider_.get(), pass.get(), render_pass_filters,
828 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
796 EXPECT_EQ(1U, candidate_list.size()); 829 EXPECT_EQ(1U, candidate_list.size());
797 } 830 }
798 831
799 TEST_F(SingleOverlayOnTopTest, Allow90DegreeRotation) { 832 TEST_F(SingleOverlayOnTopTest, Allow90DegreeRotation) {
800 gfx::Rect rect = kOverlayRect; 833 gfx::Rect rect = kOverlayRect;
801 rect.Offset(0, -rect.height()); 834 rect.Offset(0, -rect.height());
802 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 835 std::unique_ptr<RenderPass> pass = CreateRenderPass();
803 CreateCandidateQuadAt(resource_provider_.get(), 836 CreateCandidateQuadAt(resource_provider_.get(),
804 pass->shared_quad_state_list.back(), pass.get(), rect); 837 pass->shared_quad_state_list.back(), pass.get(), rect);
805 pass->shared_quad_state_list.back() 838 pass->shared_quad_state_list.back()
806 ->quad_to_target_transform.RotateAboutZAxis(90.f); 839 ->quad_to_target_transform.RotateAboutZAxis(90.f);
807 840
808 OverlayCandidateList candidate_list; 841 OverlayCandidateList candidate_list;
809 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 842 RenderPassFilterList render_pass_filters;
810 &candidate_list, nullptr, 843 RenderPassFilterList render_pass_background_filters;
811 &damage_rect_); 844 overlay_processor_->ProcessForOverlays(
845 resource_provider_.get(), pass.get(), render_pass_filters,
846 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
812 ASSERT_EQ(1U, candidate_list.size()); 847 ASSERT_EQ(1U, candidate_list.size());
813 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_90, candidate_list.back().transform); 848 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_90, candidate_list.back().transform);
814 } 849 }
815 850
816 TEST_F(SingleOverlayOnTopTest, Allow180DegreeRotation) { 851 TEST_F(SingleOverlayOnTopTest, Allow180DegreeRotation) {
817 gfx::Rect rect = kOverlayRect; 852 gfx::Rect rect = kOverlayRect;
818 rect.Offset(-rect.width(), -rect.height()); 853 rect.Offset(-rect.width(), -rect.height());
819 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 854 std::unique_ptr<RenderPass> pass = CreateRenderPass();
820 CreateCandidateQuadAt(resource_provider_.get(), 855 CreateCandidateQuadAt(resource_provider_.get(),
821 pass->shared_quad_state_list.back(), pass.get(), rect); 856 pass->shared_quad_state_list.back(), pass.get(), rect);
822 pass->shared_quad_state_list.back() 857 pass->shared_quad_state_list.back()
823 ->quad_to_target_transform.RotateAboutZAxis(180.f); 858 ->quad_to_target_transform.RotateAboutZAxis(180.f);
824 859
825 OverlayCandidateList candidate_list; 860 OverlayCandidateList candidate_list;
826 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 861 RenderPassFilterList render_pass_filters;
827 &candidate_list, nullptr, 862 RenderPassFilterList render_pass_background_filters;
828 &damage_rect_); 863 overlay_processor_->ProcessForOverlays(
864 resource_provider_.get(), pass.get(), render_pass_filters,
865 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
829 ASSERT_EQ(1U, candidate_list.size()); 866 ASSERT_EQ(1U, candidate_list.size());
830 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_180, candidate_list.back().transform); 867 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_180, candidate_list.back().transform);
831 } 868 }
832 869
833 TEST_F(SingleOverlayOnTopTest, Allow270DegreeRotation) { 870 TEST_F(SingleOverlayOnTopTest, Allow270DegreeRotation) {
834 gfx::Rect rect = kOverlayRect; 871 gfx::Rect rect = kOverlayRect;
835 rect.Offset(-rect.width(), 0); 872 rect.Offset(-rect.width(), 0);
836 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 873 std::unique_ptr<RenderPass> pass = CreateRenderPass();
837 CreateCandidateQuadAt(resource_provider_.get(), 874 CreateCandidateQuadAt(resource_provider_.get(),
838 pass->shared_quad_state_list.back(), pass.get(), rect); 875 pass->shared_quad_state_list.back(), pass.get(), rect);
839 pass->shared_quad_state_list.back() 876 pass->shared_quad_state_list.back()
840 ->quad_to_target_transform.RotateAboutZAxis(270.f); 877 ->quad_to_target_transform.RotateAboutZAxis(270.f);
841 878
842 OverlayCandidateList candidate_list; 879 OverlayCandidateList candidate_list;
843 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 880 RenderPassFilterList render_pass_filters;
844 &candidate_list, nullptr, 881 RenderPassFilterList render_pass_background_filters;
845 &damage_rect_); 882 overlay_processor_->ProcessForOverlays(
883 resource_provider_.get(), pass.get(), render_pass_filters,
884 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
846 ASSERT_EQ(1U, candidate_list.size()); 885 ASSERT_EQ(1U, candidate_list.size());
847 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_270, candidate_list.back().transform); 886 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_270, candidate_list.back().transform);
848 } 887 }
849 888
850 TEST_F(SingleOverlayOnTopTest, AllowNotTopIfNotOccluded) { 889 TEST_F(SingleOverlayOnTopTest, AllowNotTopIfNotOccluded) {
851 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 890 std::unique_ptr<RenderPass> pass = CreateRenderPass();
852 CreateOpaqueQuadAt(resource_provider_.get(), 891 CreateOpaqueQuadAt(resource_provider_.get(),
853 pass->shared_quad_state_list.back(), pass.get(), 892 pass->shared_quad_state_list.back(), pass.get(),
854 kOverlayTopLeftRect); 893 kOverlayTopLeftRect);
855 CreateCandidateQuadAt(resource_provider_.get(), 894 CreateCandidateQuadAt(resource_provider_.get(),
856 pass->shared_quad_state_list.back(), 895 pass->shared_quad_state_list.back(),
857 pass.get(), 896 pass.get(),
858 kOverlayBottomRightRect); 897 kOverlayBottomRightRect);
859 898
860 OverlayCandidateList candidate_list; 899 OverlayCandidateList candidate_list;
861 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 900 RenderPassFilterList render_pass_filters;
862 &candidate_list, nullptr, 901 RenderPassFilterList render_pass_background_filters;
863 &damage_rect_); 902 overlay_processor_->ProcessForOverlays(
903 resource_provider_.get(), pass.get(), render_pass_filters,
904 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
864 EXPECT_EQ(1U, candidate_list.size()); 905 EXPECT_EQ(1U, candidate_list.size());
865 } 906 }
866 907
867 TEST_F(SingleOverlayOnTopTest, AllowTransparentOnTop) { 908 TEST_F(SingleOverlayOnTopTest, AllowTransparentOnTop) {
868 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 909 std::unique_ptr<RenderPass> pass = CreateRenderPass();
869 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); 910 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState();
870 shared_state->opacity = 0.f; 911 shared_state->opacity = 0.f;
871 CreateSolidColorQuadAt(shared_state, SK_ColorBLACK, pass.get(), 912 CreateSolidColorQuadAt(shared_state, SK_ColorBLACK, pass.get(),
872 kOverlayBottomRightRect); 913 kOverlayBottomRightRect);
873 shared_state = pass->CreateAndAppendSharedQuadState(); 914 shared_state = pass->CreateAndAppendSharedQuadState();
874 shared_state->opacity = 1.f; 915 shared_state->opacity = 1.f;
875 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(), 916 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(),
876 kOverlayBottomRightRect); 917 kOverlayBottomRightRect);
877 918
878 OverlayCandidateList candidate_list; 919 OverlayCandidateList candidate_list;
879 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 920 RenderPassFilterList render_pass_filters;
880 &candidate_list, nullptr, 921 RenderPassFilterList render_pass_background_filters;
881 &damage_rect_); 922 overlay_processor_->ProcessForOverlays(
923 resource_provider_.get(), pass.get(), render_pass_filters,
924 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
882 EXPECT_EQ(1U, candidate_list.size()); 925 EXPECT_EQ(1U, candidate_list.size());
883 } 926 }
884 927
885 TEST_F(SingleOverlayOnTopTest, AllowTransparentColorOnTop) { 928 TEST_F(SingleOverlayOnTopTest, AllowTransparentColorOnTop) {
886 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 929 std::unique_ptr<RenderPass> pass = CreateRenderPass();
887 CreateSolidColorQuadAt(pass->shared_quad_state_list.back(), 930 CreateSolidColorQuadAt(pass->shared_quad_state_list.back(),
888 SK_ColorTRANSPARENT, pass.get(), 931 SK_ColorTRANSPARENT, pass.get(),
889 kOverlayBottomRightRect); 932 kOverlayBottomRightRect);
890 CreateCandidateQuadAt(resource_provider_.get(), 933 CreateCandidateQuadAt(resource_provider_.get(),
891 pass->shared_quad_state_list.back(), pass.get(), 934 pass->shared_quad_state_list.back(), pass.get(),
892 kOverlayBottomRightRect); 935 kOverlayBottomRightRect);
893 936
894 OverlayCandidateList candidate_list; 937 OverlayCandidateList candidate_list;
895 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 938 RenderPassFilterList render_pass_filters;
896 &candidate_list, nullptr, 939 RenderPassFilterList render_pass_background_filters;
897 &damage_rect_); 940 overlay_processor_->ProcessForOverlays(
941 resource_provider_.get(), pass.get(), render_pass_filters,
942 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
898 EXPECT_EQ(1U, candidate_list.size()); 943 EXPECT_EQ(1U, candidate_list.size());
899 } 944 }
900 945
901 TEST_F(SingleOverlayOnTopTest, RejectOpaqueColorOnTop) { 946 TEST_F(SingleOverlayOnTopTest, RejectOpaqueColorOnTop) {
902 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 947 std::unique_ptr<RenderPass> pass = CreateRenderPass();
903 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); 948 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState();
904 shared_state->opacity = 0.5f; 949 shared_state->opacity = 0.5f;
905 CreateSolidColorQuadAt(shared_state, SK_ColorBLACK, pass.get(), 950 CreateSolidColorQuadAt(shared_state, SK_ColorBLACK, pass.get(),
906 kOverlayBottomRightRect); 951 kOverlayBottomRightRect);
907 shared_state = pass->CreateAndAppendSharedQuadState(); 952 shared_state = pass->CreateAndAppendSharedQuadState();
908 shared_state->opacity = 1.f; 953 shared_state->opacity = 1.f;
909 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(), 954 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(),
910 kOverlayBottomRightRect); 955 kOverlayBottomRightRect);
911 956
912 OverlayCandidateList candidate_list; 957 OverlayCandidateList candidate_list;
913 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 958 RenderPassFilterList render_pass_filters;
914 &candidate_list, nullptr, 959 RenderPassFilterList render_pass_background_filters;
915 &damage_rect_); 960 overlay_processor_->ProcessForOverlays(
961 resource_provider_.get(), pass.get(), render_pass_filters,
962 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
916 EXPECT_EQ(0U, candidate_list.size()); 963 EXPECT_EQ(0U, candidate_list.size());
917 } 964 }
918 965
919 TEST_F(SingleOverlayOnTopTest, RejectTransparentColorOnTopWithoutBlending) { 966 TEST_F(SingleOverlayOnTopTest, RejectTransparentColorOnTopWithoutBlending) {
920 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 967 std::unique_ptr<RenderPass> pass = CreateRenderPass();
921 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); 968 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState();
922 CreateSolidColorQuadAt(shared_state, SK_ColorTRANSPARENT, pass.get(), 969 CreateSolidColorQuadAt(shared_state, SK_ColorTRANSPARENT, pass.get(),
923 kOverlayBottomRightRect)->opaque_rect = 970 kOverlayBottomRightRect)->opaque_rect =
924 kOverlayBottomRightRect; 971 kOverlayBottomRightRect;
925 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(), 972 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(),
926 kOverlayBottomRightRect); 973 kOverlayBottomRightRect);
927 974
928 OverlayCandidateList candidate_list; 975 OverlayCandidateList candidate_list;
929 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 976 RenderPassFilterList render_pass_filters;
930 &candidate_list, nullptr, 977 RenderPassFilterList render_pass_background_filters;
931 &damage_rect_); 978 overlay_processor_->ProcessForOverlays(
979 resource_provider_.get(), pass.get(), render_pass_filters,
980 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
932 EXPECT_EQ(0U, candidate_list.size()); 981 EXPECT_EQ(0U, candidate_list.size());
933 } 982 }
934 983
935 TEST_F(SingleOverlayOnTopTest, RejectVideoSwapTransform) { 984 TEST_F(SingleOverlayOnTopTest, RejectVideoSwapTransform) {
936 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 985 std::unique_ptr<RenderPass> pass = CreateRenderPass();
937 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), 986 CreateFullscreenCandidateVideoQuad(resource_provider_.get(),
938 pass->shared_quad_state_list.back(), 987 pass->shared_quad_state_list.back(),
939 pass.get(), kSwapTransform); 988 pass.get(), kSwapTransform);
940 989
941 OverlayCandidateList candidate_list; 990 OverlayCandidateList candidate_list;
942 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 991 RenderPassFilterList render_pass_filters;
943 &candidate_list, nullptr, 992 RenderPassFilterList render_pass_background_filters;
944 &damage_rect_); 993 overlay_processor_->ProcessForOverlays(
994 resource_provider_.get(), pass.get(), render_pass_filters,
995 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
945 EXPECT_EQ(0U, candidate_list.size()); 996 EXPECT_EQ(0U, candidate_list.size());
946 } 997 }
947 998
948 TEST_F(SingleOverlayOnTopTest, AllowVideoXMirrorTransform) { 999 TEST_F(SingleOverlayOnTopTest, AllowVideoXMirrorTransform) {
949 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1000 std::unique_ptr<RenderPass> pass = CreateRenderPass();
950 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), 1001 CreateFullscreenCandidateVideoQuad(resource_provider_.get(),
951 pass->shared_quad_state_list.back(), 1002 pass->shared_quad_state_list.back(),
952 pass.get(), kXMirrorTransform); 1003 pass.get(), kXMirrorTransform);
953 1004
954 OverlayCandidateList candidate_list; 1005 OverlayCandidateList candidate_list;
955 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 1006 RenderPassFilterList render_pass_filters;
956 &candidate_list, nullptr, 1007 RenderPassFilterList render_pass_background_filters;
957 &damage_rect_); 1008 overlay_processor_->ProcessForOverlays(
1009 resource_provider_.get(), pass.get(), render_pass_filters,
1010 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
958 EXPECT_EQ(1U, candidate_list.size()); 1011 EXPECT_EQ(1U, candidate_list.size());
959 } 1012 }
960 1013
961 TEST_F(SingleOverlayOnTopTest, AllowVideoBothMirrorTransform) { 1014 TEST_F(SingleOverlayOnTopTest, AllowVideoBothMirrorTransform) {
962 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1015 std::unique_ptr<RenderPass> pass = CreateRenderPass();
963 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), 1016 CreateFullscreenCandidateVideoQuad(resource_provider_.get(),
964 pass->shared_quad_state_list.back(), 1017 pass->shared_quad_state_list.back(),
965 pass.get(), kBothMirrorTransform); 1018 pass.get(), kBothMirrorTransform);
966 1019
967 OverlayCandidateList candidate_list; 1020 OverlayCandidateList candidate_list;
968 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 1021 RenderPassFilterList render_pass_filters;
969 &candidate_list, nullptr, 1022 RenderPassFilterList render_pass_background_filters;
970 &damage_rect_); 1023 overlay_processor_->ProcessForOverlays(
1024 resource_provider_.get(), pass.get(), render_pass_filters,
1025 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
971 EXPECT_EQ(1U, candidate_list.size()); 1026 EXPECT_EQ(1U, candidate_list.size());
972 } 1027 }
973 1028
974 TEST_F(SingleOverlayOnTopTest, AllowVideoNormalTransform) { 1029 TEST_F(SingleOverlayOnTopTest, AllowVideoNormalTransform) {
975 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1030 std::unique_ptr<RenderPass> pass = CreateRenderPass();
976 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), 1031 CreateFullscreenCandidateVideoQuad(resource_provider_.get(),
977 pass->shared_quad_state_list.back(), 1032 pass->shared_quad_state_list.back(),
978 pass.get(), kNormalTransform); 1033 pass.get(), kNormalTransform);
979 1034
980 OverlayCandidateList candidate_list; 1035 OverlayCandidateList candidate_list;
981 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 1036 RenderPassFilterList render_pass_filters;
982 &candidate_list, nullptr, 1037 RenderPassFilterList render_pass_background_filters;
983 &damage_rect_); 1038 overlay_processor_->ProcessForOverlays(
1039 resource_provider_.get(), pass.get(), render_pass_filters,
1040 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
984 EXPECT_EQ(1U, candidate_list.size()); 1041 EXPECT_EQ(1U, candidate_list.size());
985 } 1042 }
986 1043
987 TEST_F(SingleOverlayOnTopTest, AllowVideoYMirrorTransform) { 1044 TEST_F(SingleOverlayOnTopTest, AllowVideoYMirrorTransform) {
988 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1045 std::unique_ptr<RenderPass> pass = CreateRenderPass();
989 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), 1046 CreateFullscreenCandidateVideoQuad(resource_provider_.get(),
990 pass->shared_quad_state_list.back(), 1047 pass->shared_quad_state_list.back(),
991 pass.get(), kYMirrorTransform); 1048 pass.get(), kYMirrorTransform);
992 1049
993 OverlayCandidateList candidate_list; 1050 OverlayCandidateList candidate_list;
994 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 1051 RenderPassFilterList render_pass_filters;
995 &candidate_list, nullptr, 1052 RenderPassFilterList render_pass_background_filters;
996 &damage_rect_); 1053 overlay_processor_->ProcessForOverlays(
1054 resource_provider_.get(), pass.get(), render_pass_filters,
1055 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
997 EXPECT_EQ(1U, candidate_list.size()); 1056 EXPECT_EQ(1U, candidate_list.size());
998 } 1057 }
999 1058
1000 TEST_F(UnderlayTest, OverlayLayerUnderMainLayer) { 1059 TEST_F(UnderlayTest, OverlayLayerUnderMainLayer) {
1001 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1060 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1002 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1061 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1003 pass->shared_quad_state_list.back(), pass.get()); 1062 pass->shared_quad_state_list.back(), pass.get());
1004 CreateCandidateQuadAt(resource_provider_.get(), 1063 CreateCandidateQuadAt(resource_provider_.get(),
1005 pass->shared_quad_state_list.back(), pass.get(), 1064 pass->shared_quad_state_list.back(), pass.get(),
1006 kOverlayBottomRightRect); 1065 kOverlayBottomRightRect);
1007 1066
1008 OverlayCandidateList candidate_list; 1067 OverlayCandidateList candidate_list;
1009 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 1068 RenderPassFilterList render_pass_filters;
1010 &candidate_list, nullptr, 1069 RenderPassFilterList render_pass_background_filters;
1011 &damage_rect_); 1070 overlay_processor_->ProcessForOverlays(
1071 resource_provider_.get(), pass.get(), render_pass_filters,
1072 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
1012 ASSERT_EQ(1U, candidate_list.size()); 1073 ASSERT_EQ(1U, candidate_list.size());
1013 EXPECT_EQ(-1, candidate_list[0].plane_z_order); 1074 EXPECT_EQ(-1, candidate_list[0].plane_z_order);
1014 EXPECT_EQ(2U, pass->quad_list.size()); 1075 EXPECT_EQ(2U, pass->quad_list.size());
1015 // The overlay quad should have changed to a SOLID_COLOR quad. 1076 // The overlay quad should have changed to a SOLID_COLOR quad.
1016 EXPECT_EQ(pass->quad_list.back()->material, DrawQuad::SOLID_COLOR); 1077 EXPECT_EQ(pass->quad_list.back()->material, DrawQuad::SOLID_COLOR);
1017 } 1078 }
1018 1079
1019 TEST_F(UnderlayTest, AllowOnTop) { 1080 TEST_F(UnderlayTest, AllowOnTop) {
1020 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1081 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1021 CreateFullscreenCandidateQuad(resource_provider_.get(), 1082 CreateFullscreenCandidateQuad(resource_provider_.get(),
1022 pass->shared_quad_state_list.back(), 1083 pass->shared_quad_state_list.back(),
1023 pass.get()); 1084 pass.get());
1024 pass->CreateAndAppendSharedQuadState()->opacity = 0.5f; 1085 pass->CreateAndAppendSharedQuadState()->opacity = 0.5f;
1025 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1086 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1026 pass->shared_quad_state_list.back(), pass.get()); 1087 pass->shared_quad_state_list.back(), pass.get());
1027 1088
1028 OverlayCandidateList candidate_list; 1089 OverlayCandidateList candidate_list;
1029 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 1090 RenderPassFilterList render_pass_filters;
1030 &candidate_list, nullptr, 1091 RenderPassFilterList render_pass_background_filters;
1031 &damage_rect_); 1092 overlay_processor_->ProcessForOverlays(
1093 resource_provider_.get(), pass.get(), render_pass_filters,
1094 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
1032 ASSERT_EQ(1U, candidate_list.size()); 1095 ASSERT_EQ(1U, candidate_list.size());
1033 EXPECT_EQ(-1, candidate_list[0].plane_z_order); 1096 EXPECT_EQ(-1, candidate_list[0].plane_z_order);
1034 // The overlay quad should have changed to a SOLID_COLOR quad. 1097 // The overlay quad should have changed to a SOLID_COLOR quad.
1035 EXPECT_EQ(pass->quad_list.front()->material, DrawQuad::SOLID_COLOR); 1098 EXPECT_EQ(pass->quad_list.front()->material, DrawQuad::SOLID_COLOR);
1036 } 1099 }
1037 1100
1038 // The first time an underlay is scheduled its damage must not be subtracted. 1101 // The first time an underlay is scheduled its damage must not be subtracted.
1039 TEST_F(UnderlayTest, InitialUnderlayDamageNotSubtracted) { 1102 TEST_F(UnderlayTest, InitialUnderlayDamageNotSubtracted) {
1040 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1103 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1041 CreateFullscreenCandidateQuad(resource_provider_.get(), 1104 CreateFullscreenCandidateQuad(resource_provider_.get(),
1042 pass->shared_quad_state_list.back(), 1105 pass->shared_quad_state_list.back(),
1043 pass.get()); 1106 pass.get());
1044 1107
1045 damage_rect_ = kOverlayRect; 1108 damage_rect_ = kOverlayRect;
1046 1109
1047 OverlayCandidateList candidate_list; 1110 OverlayCandidateList candidate_list;
1048 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 1111 RenderPassFilterList render_pass_filters;
1049 &candidate_list, nullptr, 1112 RenderPassFilterList render_pass_background_filters;
1050 &damage_rect_); 1113 overlay_processor_->ProcessForOverlays(
1114 resource_provider_.get(), pass.get(), render_pass_filters,
1115 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
1051 1116
1052 EXPECT_EQ(kOverlayRect, damage_rect_); 1117 EXPECT_EQ(kOverlayRect, damage_rect_);
1053 } 1118 }
1054 1119
1055 // An identical underlay for two frames in a row means the damage can be 1120 // An identical underlay for two frames in a row means the damage can be
1056 // subtracted the second time. 1121 // subtracted the second time.
1057 TEST_F(UnderlayTest, DamageSubtractedForConsecutiveIdenticalUnderlays) { 1122 TEST_F(UnderlayTest, DamageSubtractedForConsecutiveIdenticalUnderlays) {
1058 for (int i = 0; i < 2; ++i) { 1123 for (int i = 0; i < 2; ++i) {
1059 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1124 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1060 CreateFullscreenCandidateQuad(resource_provider_.get(), 1125 CreateFullscreenCandidateQuad(resource_provider_.get(),
1061 pass->shared_quad_state_list.back(), 1126 pass->shared_quad_state_list.back(),
1062 pass.get()); 1127 pass.get());
1063 1128
1064 damage_rect_ = kOverlayRect; 1129 damage_rect_ = kOverlayRect;
1065 1130
1066 // Add something behind it. 1131 // Add something behind it.
1067 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1132 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1068 pass->shared_quad_state_list.back(), pass.get()); 1133 pass->shared_quad_state_list.back(), pass.get());
1069 1134
1070 OverlayCandidateList candidate_list; 1135 OverlayCandidateList candidate_list;
1071 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 1136 RenderPassFilterList render_pass_filters;
1072 &candidate_list, nullptr, 1137 RenderPassFilterList render_pass_background_filters;
1073 &damage_rect_); 1138 overlay_processor_->ProcessForOverlays(
1139 resource_provider_.get(), pass.get(), render_pass_filters,
1140 render_pass_background_filters, &candidate_list, nullptr,
1141 &damage_rect_);
1074 } 1142 }
1075 1143
1076 // The second time the same overlay rect is scheduled it will be subtracted 1144 // The second time the same overlay rect is scheduled it will be subtracted
1077 // from the damage rect. 1145 // from the damage rect.
1078 EXPECT_TRUE(damage_rect_.IsEmpty()); 1146 EXPECT_TRUE(damage_rect_.IsEmpty());
1079 } 1147 }
1080 1148
1081 // Underlay damage can only be subtracted if the previous frame's underlay 1149 // Underlay damage can only be subtracted if the previous frame's underlay
1082 // was the same rect. 1150 // was the same rect.
1083 TEST_F(UnderlayTest, DamageNotSubtractedForNonIdenticalConsecutiveUnderlays) { 1151 TEST_F(UnderlayTest, DamageNotSubtractedForNonIdenticalConsecutiveUnderlays) {
1084 gfx::Rect overlay_rects[] = {kOverlayBottomRightRect, kOverlayRect}; 1152 gfx::Rect overlay_rects[] = {kOverlayBottomRightRect, kOverlayRect};
1085 for (int i = 0; i < 2; ++i) { 1153 for (int i = 0; i < 2; ++i) {
1086 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1154 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1087 1155
1088 CreateCandidateQuadAt(resource_provider_.get(), 1156 CreateCandidateQuadAt(resource_provider_.get(),
1089 pass->shared_quad_state_list.back(), pass.get(), 1157 pass->shared_quad_state_list.back(), pass.get(),
1090 overlay_rects[i]); 1158 overlay_rects[i]);
1091 1159
1092 damage_rect_ = overlay_rects[i]; 1160 damage_rect_ = overlay_rects[i];
1093 1161
1094 OverlayCandidateList candidate_list; 1162 OverlayCandidateList candidate_list;
1095 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 1163 RenderPassFilterList render_pass_filters;
1096 &candidate_list, nullptr, 1164 RenderPassFilterList render_pass_background_filters;
1097 &damage_rect_); 1165 overlay_processor_->ProcessForOverlays(
1166 resource_provider_.get(), pass.get(), render_pass_filters,
1167 render_pass_background_filters, &candidate_list, nullptr,
1168 &damage_rect_);
1098 1169
1099 EXPECT_EQ(overlay_rects[i], damage_rect_); 1170 EXPECT_EQ(overlay_rects[i], damage_rect_);
1100 } 1171 }
1101 } 1172 }
1102 1173
1103 TEST_F(UnderlayTest, DamageNotSubtractedWhenQuadsAboveOverlap) { 1174 TEST_F(UnderlayTest, DamageNotSubtractedWhenQuadsAboveOverlap) {
1104 for (int i = 0; i < 2; ++i) { 1175 for (int i = 0; i < 2; ++i) {
1105 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1176 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1106 // Add an overlapping quad above the candidate. 1177 // Add an overlapping quad above the candidate.
1107 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1178 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1108 pass->shared_quad_state_list.back(), pass.get()); 1179 pass->shared_quad_state_list.back(), pass.get());
1109 CreateFullscreenCandidateQuad(resource_provider_.get(), 1180 CreateFullscreenCandidateQuad(resource_provider_.get(),
1110 pass->shared_quad_state_list.back(), 1181 pass->shared_quad_state_list.back(),
1111 pass.get()); 1182 pass.get());
1112 1183
1113 damage_rect_ = kOverlayRect; 1184 damage_rect_ = kOverlayRect;
1114 1185
1115 OverlayCandidateList candidate_list; 1186 OverlayCandidateList candidate_list;
1116 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 1187 RenderPassFilterList render_pass_filters;
1117 &candidate_list, nullptr, 1188 RenderPassFilterList render_pass_background_filters;
1118 &damage_rect_); 1189 overlay_processor_->ProcessForOverlays(
1190 resource_provider_.get(), pass.get(), render_pass_filters,
1191 render_pass_background_filters, &candidate_list, nullptr,
1192 &damage_rect_);
1119 } 1193 }
1120 1194
1121 EXPECT_EQ(kOverlayRect, damage_rect_); 1195 EXPECT_EQ(kOverlayRect, damage_rect_);
1122 } 1196 }
1123 1197
1124 TEST_F(UnderlayTest, DamageSubtractedWhenQuadsAboveDontOverlap) { 1198 TEST_F(UnderlayTest, DamageSubtractedWhenQuadsAboveDontOverlap) {
1125 for (int i = 0; i < 2; ++i) { 1199 for (int i = 0; i < 2; ++i) {
1126 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1200 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1127 // Add a non-overlapping quad above the candidate. 1201 // Add a non-overlapping quad above the candidate.
1128 CreateOpaqueQuadAt(resource_provider_.get(), 1202 CreateOpaqueQuadAt(resource_provider_.get(),
1129 pass->shared_quad_state_list.back(), pass.get(), 1203 pass->shared_quad_state_list.back(), pass.get(),
1130 kOverlayTopLeftRect); 1204 kOverlayTopLeftRect);
1131 CreateCandidateQuadAt(resource_provider_.get(), 1205 CreateCandidateQuadAt(resource_provider_.get(),
1132 pass->shared_quad_state_list.back(), pass.get(), 1206 pass->shared_quad_state_list.back(), pass.get(),
1133 kOverlayBottomRightRect); 1207 kOverlayBottomRightRect);
1134 1208
1135 damage_rect_ = kOverlayBottomRightRect; 1209 damage_rect_ = kOverlayBottomRightRect;
1136 1210
1137 OverlayCandidateList candidate_list; 1211 OverlayCandidateList candidate_list;
1138 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 1212 RenderPassFilterList render_pass_filters;
1139 &candidate_list, nullptr, 1213 RenderPassFilterList render_pass_background_filters;
1140 &damage_rect_); 1214 overlay_processor_->ProcessForOverlays(
1215 resource_provider_.get(), pass.get(), render_pass_filters,
1216 render_pass_background_filters, &candidate_list, nullptr,
1217 &damage_rect_);
1141 } 1218 }
1142 1219
1143 EXPECT_TRUE(damage_rect_.IsEmpty()); 1220 EXPECT_TRUE(damage_rect_.IsEmpty());
1144 } 1221 }
1145 1222
1146 OverlayCandidateList BackbufferOverlayList(const RenderPass* root_render_pass) { 1223 OverlayCandidateList BackbufferOverlayList(const RenderPass* root_render_pass) {
1147 OverlayCandidateList list; 1224 OverlayCandidateList list;
1148 OverlayCandidate output_surface_plane; 1225 OverlayCandidate output_surface_plane;
1149 output_surface_plane.display_rect = gfx::RectF(root_render_pass->output_rect); 1226 output_surface_plane.display_rect = gfx::RectF(root_render_pass->output_rect);
1150 output_surface_plane.quad_rect_in_target_space = 1227 output_surface_plane.quad_rect_in_target_space =
1151 root_render_pass->output_rect; 1228 root_render_pass->output_rect;
1152 output_surface_plane.use_output_surface_for_resource = true; 1229 output_surface_plane.use_output_surface_for_resource = true;
1153 output_surface_plane.overlay_handled = true; 1230 output_surface_plane.overlay_handled = true;
1154 list.push_back(output_surface_plane); 1231 list.push_back(output_surface_plane);
1155 return list; 1232 return list;
1156 } 1233 }
1157 1234
1158 TEST_F(CALayerOverlayTest, AllowNonAxisAlignedTransform) { 1235 TEST_F(CALayerOverlayTest, AllowNonAxisAlignedTransform) {
1159 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1236 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1160 CreateFullscreenCandidateQuad(resource_provider_.get(), 1237 CreateFullscreenCandidateQuad(resource_provider_.get(),
1161 pass->shared_quad_state_list.back(), 1238 pass->shared_quad_state_list.back(),
1162 pass.get()); 1239 pass.get());
1163 pass->shared_quad_state_list.back() 1240 pass->shared_quad_state_list.back()
1164 ->quad_to_target_transform.RotateAboutZAxis(45.f); 1241 ->quad_to_target_transform.RotateAboutZAxis(45.f);
1165 1242
1166 gfx::Rect damage_rect; 1243 gfx::Rect damage_rect;
1167 CALayerOverlayList ca_layer_list; 1244 CALayerOverlayList ca_layer_list;
1168 OverlayCandidateList overlay_list(BackbufferOverlayList(pass.get())); 1245 OverlayCandidateList overlay_list(BackbufferOverlayList(pass.get()));
1169 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 1246 RenderPassFilterList render_pass_filters;
1170 &overlay_list, &ca_layer_list, 1247 RenderPassFilterList render_pass_background_filters;
1171 &damage_rect); 1248 overlay_processor_->ProcessForOverlays(
1249 resource_provider_.get(), pass.get(), render_pass_filters,
1250 render_pass_background_filters, &overlay_list, &ca_layer_list,
1251 &damage_rect);
1172 EXPECT_EQ(gfx::Rect(), damage_rect); 1252 EXPECT_EQ(gfx::Rect(), damage_rect);
1173 EXPECT_EQ(0U, overlay_list.size()); 1253 EXPECT_EQ(0U, overlay_list.size());
1174 EXPECT_EQ(1U, ca_layer_list.size()); 1254 EXPECT_EQ(1U, ca_layer_list.size());
1175 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count()); 1255 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count());
1176 } 1256 }
1177 1257
1178 TEST_F(CALayerOverlayTest, ThreeDTransform) { 1258 TEST_F(CALayerOverlayTest, ThreeDTransform) {
1179 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1259 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1180 CreateFullscreenCandidateQuad(resource_provider_.get(), 1260 CreateFullscreenCandidateQuad(resource_provider_.get(),
1181 pass->shared_quad_state_list.back(), 1261 pass->shared_quad_state_list.back(),
1182 pass.get()); 1262 pass.get());
1183 pass->shared_quad_state_list.back() 1263 pass->shared_quad_state_list.back()
1184 ->quad_to_target_transform.RotateAboutXAxis(45.f); 1264 ->quad_to_target_transform.RotateAboutXAxis(45.f);
1185 1265
1186 gfx::Rect damage_rect; 1266 gfx::Rect damage_rect;
1187 CALayerOverlayList ca_layer_list; 1267 CALayerOverlayList ca_layer_list;
1188 OverlayCandidateList overlay_list(BackbufferOverlayList(pass.get())); 1268 OverlayCandidateList overlay_list(BackbufferOverlayList(pass.get()));
1189 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 1269 RenderPassFilterList render_pass_filters;
1190 &overlay_list, &ca_layer_list, 1270 RenderPassFilterList render_pass_background_filters;
1191 &damage_rect); 1271 overlay_processor_->ProcessForOverlays(
1272 resource_provider_.get(), pass.get(), render_pass_filters,
1273 render_pass_background_filters, &overlay_list, &ca_layer_list,
1274 &damage_rect);
1192 EXPECT_EQ(0U, overlay_list.size()); 1275 EXPECT_EQ(0U, overlay_list.size());
1193 EXPECT_EQ(1U, ca_layer_list.size()); 1276 EXPECT_EQ(1U, ca_layer_list.size());
1194 gfx::Transform expected_transform; 1277 gfx::Transform expected_transform;
1195 expected_transform.RotateAboutXAxis(45.f); 1278 expected_transform.RotateAboutXAxis(45.f);
1196 gfx::Transform actual_transform(ca_layer_list.back().shared_state->transform); 1279 gfx::Transform actual_transform(ca_layer_list.back().shared_state->transform);
1197 EXPECT_EQ(expected_transform.ToString(), actual_transform.ToString()); 1280 EXPECT_EQ(expected_transform.ToString(), actual_transform.ToString());
1198 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count()); 1281 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count());
1199 } 1282 }
1200 1283
1201 TEST_F(CALayerOverlayTest, AllowContainingClip) { 1284 TEST_F(CALayerOverlayTest, AllowContainingClip) {
1202 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1285 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1203 CreateFullscreenCandidateQuad(resource_provider_.get(), 1286 CreateFullscreenCandidateQuad(resource_provider_.get(),
1204 pass->shared_quad_state_list.back(), 1287 pass->shared_quad_state_list.back(),
1205 pass.get()); 1288 pass.get());
1206 pass->shared_quad_state_list.back()->is_clipped = true; 1289 pass->shared_quad_state_list.back()->is_clipped = true;
1207 pass->shared_quad_state_list.back()->clip_rect = kOverlayRect; 1290 pass->shared_quad_state_list.back()->clip_rect = kOverlayRect;
1208 1291
1209 gfx::Rect damage_rect; 1292 gfx::Rect damage_rect;
1210 CALayerOverlayList ca_layer_list; 1293 CALayerOverlayList ca_layer_list;
1211 OverlayCandidateList overlay_list(BackbufferOverlayList(pass.get())); 1294 OverlayCandidateList overlay_list(BackbufferOverlayList(pass.get()));
1212 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 1295 RenderPassFilterList render_pass_filters;
1213 &overlay_list, &ca_layer_list, 1296 RenderPassFilterList render_pass_background_filters;
1214 &damage_rect); 1297 overlay_processor_->ProcessForOverlays(
1298 resource_provider_.get(), pass.get(), render_pass_filters,
1299 render_pass_background_filters, &overlay_list, &ca_layer_list,
1300 &damage_rect);
1215 EXPECT_EQ(gfx::Rect(), damage_rect); 1301 EXPECT_EQ(gfx::Rect(), damage_rect);
1216 EXPECT_EQ(0U, overlay_list.size()); 1302 EXPECT_EQ(0U, overlay_list.size());
1217 EXPECT_EQ(1U, ca_layer_list.size()); 1303 EXPECT_EQ(1U, ca_layer_list.size());
1218 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count()); 1304 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count());
1219 } 1305 }
1220 1306
1221 TEST_F(CALayerOverlayTest, NontrivialClip) { 1307 TEST_F(CALayerOverlayTest, NontrivialClip) {
1222 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1308 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1223 CreateFullscreenCandidateQuad(resource_provider_.get(), 1309 CreateFullscreenCandidateQuad(resource_provider_.get(),
1224 pass->shared_quad_state_list.back(), 1310 pass->shared_quad_state_list.back(),
1225 pass.get()); 1311 pass.get());
1226 pass->shared_quad_state_list.back()->is_clipped = true; 1312 pass->shared_quad_state_list.back()->is_clipped = true;
1227 pass->shared_quad_state_list.back()->clip_rect = gfx::Rect(64, 64, 128, 128); 1313 pass->shared_quad_state_list.back()->clip_rect = gfx::Rect(64, 64, 128, 128);
1228 1314
1229 gfx::Rect damage_rect; 1315 gfx::Rect damage_rect;
1230 CALayerOverlayList ca_layer_list; 1316 CALayerOverlayList ca_layer_list;
1231 OverlayCandidateList overlay_list(BackbufferOverlayList(pass.get())); 1317 OverlayCandidateList overlay_list(BackbufferOverlayList(pass.get()));
1232 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 1318 RenderPassFilterList render_pass_filters;
1233 &overlay_list, &ca_layer_list, 1319 RenderPassFilterList render_pass_background_filters;
1234 &damage_rect); 1320 overlay_processor_->ProcessForOverlays(
1321 resource_provider_.get(), pass.get(), render_pass_filters,
1322 render_pass_background_filters, &overlay_list, &ca_layer_list,
1323 &damage_rect);
1235 EXPECT_EQ(gfx::Rect(), damage_rect); 1324 EXPECT_EQ(gfx::Rect(), damage_rect);
1236 EXPECT_EQ(0U, overlay_list.size()); 1325 EXPECT_EQ(0U, overlay_list.size());
1237 EXPECT_EQ(1U, ca_layer_list.size()); 1326 EXPECT_EQ(1U, ca_layer_list.size());
1238 EXPECT_TRUE(ca_layer_list.back().shared_state->is_clipped); 1327 EXPECT_TRUE(ca_layer_list.back().shared_state->is_clipped);
1239 EXPECT_EQ(gfx::RectF(64, 64, 128, 128), 1328 EXPECT_EQ(gfx::RectF(64, 64, 128, 128),
1240 ca_layer_list.back().shared_state->clip_rect); 1329 ca_layer_list.back().shared_state->clip_rect);
1241 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count()); 1330 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count());
1242 } 1331 }
1243 1332
1244 TEST_F(CALayerOverlayTest, SkipTransparent) { 1333 TEST_F(CALayerOverlayTest, SkipTransparent) {
1245 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1334 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1246 CreateFullscreenCandidateQuad(resource_provider_.get(), 1335 CreateFullscreenCandidateQuad(resource_provider_.get(),
1247 pass->shared_quad_state_list.back(), 1336 pass->shared_quad_state_list.back(),
1248 pass.get()); 1337 pass.get());
1249 pass->shared_quad_state_list.back()->opacity = 0; 1338 pass->shared_quad_state_list.back()->opacity = 0;
1250 1339
1251 gfx::Rect damage_rect; 1340 gfx::Rect damage_rect;
1252 CALayerOverlayList ca_layer_list; 1341 CALayerOverlayList ca_layer_list;
1253 OverlayCandidateList overlay_list(BackbufferOverlayList(pass.get())); 1342 OverlayCandidateList overlay_list(BackbufferOverlayList(pass.get()));
1254 overlay_processor_->ProcessForOverlays(resource_provider_.get(), pass.get(), 1343 RenderPassFilterList render_pass_filters;
1255 &overlay_list, &ca_layer_list, 1344 RenderPassFilterList render_pass_background_filters;
1256 &damage_rect); 1345 overlay_processor_->ProcessForOverlays(
1346 resource_provider_.get(), pass.get(), render_pass_filters,
1347 render_pass_background_filters, &overlay_list, &ca_layer_list,
1348 &damage_rect);
1257 EXPECT_EQ(gfx::Rect(), damage_rect); 1349 EXPECT_EQ(gfx::Rect(), damage_rect);
1258 EXPECT_EQ(0U, overlay_list.size()); 1350 EXPECT_EQ(0U, overlay_list.size());
1259 EXPECT_EQ(0U, ca_layer_list.size()); 1351 EXPECT_EQ(0U, ca_layer_list.size());
1260 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count()); 1352 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count());
1261 } 1353 }
1262 1354
1263 class OverlayInfoRendererGL : public GLRenderer { 1355 class OverlayInfoRendererGL : public GLRenderer {
1264 public: 1356 public:
1265 OverlayInfoRendererGL(const RendererSettings* settings, 1357 OverlayInfoRendererGL(const RendererSettings* settings,
1266 OutputSurface* output_surface, 1358 OutputSurface* output_surface,
(...skipping 504 matching lines...) Expand 10 before | Expand all | Expand 10 after
1771 CALayerOverlayTest::SetUp(); 1863 CALayerOverlayTest::SetUp();
1772 pass_ = CreateRenderPass(); 1864 pass_ = CreateRenderPass();
1773 quad_ = pass_->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); 1865 quad_ = pass_->CreateAndAppendDrawQuad<RenderPassDrawQuad>();
1774 render_pass_id_.layer_id = 3; 1866 render_pass_id_.layer_id = 3;
1775 render_pass_id_.index = 17; 1867 render_pass_id_.index = 17;
1776 } 1868 }
1777 1869
1778 void ProcessForOverlays() { 1870 void ProcessForOverlays() {
1779 gfx::Rect damage_rect; 1871 gfx::Rect damage_rect;
1780 overlay_list_ = BackbufferOverlayList(pass_.get()); 1872 overlay_list_ = BackbufferOverlayList(pass_.get());
1781 overlay_processor_->ProcessForOverlays(resource_provider_.get(), 1873 overlay_processor_->ProcessForOverlays(
1782 pass_.get(), &overlay_list_, 1874 resource_provider_.get(), pass_.get(), render_pass_filters_,
1783 &ca_layer_list_, &damage_rect); 1875 render_pass_background_filters_, &overlay_list_, &ca_layer_list_,
1876 &damage_rect);
1784 } 1877 }
1785 std::unique_ptr<RenderPass> pass_; 1878 std::unique_ptr<RenderPass> pass_;
1786 RenderPassDrawQuad* quad_; 1879 RenderPassDrawQuad* quad_;
1787 RenderPassId render_pass_id_; 1880 RenderPassId render_pass_id_;
1788 FilterOperations filters_; 1881 FilterOperations filters_;
1789 FilterOperations background_filters_; 1882 FilterOperations background_filters_;
1883 RenderPassFilterList render_pass_filters_;
1884 RenderPassFilterList render_pass_background_filters_;
1790 CALayerOverlayList ca_layer_list_; 1885 CALayerOverlayList ca_layer_list_;
1791 OverlayCandidateList overlay_list_; 1886 OverlayCandidateList overlay_list_;
1792 }; 1887 };
1793 1888
1794 TEST_F(CALayerOverlayRPDQTest, RenderPassDrawQuadNoFilters) { 1889 TEST_F(CALayerOverlayRPDQTest, RenderPassDrawQuadNoFilters) {
1795 quad_->SetNew(pass_->shared_quad_state_list.back(), kOverlayRect, 1890 quad_->SetNew(pass_->shared_quad_state_list.back(), kOverlayRect,
1796 kOverlayRect, render_pass_id_, 0, gfx::Vector2dF(), gfx::Size(), 1891 kOverlayRect, render_pass_id_, 0, gfx::Vector2dF(), gfx::Size(),
1797 filters_, gfx::Vector2dF(1, 1), gfx::PointF(), 1892 gfx::Vector2dF(1, 1), gfx::PointF());
1798 background_filters_);
1799 ProcessForOverlays(); 1893 ProcessForOverlays();
1800 1894
1801 EXPECT_EQ(1U, ca_layer_list_.size()); 1895 EXPECT_EQ(1U, ca_layer_list_.size());
1802 } 1896 }
1803 1897
1804 TEST_F(CALayerOverlayRPDQTest, RenderPassDrawQuadAllValidFilters) { 1898 TEST_F(CALayerOverlayRPDQTest, RenderPassDrawQuadAllValidFilters) {
1805 filters_.Append(FilterOperation::CreateGrayscaleFilter(0.1f)); 1899 filters_.Append(FilterOperation::CreateGrayscaleFilter(0.1f));
1806 filters_.Append(FilterOperation::CreateSepiaFilter(0.2f)); 1900 filters_.Append(FilterOperation::CreateSepiaFilter(0.2f));
1807 filters_.Append(FilterOperation::CreateSaturateFilter(0.3f)); 1901 filters_.Append(FilterOperation::CreateSaturateFilter(0.3f));
1808 filters_.Append(FilterOperation::CreateHueRotateFilter(0.4f)); 1902 filters_.Append(FilterOperation::CreateHueRotateFilter(0.4f));
1809 filters_.Append(FilterOperation::CreateInvertFilter(0.5f)); 1903 filters_.Append(FilterOperation::CreateInvertFilter(0.5f));
1810 filters_.Append(FilterOperation::CreateBrightnessFilter(0.6f)); 1904 filters_.Append(FilterOperation::CreateBrightnessFilter(0.6f));
1811 filters_.Append(FilterOperation::CreateContrastFilter(0.7f)); 1905 filters_.Append(FilterOperation::CreateContrastFilter(0.7f));
1812 filters_.Append(FilterOperation::CreateOpacityFilter(0.8f)); 1906 filters_.Append(FilterOperation::CreateOpacityFilter(0.8f));
1813 filters_.Append(FilterOperation::CreateBlurFilter(0.9f)); 1907 filters_.Append(FilterOperation::CreateBlurFilter(0.9f));
1814 filters_.Append(FilterOperation::CreateDropShadowFilter(gfx::Point(10, 20), 1908 filters_.Append(FilterOperation::CreateDropShadowFilter(gfx::Point(10, 20),
1815 1.0f, SK_ColorGREEN)); 1909 1.0f, SK_ColorGREEN));
1910 render_pass_filters_.push_back(std::make_pair(render_pass_id_, &filters_));
1816 quad_->SetNew(pass_->shared_quad_state_list.back(), kOverlayRect, 1911 quad_->SetNew(pass_->shared_quad_state_list.back(), kOverlayRect,
1817 kOverlayRect, render_pass_id_, 0, gfx::Vector2dF(), gfx::Size(), 1912 kOverlayRect, render_pass_id_, 0, gfx::Vector2dF(), gfx::Size(),
1818 filters_, gfx::Vector2dF(1, 1), gfx::PointF(), 1913 gfx::Vector2dF(1, 1), gfx::PointF());
1819 background_filters_);
1820 ProcessForOverlays(); 1914 ProcessForOverlays();
1821 1915
1822 EXPECT_EQ(1U, ca_layer_list_.size()); 1916 EXPECT_EQ(1U, ca_layer_list_.size());
1823 } 1917 }
1824 1918
1825 TEST_F(CALayerOverlayRPDQTest, RenderPassDrawQuadOpacityFilterScale) { 1919 TEST_F(CALayerOverlayRPDQTest, RenderPassDrawQuadOpacityFilterScale) {
1826 filters_.Append(FilterOperation::CreateOpacityFilter(0.8f)); 1920 filters_.Append(FilterOperation::CreateOpacityFilter(0.8f));
1921 render_pass_filters_.push_back(std::make_pair(render_pass_id_, &filters_));
1827 quad_->SetNew(pass_->shared_quad_state_list.back(), kOverlayRect, 1922 quad_->SetNew(pass_->shared_quad_state_list.back(), kOverlayRect,
1828 kOverlayRect, render_pass_id_, 0, gfx::Vector2dF(), gfx::Size(), 1923 kOverlayRect, render_pass_id_, 0, gfx::Vector2dF(), gfx::Size(),
1829 filters_, gfx::Vector2dF(1, 2), gfx::PointF(), 1924 gfx::Vector2dF(1, 2), gfx::PointF());
1830 background_filters_);
1831 ProcessForOverlays(); 1925 ProcessForOverlays();
1832 EXPECT_EQ(1U, ca_layer_list_.size()); 1926 EXPECT_EQ(1U, ca_layer_list_.size());
1833 } 1927 }
1834 1928
1835 TEST_F(CALayerOverlayRPDQTest, RenderPassDrawQuadBlurFilterScale) { 1929 TEST_F(CALayerOverlayRPDQTest, RenderPassDrawQuadBlurFilterScale) {
1836 filters_.Append(FilterOperation::CreateBlurFilter(0.8f)); 1930 filters_.Append(FilterOperation::CreateBlurFilter(0.8f));
1931 render_pass_filters_.push_back(std::make_pair(render_pass_id_, &filters_));
1837 quad_->SetNew(pass_->shared_quad_state_list.back(), kOverlayRect, 1932 quad_->SetNew(pass_->shared_quad_state_list.back(), kOverlayRect,
1838 kOverlayRect, render_pass_id_, 0, gfx::Vector2dF(), gfx::Size(), 1933 kOverlayRect, render_pass_id_, 0, gfx::Vector2dF(), gfx::Size(),
1839 filters_, gfx::Vector2dF(1, 2), gfx::PointF(), 1934 gfx::Vector2dF(1, 2), gfx::PointF());
1840 background_filters_);
1841 ProcessForOverlays(); 1935 ProcessForOverlays();
1842 EXPECT_EQ(1U, ca_layer_list_.size()); 1936 EXPECT_EQ(1U, ca_layer_list_.size());
1843 } 1937 }
1844 1938
1845 TEST_F(CALayerOverlayRPDQTest, RenderPassDrawQuadDropShadowFilterScale) { 1939 TEST_F(CALayerOverlayRPDQTest, RenderPassDrawQuadDropShadowFilterScale) {
1846 filters_.Append(FilterOperation::CreateDropShadowFilter(gfx::Point(10, 20), 1940 filters_.Append(FilterOperation::CreateDropShadowFilter(gfx::Point(10, 20),
1847 1.0f, SK_ColorGREEN)); 1941 1.0f, SK_ColorGREEN));
1942 render_pass_filters_.push_back(std::make_pair(render_pass_id_, &filters_));
1848 quad_->SetNew(pass_->shared_quad_state_list.back(), kOverlayRect, 1943 quad_->SetNew(pass_->shared_quad_state_list.back(), kOverlayRect,
1849 kOverlayRect, render_pass_id_, 0, gfx::Vector2dF(), gfx::Size(), 1944 kOverlayRect, render_pass_id_, 0, gfx::Vector2dF(), gfx::Size(),
1850 filters_, gfx::Vector2dF(1, 2), gfx::PointF(), 1945 gfx::Vector2dF(1, 2), gfx::PointF());
1851 background_filters_);
1852 ProcessForOverlays(); 1946 ProcessForOverlays();
1853 EXPECT_EQ(1U, ca_layer_list_.size()); 1947 EXPECT_EQ(1U, ca_layer_list_.size());
1854 } 1948 }
1855 1949
1856 TEST_F(CALayerOverlayRPDQTest, RenderPassDrawQuadBackgroundFilter) { 1950 TEST_F(CALayerOverlayRPDQTest, RenderPassDrawQuadBackgroundFilter) {
1857 background_filters_.Append(FilterOperation::CreateGrayscaleFilter(0.1f)); 1951 background_filters_.Append(FilterOperation::CreateGrayscaleFilter(0.1f));
1952 render_pass_background_filters_.push_back(
1953 std::make_pair(render_pass_id_, &background_filters_));
1858 quad_->SetNew(pass_->shared_quad_state_list.back(), kOverlayRect, 1954 quad_->SetNew(pass_->shared_quad_state_list.back(), kOverlayRect,
1859 kOverlayRect, render_pass_id_, 0, gfx::Vector2dF(), gfx::Size(), 1955 kOverlayRect, render_pass_id_, 0, gfx::Vector2dF(), gfx::Size(),
1860 filters_, gfx::Vector2dF(1, 1), gfx::PointF(), 1956 gfx::Vector2dF(1, 1), gfx::PointF());
1861 background_filters_);
1862 ProcessForOverlays(); 1957 ProcessForOverlays();
1863 EXPECT_EQ(0U, ca_layer_list_.size()); 1958 EXPECT_EQ(0U, ca_layer_list_.size());
1864 } 1959 }
1865 1960
1866 TEST_F(CALayerOverlayRPDQTest, RenderPassDrawQuadMask) { 1961 TEST_F(CALayerOverlayRPDQTest, RenderPassDrawQuadMask) {
1867 quad_->SetNew(pass_->shared_quad_state_list.back(), kOverlayRect, 1962 quad_->SetNew(pass_->shared_quad_state_list.back(), kOverlayRect,
1868 kOverlayRect, render_pass_id_, 2, gfx::Vector2dF(), gfx::Size(), 1963 kOverlayRect, render_pass_id_, 2, gfx::Vector2dF(), gfx::Size(),
1869 filters_, gfx::Vector2dF(1, 1), gfx::PointF(), 1964 gfx::Vector2dF(1, 1), gfx::PointF());
1870 background_filters_);
1871 ProcessForOverlays(); 1965 ProcessForOverlays();
1872 EXPECT_EQ(1U, ca_layer_list_.size()); 1966 EXPECT_EQ(1U, ca_layer_list_.size());
1873 } 1967 }
1874 1968
1875 TEST_F(CALayerOverlayRPDQTest, RenderPassDrawQuadUnsupportedFilter) { 1969 TEST_F(CALayerOverlayRPDQTest, RenderPassDrawQuadUnsupportedFilter) {
1876 filters_.Append(FilterOperation::CreateZoomFilter(0.9f, 1)); 1970 filters_.Append(FilterOperation::CreateZoomFilter(0.9f, 1));
1971 render_pass_filters_.push_back(std::make_pair(render_pass_id_, &filters_));
1877 quad_->SetNew(pass_->shared_quad_state_list.back(), kOverlayRect, 1972 quad_->SetNew(pass_->shared_quad_state_list.back(), kOverlayRect,
1878 kOverlayRect, render_pass_id_, 0, gfx::Vector2dF(), gfx::Size(), 1973 kOverlayRect, render_pass_id_, 0, gfx::Vector2dF(), gfx::Size(),
1879 filters_, gfx::Vector2dF(1, 1), gfx::PointF(), 1974 gfx::Vector2dF(1, 1), gfx::PointF());
1880 background_filters_);
1881 ProcessForOverlays(); 1975 ProcessForOverlays();
1882 EXPECT_EQ(0U, ca_layer_list_.size()); 1976 EXPECT_EQ(0U, ca_layer_list_.size());
1883 } 1977 }
1884 1978
1885 TEST_F(CALayerOverlayRPDQTest, TooManyRenderPassDrawQuads) { 1979 TEST_F(CALayerOverlayRPDQTest, TooManyRenderPassDrawQuads) {
1886 filters_.Append(FilterOperation::CreateBlurFilter(0.8f)); 1980 filters_.Append(FilterOperation::CreateBlurFilter(0.8f));
1887 int count = 35; 1981 int count = 35;
1888 1982
1889 for (int i = 0; i < count; ++i) { 1983 for (int i = 0; i < count; ++i) {
1890 RenderPassDrawQuad* quad = 1984 RenderPassDrawQuad* quad =
1891 pass_->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); 1985 pass_->CreateAndAppendDrawQuad<RenderPassDrawQuad>();
1892 quad->SetNew(pass_->shared_quad_state_list.back(), kOverlayRect, 1986 quad->SetNew(pass_->shared_quad_state_list.back(), kOverlayRect,
1893 kOverlayRect, render_pass_id_, 2, gfx::Vector2dF(), 1987 kOverlayRect, render_pass_id_, 2, gfx::Vector2dF(),
1894 gfx::Size(), filters_, gfx::Vector2dF(1, 1), gfx::PointF(), 1988 gfx::Size(), gfx::Vector2dF(1, 1), gfx::PointF());
1895 background_filters_);
1896 } 1989 }
1897 1990
1898 ProcessForOverlays(); 1991 ProcessForOverlays();
1899 EXPECT_EQ(0U, ca_layer_list_.size()); 1992 EXPECT_EQ(0U, ca_layer_list_.size());
1900 } 1993 }
1901 1994
1902 } // namespace 1995 } // namespace
1903 } // namespace cc 1996 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698