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

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

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

Powered by Google App Engine
This is Rietveld 408576698