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

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

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

Powered by Google App Engine
This is Rietveld 408576698