| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <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 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 66 void MailboxReleased(const gpu::SyncToken& sync_token, | 66 void MailboxReleased(const gpu::SyncToken& sync_token, |
| 67 bool lost_resource, | 67 bool lost_resource, |
| 68 BlockingTaskRunner* main_thread_task_runner) {} | 68 BlockingTaskRunner* main_thread_task_runner) {} |
| 69 | 69 |
| 70 class FullscreenOverlayValidator : public OverlayCandidateValidator { | 70 class FullscreenOverlayValidator : public OverlayCandidateValidator { |
| 71 public: | 71 public: |
| 72 void GetStrategies(OverlayProcessor::StrategyList* strategies) override { | 72 void GetStrategies(OverlayProcessor::StrategyList* strategies) override { |
| 73 strategies->push_back(base::MakeUnique<OverlayStrategyFullscreen>(this)); | 73 strategies->push_back(base::MakeUnique<OverlayStrategyFullscreen>(this)); |
| 74 } | 74 } |
| 75 bool AllowCALayerOverlays() override { return false; } | 75 bool AllowCALayerOverlays() override { return false; } |
| 76 bool AllowDCLayerOverlays() override { return false; } |
| 76 void CheckOverlaySupport(OverlayCandidateList* surfaces) override {} | 77 void CheckOverlaySupport(OverlayCandidateList* surfaces) override {} |
| 77 }; | 78 }; |
| 78 | 79 |
| 79 class SingleOverlayValidator : public OverlayCandidateValidator { | 80 class SingleOverlayValidator : public OverlayCandidateValidator { |
| 80 public: | 81 public: |
| 81 SingleOverlayValidator() : expected_rect_(kOverlayRect) {} | 82 SingleOverlayValidator() : expected_rect_(kOverlayRect) {} |
| 82 | 83 |
| 83 void GetStrategies(OverlayProcessor::StrategyList* strategies) override { | 84 void GetStrategies(OverlayProcessor::StrategyList* strategies) override { |
| 84 strategies->push_back(base::MakeUnique<OverlayStrategySingleOnTop>(this)); | 85 strategies->push_back(base::MakeUnique<OverlayStrategySingleOnTop>(this)); |
| 85 strategies->push_back(base::MakeUnique<OverlayStrategyUnderlay>(this)); | 86 strategies->push_back(base::MakeUnique<OverlayStrategyUnderlay>(this)); |
| 86 } | 87 } |
| 87 bool AllowCALayerOverlays() override { return false; } | 88 bool AllowCALayerOverlays() override { return false; } |
| 89 bool AllowDCLayerOverlays() override { return false; } |
| 88 void CheckOverlaySupport(OverlayCandidateList* surfaces) override { | 90 void CheckOverlaySupport(OverlayCandidateList* surfaces) override { |
| 89 // We may have 1 or 2 surfaces depending on whether this ran through the | 91 // We may have 1 or 2 surfaces depending on whether this ran through the |
| 90 // full renderer and picked up the output surface, or not. | 92 // full renderer and picked up the output surface, or not. |
| 91 ASSERT_LE(1U, surfaces->size()); | 93 ASSERT_LE(1U, surfaces->size()); |
| 92 ASSERT_GE(2U, surfaces->size()); | 94 ASSERT_GE(2U, surfaces->size()); |
| 93 | 95 |
| 94 OverlayCandidate& candidate = surfaces->back(); | 96 OverlayCandidate& candidate = surfaces->back(); |
| 95 EXPECT_TRUE(!candidate.use_output_surface_for_resource); | 97 EXPECT_TRUE(!candidate.use_output_surface_for_resource); |
| 96 EXPECT_NEAR(expected_rect_.x(), candidate.display_rect.x(), 0.01f); | 98 EXPECT_NEAR(expected_rect_.x(), candidate.display_rect.x(), 0.01f); |
| 97 EXPECT_NEAR(expected_rect_.y(), candidate.display_rect.y(), 0.01f); | 99 EXPECT_NEAR(expected_rect_.y(), candidate.display_rect.y(), 0.01f); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 111 void SetExpectedRect(const gfx::RectF& rect) { expected_rect_ = rect; } | 113 void SetExpectedRect(const gfx::RectF& rect) { expected_rect_ = rect; } |
| 112 | 114 |
| 113 private: | 115 private: |
| 114 gfx::RectF expected_rect_; | 116 gfx::RectF expected_rect_; |
| 115 }; | 117 }; |
| 116 | 118 |
| 117 class CALayerValidator : public OverlayCandidateValidator { | 119 class CALayerValidator : public OverlayCandidateValidator { |
| 118 public: | 120 public: |
| 119 void GetStrategies(OverlayProcessor::StrategyList* strategies) override {} | 121 void GetStrategies(OverlayProcessor::StrategyList* strategies) override {} |
| 120 bool AllowCALayerOverlays() override { return true; } | 122 bool AllowCALayerOverlays() override { return true; } |
| 123 bool AllowDCLayerOverlays() override { return false; } |
| 121 void CheckOverlaySupport(OverlayCandidateList* surfaces) override {} | 124 void CheckOverlaySupport(OverlayCandidateList* surfaces) override {} |
| 122 }; | 125 }; |
| 123 | 126 |
| 127 class DCLayerValidator : public OverlayCandidateValidator { |
| 128 public: |
| 129 void GetStrategies(OverlayProcessor::StrategyList* strategies) override {} |
| 130 bool AllowCALayerOverlays() override { return false; } |
| 131 bool AllowDCLayerOverlays() override { return true; } |
| 132 void CheckOverlaySupport(OverlayCandidateList* surfaces) override {} |
| 133 }; |
| 134 |
| 124 class SingleOnTopOverlayValidator : public SingleOverlayValidator { | 135 class SingleOnTopOverlayValidator : public SingleOverlayValidator { |
| 125 public: | 136 public: |
| 126 void GetStrategies(OverlayProcessor::StrategyList* strategies) override { | 137 void GetStrategies(OverlayProcessor::StrategyList* strategies) override { |
| 127 strategies->push_back(base::MakeUnique<OverlayStrategySingleOnTop>(this)); | 138 strategies->push_back(base::MakeUnique<OverlayStrategySingleOnTop>(this)); |
| 128 } | 139 } |
| 129 }; | 140 }; |
| 130 | 141 |
| 131 class UnderlayOverlayValidator : public SingleOverlayValidator { | 142 class UnderlayOverlayValidator : public SingleOverlayValidator { |
| 132 public: | 143 public: |
| 133 void GetStrategies(OverlayProcessor::StrategyList* strategies) override { | 144 void GetStrategies(OverlayProcessor::StrategyList* strategies) override { |
| (...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 314 StreamVideoDrawQuad* CreateFullscreenCandidateVideoQuad( | 325 StreamVideoDrawQuad* CreateFullscreenCandidateVideoQuad( |
| 315 ResourceProvider* resource_provider, | 326 ResourceProvider* resource_provider, |
| 316 const SharedQuadState* shared_quad_state, | 327 const SharedQuadState* shared_quad_state, |
| 317 RenderPass* render_pass, | 328 RenderPass* render_pass, |
| 318 const gfx::Transform& transform) { | 329 const gfx::Transform& transform) { |
| 319 return CreateCandidateVideoQuadAt(resource_provider, shared_quad_state, | 330 return CreateCandidateVideoQuadAt(resource_provider, shared_quad_state, |
| 320 render_pass, render_pass->output_rect, | 331 render_pass, render_pass->output_rect, |
| 321 transform); | 332 transform); |
| 322 } | 333 } |
| 323 | 334 |
| 335 YUVVideoDrawQuad* CreateFullscreenCandidateYUVVideoQuad( |
| 336 ResourceProvider* resource_provider, |
| 337 const SharedQuadState* shared_quad_state, |
| 338 RenderPass* render_pass) { |
| 339 gfx::RectF tex_coord_rect(0, 0, 1, 1); |
| 340 gfx::Rect rect = render_pass->output_rect; |
| 341 gfx::Size resource_size_in_pixels = rect.size(); |
| 342 bool is_overlay_candidate = true; |
| 343 ResourceId resource_id = CreateResource( |
| 344 resource_provider, resource_size_in_pixels, is_overlay_candidate); |
| 345 |
| 346 YUVVideoDrawQuad* overlay_quad = |
| 347 render_pass->CreateAndAppendDrawQuad<YUVVideoDrawQuad>(); |
| 348 overlay_quad->SetNew(shared_quad_state, rect, rect, rect, tex_coord_rect, |
| 349 tex_coord_rect, resource_size_in_pixels, |
| 350 resource_size_in_pixels, resource_id, resource_id, |
| 351 resource_id, resource_id, YUVVideoDrawQuad::REC_601, |
| 352 gfx::ColorSpace(), 0, 1.0, 8); |
| 353 |
| 354 return overlay_quad; |
| 355 } |
| 356 |
| 324 void CreateOpaqueQuadAt(ResourceProvider* resource_provider, | 357 void CreateOpaqueQuadAt(ResourceProvider* resource_provider, |
| 325 const SharedQuadState* shared_quad_state, | 358 const SharedQuadState* shared_quad_state, |
| 326 RenderPass* render_pass, | 359 RenderPass* render_pass, |
| 327 const gfx::Rect& rect) { | 360 const gfx::Rect& rect) { |
| 328 SolidColorDrawQuad* color_quad = | 361 SolidColorDrawQuad* color_quad = |
| 329 render_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); | 362 render_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
| 330 color_quad->SetNew(shared_quad_state, rect, rect, SK_ColorBLACK, false); | 363 color_quad->SetNew(shared_quad_state, rect, rect, SK_ColorBLACK, false); |
| 331 } | 364 } |
| 332 | 365 |
| 333 void CreateOpaqueQuadAt(ResourceProvider* resource_provider, | 366 void CreateOpaqueQuadAt(ResourceProvider* resource_provider, |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 407 std::unique_ptr<OverlayProcessor> overlay_processor_; | 440 std::unique_ptr<OverlayProcessor> overlay_processor_; |
| 408 gfx::Rect damage_rect_; | 441 gfx::Rect damage_rect_; |
| 409 std::vector<gfx::Rect> content_bounds_; | 442 std::vector<gfx::Rect> content_bounds_; |
| 410 }; | 443 }; |
| 411 | 444 |
| 412 using FullscreenOverlayTest = OverlayTest<FullscreenOverlayValidator>; | 445 using FullscreenOverlayTest = OverlayTest<FullscreenOverlayValidator>; |
| 413 using SingleOverlayOnTopTest = OverlayTest<SingleOnTopOverlayValidator>; | 446 using SingleOverlayOnTopTest = OverlayTest<SingleOnTopOverlayValidator>; |
| 414 using UnderlayTest = OverlayTest<UnderlayOverlayValidator>; | 447 using UnderlayTest = OverlayTest<UnderlayOverlayValidator>; |
| 415 using UnderlayCastTest = OverlayTest<UnderlayCastOverlayValidator>; | 448 using UnderlayCastTest = OverlayTest<UnderlayCastOverlayValidator>; |
| 416 using CALayerOverlayTest = OverlayTest<CALayerValidator>; | 449 using CALayerOverlayTest = OverlayTest<CALayerValidator>; |
| 450 using DCLayerOverlayTest = OverlayTest<DCLayerValidator>; |
| 417 | 451 |
| 418 TEST(OverlayTest, NoOverlaysByDefault) { | 452 TEST(OverlayTest, NoOverlaysByDefault) { |
| 419 scoped_refptr<TestContextProvider> provider = TestContextProvider::Create(); | 453 scoped_refptr<TestContextProvider> provider = TestContextProvider::Create(); |
| 420 OverlayOutputSurface<OverlayCandidateValidator> output_surface(provider); | 454 OverlayOutputSurface<OverlayCandidateValidator> output_surface(provider); |
| 421 EXPECT_EQ(NULL, output_surface.GetOverlayCandidateValidator()); | 455 EXPECT_EQ(NULL, output_surface.GetOverlayCandidateValidator()); |
| 422 | 456 |
| 423 output_surface.SetOverlayCandidateValidator(new SingleOverlayValidator); | 457 output_surface.SetOverlayCandidateValidator(new SingleOverlayValidator); |
| 424 EXPECT_TRUE(output_surface.GetOverlayCandidateValidator() != NULL); | 458 EXPECT_TRUE(output_surface.GetOverlayCandidateValidator() != NULL); |
| 425 } | 459 } |
| 426 | 460 |
| (...skipping 26 matching lines...) Expand all Loading... |
| 453 // Add something behind it. | 487 // Add something behind it. |
| 454 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 488 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 455 pass->shared_quad_state_list.back(), pass.get()); | 489 pass->shared_quad_state_list.back(), pass.get()); |
| 456 | 490 |
| 457 // Check for potential candidates. | 491 // Check for potential candidates. |
| 458 OverlayCandidateList candidate_list; | 492 OverlayCandidateList candidate_list; |
| 459 RenderPassFilterList render_pass_filters; | 493 RenderPassFilterList render_pass_filters; |
| 460 RenderPassFilterList render_pass_background_filters; | 494 RenderPassFilterList render_pass_background_filters; |
| 461 overlay_processor_->ProcessForOverlays( | 495 overlay_processor_->ProcessForOverlays( |
| 462 resource_provider_.get(), pass.get(), render_pass_filters, | 496 resource_provider_.get(), pass.get(), render_pass_filters, |
| 463 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 497 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 464 &content_bounds_); | 498 &damage_rect_, &content_bounds_); |
| 465 ASSERT_EQ(1U, candidate_list.size()); | 499 ASSERT_EQ(1U, candidate_list.size()); |
| 466 | 500 |
| 467 RenderPass* main_pass = pass.get(); | 501 RenderPass* main_pass = pass.get(); |
| 468 // Check that all the quads are gone. | 502 // Check that all the quads are gone. |
| 469 EXPECT_EQ(0U, main_pass->quad_list.size()); | 503 EXPECT_EQ(0U, main_pass->quad_list.size()); |
| 470 // Check that we have only one overlay. | 504 // Check that we have only one overlay. |
| 471 EXPECT_EQ(1U, candidate_list.size()); | 505 EXPECT_EQ(1U, candidate_list.size()); |
| 472 // Check that the right resource id got extracted. | 506 // Check that the right resource id got extracted. |
| 473 EXPECT_EQ(original_resource_id, candidate_list.front().resource_id); | 507 EXPECT_EQ(original_resource_id, candidate_list.front().resource_id); |
| 474 } | 508 } |
| 475 | 509 |
| 476 TEST_F(FullscreenOverlayTest, ResourceSizeInPixelsFail) { | 510 TEST_F(FullscreenOverlayTest, ResourceSizeInPixelsFail) { |
| 477 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 511 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 478 TextureDrawQuad* original_quad = CreateFullscreenCandidateQuad( | 512 TextureDrawQuad* original_quad = CreateFullscreenCandidateQuad( |
| 479 resource_provider_.get(), pass->shared_quad_state_list.back(), | 513 resource_provider_.get(), pass->shared_quad_state_list.back(), |
| 480 pass.get()); | 514 pass.get()); |
| 481 original_quad->set_resource_size_in_pixels(gfx::Size(64, 64)); | 515 original_quad->set_resource_size_in_pixels(gfx::Size(64, 64)); |
| 482 | 516 |
| 483 // Check for potential candidates. | 517 // Check for potential candidates. |
| 484 OverlayCandidateList candidate_list; | 518 OverlayCandidateList candidate_list; |
| 485 RenderPassFilterList render_pass_filters; | 519 RenderPassFilterList render_pass_filters; |
| 486 RenderPassFilterList render_pass_background_filters; | 520 RenderPassFilterList render_pass_background_filters; |
| 487 overlay_processor_->ProcessForOverlays( | 521 overlay_processor_->ProcessForOverlays( |
| 488 resource_provider_.get(), pass.get(), render_pass_filters, | 522 resource_provider_.get(), pass.get(), render_pass_filters, |
| 489 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 523 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 490 &content_bounds_); | 524 &damage_rect_, &content_bounds_); |
| 491 ASSERT_EQ(0U, candidate_list.size()); | 525 ASSERT_EQ(0U, candidate_list.size()); |
| 492 | 526 |
| 493 RenderPass* main_pass = pass.get(); | 527 RenderPass* main_pass = pass.get(); |
| 494 // Check that the quad is not gone. | 528 // Check that the quad is not gone. |
| 495 EXPECT_EQ(1U, main_pass->quad_list.size()); | 529 EXPECT_EQ(1U, main_pass->quad_list.size()); |
| 496 } | 530 } |
| 497 | 531 |
| 498 TEST_F(FullscreenOverlayTest, OnTopFail) { | 532 TEST_F(FullscreenOverlayTest, OnTopFail) { |
| 499 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 533 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 500 | 534 |
| 501 // Add something in front of it. | 535 // Add something in front of it. |
| 502 CreateOpaqueQuadAt(resource_provider_.get(), | 536 CreateOpaqueQuadAt(resource_provider_.get(), |
| 503 pass->shared_quad_state_list.back(), pass.get(), | 537 pass->shared_quad_state_list.back(), pass.get(), |
| 504 kOverlayTopLeftRect); | 538 kOverlayTopLeftRect); |
| 505 | 539 |
| 506 CreateFullscreenCandidateQuad(resource_provider_.get(), | 540 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 507 pass->shared_quad_state_list.back(), | 541 pass->shared_quad_state_list.back(), |
| 508 pass.get()); | 542 pass.get()); |
| 509 | 543 |
| 510 // Check for potential candidates. | 544 // Check for potential candidates. |
| 511 OverlayCandidateList candidate_list; | 545 OverlayCandidateList candidate_list; |
| 512 RenderPassFilterList render_pass_filters; | 546 RenderPassFilterList render_pass_filters; |
| 513 RenderPassFilterList render_pass_background_filters; | 547 RenderPassFilterList render_pass_background_filters; |
| 514 overlay_processor_->ProcessForOverlays( | 548 overlay_processor_->ProcessForOverlays( |
| 515 resource_provider_.get(), pass.get(), render_pass_filters, | 549 resource_provider_.get(), pass.get(), render_pass_filters, |
| 516 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 550 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 517 &content_bounds_); | 551 &damage_rect_, &content_bounds_); |
| 518 ASSERT_EQ(0U, candidate_list.size()); | 552 ASSERT_EQ(0U, candidate_list.size()); |
| 519 | 553 |
| 520 RenderPass* main_pass = pass.get(); | 554 RenderPass* main_pass = pass.get(); |
| 521 // Check that the 2 quads are not gone. | 555 // Check that the 2 quads are not gone. |
| 522 EXPECT_EQ(2U, main_pass->quad_list.size()); | 556 EXPECT_EQ(2U, main_pass->quad_list.size()); |
| 523 } | 557 } |
| 524 | 558 |
| 525 TEST_F(FullscreenOverlayTest, NotCoveringFullscreenFail) { | 559 TEST_F(FullscreenOverlayTest, NotCoveringFullscreenFail) { |
| 526 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 560 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 527 gfx::Rect inset_rect = pass->output_rect; | 561 gfx::Rect inset_rect = pass->output_rect; |
| 528 inset_rect.Inset(0, 1, 0, 1); | 562 inset_rect.Inset(0, 1, 0, 1); |
| 529 CreateCandidateQuadAt(resource_provider_.get(), | 563 CreateCandidateQuadAt(resource_provider_.get(), |
| 530 pass->shared_quad_state_list.back(), pass.get(), | 564 pass->shared_quad_state_list.back(), pass.get(), |
| 531 inset_rect); | 565 inset_rect); |
| 532 | 566 |
| 533 // Check for potential candidates. | 567 // Check for potential candidates. |
| 534 OverlayCandidateList candidate_list; | 568 OverlayCandidateList candidate_list; |
| 535 RenderPassFilterList render_pass_filters; | 569 RenderPassFilterList render_pass_filters; |
| 536 RenderPassFilterList render_pass_background_filters; | 570 RenderPassFilterList render_pass_background_filters; |
| 537 overlay_processor_->ProcessForOverlays( | 571 overlay_processor_->ProcessForOverlays( |
| 538 resource_provider_.get(), pass.get(), render_pass_filters, | 572 resource_provider_.get(), pass.get(), render_pass_filters, |
| 539 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 573 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 540 &content_bounds_); | 574 &damage_rect_, &content_bounds_); |
| 541 ASSERT_EQ(0U, candidate_list.size()); | 575 ASSERT_EQ(0U, candidate_list.size()); |
| 542 | 576 |
| 543 RenderPass* main_pass = pass.get(); | 577 RenderPass* main_pass = pass.get(); |
| 544 // Check that the quad is not gone. | 578 // Check that the quad is not gone. |
| 545 EXPECT_EQ(1U, main_pass->quad_list.size()); | 579 EXPECT_EQ(1U, main_pass->quad_list.size()); |
| 546 } | 580 } |
| 547 | 581 |
| 548 TEST_F(FullscreenOverlayTest, RemoveFullscreenQuadFromQuadList) { | 582 TEST_F(FullscreenOverlayTest, RemoveFullscreenQuadFromQuadList) { |
| 549 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 583 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 550 | 584 |
| 551 // Add something in front of it that is fully transparent. | 585 // Add something in front of it that is fully transparent. |
| 552 pass->shared_quad_state_list.back()->opacity = 0.0f; | 586 pass->shared_quad_state_list.back()->opacity = 0.0f; |
| 553 CreateOpaqueQuadAt(resource_provider_.get(), | 587 CreateOpaqueQuadAt(resource_provider_.get(), |
| 554 pass->shared_quad_state_list.back(), pass.get(), | 588 pass->shared_quad_state_list.back(), pass.get(), |
| 555 kOverlayTopLeftRect); | 589 kOverlayTopLeftRect); |
| 556 | 590 |
| 557 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); | 591 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); |
| 558 shared_state->opacity = 1.f; | 592 shared_state->opacity = 1.f; |
| 559 CreateFullscreenCandidateQuad(resource_provider_.get(), | 593 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 560 pass->shared_quad_state_list.back(), | 594 pass->shared_quad_state_list.back(), |
| 561 pass.get()); | 595 pass.get()); |
| 562 | 596 |
| 563 // Check for potential candidates. | 597 // Check for potential candidates. |
| 564 OverlayCandidateList candidate_list; | 598 OverlayCandidateList candidate_list; |
| 565 RenderPassFilterList render_pass_filters; | 599 RenderPassFilterList render_pass_filters; |
| 566 RenderPassFilterList render_pass_background_filters; | 600 RenderPassFilterList render_pass_background_filters; |
| 567 overlay_processor_->ProcessForOverlays( | 601 overlay_processor_->ProcessForOverlays( |
| 568 resource_provider_.get(), pass.get(), render_pass_filters, | 602 resource_provider_.get(), pass.get(), render_pass_filters, |
| 569 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 603 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 570 &content_bounds_); | 604 &damage_rect_, &content_bounds_); |
| 571 ASSERT_EQ(1U, candidate_list.size()); | 605 ASSERT_EQ(1U, candidate_list.size()); |
| 572 | 606 |
| 573 // Check that the fullscreen quad is gone. | 607 // Check that the fullscreen quad is gone. |
| 574 for (const DrawQuad* quad : pass->quad_list) { | 608 for (const DrawQuad* quad : pass->quad_list) { |
| 575 EXPECT_NE(pass->output_rect, quad->rect); | 609 EXPECT_NE(pass->output_rect, quad->rect); |
| 576 } | 610 } |
| 577 } | 611 } |
| 578 | 612 |
| 579 TEST_F(SingleOverlayOnTopTest, SuccessfulOverlay) { | 613 TEST_F(SingleOverlayOnTopTest, SuccessfulOverlay) { |
| 580 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 614 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 581 TextureDrawQuad* original_quad = | 615 TextureDrawQuad* original_quad = |
| 582 CreateFullscreenCandidateQuad(resource_provider_.get(), | 616 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 583 pass->shared_quad_state_list.back(), | 617 pass->shared_quad_state_list.back(), |
| 584 pass.get()); | 618 pass.get()); |
| 585 unsigned original_resource_id = original_quad->resource_id(); | 619 unsigned original_resource_id = original_quad->resource_id(); |
| 586 | 620 |
| 587 // Add something behind it. | 621 // Add something behind it. |
| 588 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 622 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 589 pass->shared_quad_state_list.back(), pass.get()); | 623 pass->shared_quad_state_list.back(), pass.get()); |
| 590 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 624 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 591 pass->shared_quad_state_list.back(), pass.get()); | 625 pass->shared_quad_state_list.back(), pass.get()); |
| 592 | 626 |
| 593 // Check for potential candidates. | 627 // Check for potential candidates. |
| 594 OverlayCandidateList candidate_list; | 628 OverlayCandidateList candidate_list; |
| 595 RenderPassFilterList render_pass_filters; | 629 RenderPassFilterList render_pass_filters; |
| 596 RenderPassFilterList render_pass_background_filters; | 630 RenderPassFilterList render_pass_background_filters; |
| 597 overlay_processor_->ProcessForOverlays( | 631 overlay_processor_->ProcessForOverlays( |
| 598 resource_provider_.get(), pass.get(), render_pass_filters, | 632 resource_provider_.get(), pass.get(), render_pass_filters, |
| 599 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 633 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 600 &content_bounds_); | 634 &damage_rect_, &content_bounds_); |
| 601 ASSERT_EQ(1U, candidate_list.size()); | 635 ASSERT_EQ(1U, candidate_list.size()); |
| 602 | 636 |
| 603 RenderPass* main_pass = pass.get(); | 637 RenderPass* main_pass = pass.get(); |
| 604 // Check that the quad is gone. | 638 // Check that the quad is gone. |
| 605 EXPECT_EQ(2U, main_pass->quad_list.size()); | 639 EXPECT_EQ(2U, main_pass->quad_list.size()); |
| 606 const QuadList& quad_list = main_pass->quad_list; | 640 const QuadList& quad_list = main_pass->quad_list; |
| 607 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); | 641 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); |
| 608 it != quad_list.BackToFrontEnd(); | 642 it != quad_list.BackToFrontEnd(); |
| 609 ++it) { | 643 ++it) { |
| 610 EXPECT_NE(DrawQuad::TEXTURE_CONTENT, it->material); | 644 EXPECT_NE(DrawQuad::TEXTURE_CONTENT, it->material); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 635 output_surface_plane.display_rect = gfx::RectF(kOverlayRect); | 669 output_surface_plane.display_rect = gfx::RectF(kOverlayRect); |
| 636 output_surface_plane.quad_rect_in_target_space = kOverlayRect; | 670 output_surface_plane.quad_rect_in_target_space = kOverlayRect; |
| 637 output_surface_plane.use_output_surface_for_resource = true; | 671 output_surface_plane.use_output_surface_for_resource = true; |
| 638 output_surface_plane.overlay_handled = true; | 672 output_surface_plane.overlay_handled = true; |
| 639 candidate_list.push_back(output_surface_plane); | 673 candidate_list.push_back(output_surface_plane); |
| 640 | 674 |
| 641 RenderPassFilterList render_pass_filters; | 675 RenderPassFilterList render_pass_filters; |
| 642 RenderPassFilterList render_pass_background_filters; | 676 RenderPassFilterList render_pass_background_filters; |
| 643 overlay_processor_->ProcessForOverlays( | 677 overlay_processor_->ProcessForOverlays( |
| 644 resource_provider_.get(), pass.get(), render_pass_filters, | 678 resource_provider_.get(), pass.get(), render_pass_filters, |
| 645 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 679 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 646 &content_bounds_); | 680 &damage_rect_, &content_bounds_); |
| 647 DCHECK(damage_rect_.IsEmpty()); | 681 DCHECK(damage_rect_.IsEmpty()); |
| 648 } | 682 } |
| 649 | 683 |
| 650 TEST_F(SingleOverlayOnTopTest, NoCandidates) { | 684 TEST_F(SingleOverlayOnTopTest, NoCandidates) { |
| 651 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 685 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 652 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 686 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 653 pass->shared_quad_state_list.back(), pass.get()); | 687 pass->shared_quad_state_list.back(), pass.get()); |
| 654 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 688 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 655 pass->shared_quad_state_list.back(), pass.get()); | 689 pass->shared_quad_state_list.back(), pass.get()); |
| 656 | 690 |
| 657 RenderPassList pass_list; | 691 RenderPassList pass_list; |
| 658 pass_list.push_back(std::move(pass)); | 692 pass_list.push_back(std::move(pass)); |
| 659 | 693 |
| 660 RenderPassList original_pass_list; | 694 RenderPassList original_pass_list; |
| 661 RenderPass::CopyAll(pass_list, &original_pass_list); | 695 RenderPass::CopyAll(pass_list, &original_pass_list); |
| 662 | 696 |
| 663 OverlayCandidateList candidate_list; | 697 OverlayCandidateList candidate_list; |
| 664 RenderPassFilterList render_pass_filters; | 698 RenderPassFilterList render_pass_filters; |
| 665 RenderPassFilterList render_pass_background_filters; | 699 RenderPassFilterList render_pass_background_filters; |
| 666 overlay_processor_->ProcessForOverlays( | 700 overlay_processor_->ProcessForOverlays( |
| 667 resource_provider_.get(), pass_list.back().get(), render_pass_filters, | 701 resource_provider_.get(), pass_list.back().get(), render_pass_filters, |
| 668 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 702 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 669 &content_bounds_); | 703 &damage_rect_, &content_bounds_); |
| 670 EXPECT_EQ(0U, candidate_list.size()); | 704 EXPECT_EQ(0U, candidate_list.size()); |
| 671 // There should be nothing new here. | 705 // There should be nothing new here. |
| 672 CompareRenderPassLists(pass_list, original_pass_list); | 706 CompareRenderPassLists(pass_list, original_pass_list); |
| 673 } | 707 } |
| 674 | 708 |
| 675 TEST_F(SingleOverlayOnTopTest, OccludedCandidates) { | 709 TEST_F(SingleOverlayOnTopTest, OccludedCandidates) { |
| 676 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 710 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 677 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 711 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 678 pass->shared_quad_state_list.back(), pass.get()); | 712 pass->shared_quad_state_list.back(), pass.get()); |
| 679 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 713 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 680 pass->shared_quad_state_list.back(), pass.get()); | 714 pass->shared_quad_state_list.back(), pass.get()); |
| 681 | 715 |
| 682 CreateFullscreenCandidateQuad(resource_provider_.get(), | 716 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 683 pass->shared_quad_state_list.back(), | 717 pass->shared_quad_state_list.back(), |
| 684 pass.get()); | 718 pass.get()); |
| 685 | 719 |
| 686 RenderPassList pass_list; | 720 RenderPassList pass_list; |
| 687 pass_list.push_back(std::move(pass)); | 721 pass_list.push_back(std::move(pass)); |
| 688 | 722 |
| 689 RenderPassList original_pass_list; | 723 RenderPassList original_pass_list; |
| 690 RenderPass::CopyAll(pass_list, &original_pass_list); | 724 RenderPass::CopyAll(pass_list, &original_pass_list); |
| 691 | 725 |
| 692 OverlayCandidateList candidate_list; | 726 OverlayCandidateList candidate_list; |
| 693 RenderPassFilterList render_pass_filters; | 727 RenderPassFilterList render_pass_filters; |
| 694 RenderPassFilterList render_pass_background_filters; | 728 RenderPassFilterList render_pass_background_filters; |
| 695 overlay_processor_->ProcessForOverlays( | 729 overlay_processor_->ProcessForOverlays( |
| 696 resource_provider_.get(), pass_list.back().get(), render_pass_filters, | 730 resource_provider_.get(), pass_list.back().get(), render_pass_filters, |
| 697 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 731 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 698 &content_bounds_); | 732 &damage_rect_, &content_bounds_); |
| 699 EXPECT_EQ(0U, candidate_list.size()); | 733 EXPECT_EQ(0U, candidate_list.size()); |
| 700 // There should be nothing new here. | 734 // There should be nothing new here. |
| 701 CompareRenderPassLists(pass_list, original_pass_list); | 735 CompareRenderPassLists(pass_list, original_pass_list); |
| 702 } | 736 } |
| 703 | 737 |
| 704 // Test with multiple render passes. | 738 // Test with multiple render passes. |
| 705 TEST_F(SingleOverlayOnTopTest, MultipleRenderPasses) { | 739 TEST_F(SingleOverlayOnTopTest, MultipleRenderPasses) { |
| 706 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 740 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 707 CreateFullscreenCandidateQuad(resource_provider_.get(), | 741 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 708 pass->shared_quad_state_list.back(), | 742 pass->shared_quad_state_list.back(), |
| 709 pass.get()); | 743 pass.get()); |
| 710 | 744 |
| 711 // Add something behind it. | 745 // Add something behind it. |
| 712 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 746 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 713 pass->shared_quad_state_list.back(), pass.get()); | 747 pass->shared_quad_state_list.back(), pass.get()); |
| 714 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 748 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 715 pass->shared_quad_state_list.back(), pass.get()); | 749 pass->shared_quad_state_list.back(), pass.get()); |
| 716 | 750 |
| 717 // Check for potential candidates. | 751 // Check for potential candidates. |
| 718 OverlayCandidateList candidate_list; | 752 OverlayCandidateList candidate_list; |
| 719 RenderPassFilterList render_pass_filters; | 753 RenderPassFilterList render_pass_filters; |
| 720 RenderPassFilterList render_pass_background_filters; | 754 RenderPassFilterList render_pass_background_filters; |
| 721 overlay_processor_->ProcessForOverlays( | 755 overlay_processor_->ProcessForOverlays( |
| 722 resource_provider_.get(), pass.get(), render_pass_filters, | 756 resource_provider_.get(), pass.get(), render_pass_filters, |
| 723 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 757 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 724 &content_bounds_); | 758 &damage_rect_, &content_bounds_); |
| 725 EXPECT_EQ(1U, candidate_list.size()); | 759 EXPECT_EQ(1U, candidate_list.size()); |
| 726 } | 760 } |
| 727 | 761 |
| 728 TEST_F(SingleOverlayOnTopTest, RejectBlending) { | 762 TEST_F(SingleOverlayOnTopTest, RejectBlending) { |
| 729 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 763 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 730 TextureDrawQuad* quad = | 764 TextureDrawQuad* quad = |
| 731 CreateFullscreenCandidateQuad(resource_provider_.get(), | 765 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 732 pass->shared_quad_state_list.back(), | 766 pass->shared_quad_state_list.back(), |
| 733 pass.get()); | 767 pass.get()); |
| 734 quad->needs_blending = true; | 768 quad->needs_blending = true; |
| 735 | 769 |
| 736 OverlayCandidateList candidate_list; | 770 OverlayCandidateList candidate_list; |
| 737 RenderPassFilterList render_pass_filters; | 771 RenderPassFilterList render_pass_filters; |
| 738 RenderPassFilterList render_pass_background_filters; | 772 RenderPassFilterList render_pass_background_filters; |
| 739 overlay_processor_->ProcessForOverlays( | 773 overlay_processor_->ProcessForOverlays( |
| 740 resource_provider_.get(), pass.get(), render_pass_filters, | 774 resource_provider_.get(), pass.get(), render_pass_filters, |
| 741 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 775 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 742 &content_bounds_); | 776 &damage_rect_, &content_bounds_); |
| 743 EXPECT_EQ(0U, candidate_list.size()); | 777 EXPECT_EQ(0U, candidate_list.size()); |
| 744 } | 778 } |
| 745 | 779 |
| 746 TEST_F(SingleOverlayOnTopTest, RejectBackgroundColor) { | 780 TEST_F(SingleOverlayOnTopTest, RejectBackgroundColor) { |
| 747 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 781 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 748 TextureDrawQuad* quad = | 782 TextureDrawQuad* quad = |
| 749 CreateFullscreenCandidateQuad(resource_provider_.get(), | 783 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 750 pass->shared_quad_state_list.back(), | 784 pass->shared_quad_state_list.back(), |
| 751 pass.get()); | 785 pass.get()); |
| 752 quad->background_color = SK_ColorBLACK; | 786 quad->background_color = SK_ColorBLACK; |
| 753 | 787 |
| 754 OverlayCandidateList candidate_list; | 788 OverlayCandidateList candidate_list; |
| 755 RenderPassFilterList render_pass_filters; | 789 RenderPassFilterList render_pass_filters; |
| 756 RenderPassFilterList render_pass_background_filters; | 790 RenderPassFilterList render_pass_background_filters; |
| 757 overlay_processor_->ProcessForOverlays( | 791 overlay_processor_->ProcessForOverlays( |
| 758 resource_provider_.get(), pass.get(), render_pass_filters, | 792 resource_provider_.get(), pass.get(), render_pass_filters, |
| 759 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 793 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 760 &content_bounds_); | 794 &damage_rect_, &content_bounds_); |
| 761 EXPECT_EQ(0U, candidate_list.size()); | 795 EXPECT_EQ(0U, candidate_list.size()); |
| 762 } | 796 } |
| 763 | 797 |
| 764 TEST_F(SingleOverlayOnTopTest, RejectBlendMode) { | 798 TEST_F(SingleOverlayOnTopTest, RejectBlendMode) { |
| 765 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 799 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 766 CreateFullscreenCandidateQuad(resource_provider_.get(), | 800 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 767 pass->shared_quad_state_list.back(), | 801 pass->shared_quad_state_list.back(), |
| 768 pass.get()); | 802 pass.get()); |
| 769 pass->shared_quad_state_list.back()->blend_mode = SkBlendMode::kScreen; | 803 pass->shared_quad_state_list.back()->blend_mode = SkBlendMode::kScreen; |
| 770 | 804 |
| 771 OverlayCandidateList candidate_list; | 805 OverlayCandidateList candidate_list; |
| 772 RenderPassFilterList render_pass_filters; | 806 RenderPassFilterList render_pass_filters; |
| 773 RenderPassFilterList render_pass_background_filters; | 807 RenderPassFilterList render_pass_background_filters; |
| 774 overlay_processor_->ProcessForOverlays( | 808 overlay_processor_->ProcessForOverlays( |
| 775 resource_provider_.get(), pass.get(), render_pass_filters, | 809 resource_provider_.get(), pass.get(), render_pass_filters, |
| 776 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 810 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 777 &content_bounds_); | 811 &damage_rect_, &content_bounds_); |
| 778 EXPECT_EQ(0U, candidate_list.size()); | 812 EXPECT_EQ(0U, candidate_list.size()); |
| 779 } | 813 } |
| 780 | 814 |
| 781 TEST_F(SingleOverlayOnTopTest, RejectOpacity) { | 815 TEST_F(SingleOverlayOnTopTest, RejectOpacity) { |
| 782 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 816 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 783 CreateFullscreenCandidateQuad(resource_provider_.get(), | 817 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 784 pass->shared_quad_state_list.back(), | 818 pass->shared_quad_state_list.back(), |
| 785 pass.get()); | 819 pass.get()); |
| 786 pass->shared_quad_state_list.back()->opacity = 0.5f; | 820 pass->shared_quad_state_list.back()->opacity = 0.5f; |
| 787 | 821 |
| 788 OverlayCandidateList candidate_list; | 822 OverlayCandidateList candidate_list; |
| 789 RenderPassFilterList render_pass_filters; | 823 RenderPassFilterList render_pass_filters; |
| 790 RenderPassFilterList render_pass_background_filters; | 824 RenderPassFilterList render_pass_background_filters; |
| 791 overlay_processor_->ProcessForOverlays( | 825 overlay_processor_->ProcessForOverlays( |
| 792 resource_provider_.get(), pass.get(), render_pass_filters, | 826 resource_provider_.get(), pass.get(), render_pass_filters, |
| 793 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 827 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 794 &content_bounds_); | 828 &damage_rect_, &content_bounds_); |
| 795 EXPECT_EQ(0U, candidate_list.size()); | 829 EXPECT_EQ(0U, candidate_list.size()); |
| 796 } | 830 } |
| 797 | 831 |
| 798 TEST_F(SingleOverlayOnTopTest, RejectNonAxisAlignedTransform) { | 832 TEST_F(SingleOverlayOnTopTest, RejectNonAxisAlignedTransform) { |
| 799 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 833 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 800 CreateFullscreenCandidateQuad(resource_provider_.get(), | 834 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 801 pass->shared_quad_state_list.back(), | 835 pass->shared_quad_state_list.back(), |
| 802 pass.get()); | 836 pass.get()); |
| 803 pass->shared_quad_state_list.back() | 837 pass->shared_quad_state_list.back() |
| 804 ->quad_to_target_transform.RotateAboutXAxis(45.f); | 838 ->quad_to_target_transform.RotateAboutXAxis(45.f); |
| 805 | 839 |
| 806 OverlayCandidateList candidate_list; | 840 OverlayCandidateList candidate_list; |
| 807 RenderPassFilterList render_pass_filters; | 841 RenderPassFilterList render_pass_filters; |
| 808 RenderPassFilterList render_pass_background_filters; | 842 RenderPassFilterList render_pass_background_filters; |
| 809 overlay_processor_->ProcessForOverlays( | 843 overlay_processor_->ProcessForOverlays( |
| 810 resource_provider_.get(), pass.get(), render_pass_filters, | 844 resource_provider_.get(), pass.get(), render_pass_filters, |
| 811 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 845 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 812 &content_bounds_); | 846 &damage_rect_, &content_bounds_); |
| 813 EXPECT_EQ(0U, candidate_list.size()); | 847 EXPECT_EQ(0U, candidate_list.size()); |
| 814 } | 848 } |
| 815 | 849 |
| 816 TEST_F(SingleOverlayOnTopTest, AllowClipped) { | 850 TEST_F(SingleOverlayOnTopTest, AllowClipped) { |
| 817 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 851 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 818 CreateFullscreenCandidateQuad(resource_provider_.get(), | 852 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 819 pass->shared_quad_state_list.back(), | 853 pass->shared_quad_state_list.back(), |
| 820 pass.get()); | 854 pass.get()); |
| 821 pass->shared_quad_state_list.back()->is_clipped = true; | 855 pass->shared_quad_state_list.back()->is_clipped = true; |
| 822 pass->shared_quad_state_list.back()->clip_rect = kOverlayClipRect; | 856 pass->shared_quad_state_list.back()->clip_rect = kOverlayClipRect; |
| 823 | 857 |
| 824 OverlayCandidateList candidate_list; | 858 OverlayCandidateList candidate_list; |
| 825 RenderPassFilterList render_pass_filters; | 859 RenderPassFilterList render_pass_filters; |
| 826 RenderPassFilterList render_pass_background_filters; | 860 RenderPassFilterList render_pass_background_filters; |
| 827 overlay_processor_->ProcessForOverlays( | 861 overlay_processor_->ProcessForOverlays( |
| 828 resource_provider_.get(), pass.get(), render_pass_filters, | 862 resource_provider_.get(), pass.get(), render_pass_filters, |
| 829 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 863 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 830 &content_bounds_); | 864 &damage_rect_, &content_bounds_); |
| 831 EXPECT_EQ(1U, candidate_list.size()); | 865 EXPECT_EQ(1U, candidate_list.size()); |
| 832 } | 866 } |
| 833 | 867 |
| 834 TEST_F(UnderlayTest, AllowVerticalFlip) { | 868 TEST_F(UnderlayTest, AllowVerticalFlip) { |
| 835 gfx::Rect rect = kOverlayRect; | 869 gfx::Rect rect = kOverlayRect; |
| 836 rect.set_width(rect.width() / 2); | 870 rect.set_width(rect.width() / 2); |
| 837 rect.Offset(0, -rect.height()); | 871 rect.Offset(0, -rect.height()); |
| 838 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 872 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 839 CreateCandidateQuadAt(resource_provider_.get(), | 873 CreateCandidateQuadAt(resource_provider_.get(), |
| 840 pass->shared_quad_state_list.back(), pass.get(), rect); | 874 pass->shared_quad_state_list.back(), pass.get(), rect); |
| 841 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(2.0f, | 875 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(2.0f, |
| 842 -1.0f); | 876 -1.0f); |
| 843 OverlayCandidateList candidate_list; | 877 OverlayCandidateList candidate_list; |
| 844 RenderPassFilterList render_pass_filters; | 878 RenderPassFilterList render_pass_filters; |
| 845 RenderPassFilterList render_pass_background_filters; | 879 RenderPassFilterList render_pass_background_filters; |
| 846 overlay_processor_->ProcessForOverlays( | 880 overlay_processor_->ProcessForOverlays( |
| 847 resource_provider_.get(), pass.get(), render_pass_filters, | 881 resource_provider_.get(), pass.get(), render_pass_filters, |
| 848 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 882 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 849 &content_bounds_); | 883 &damage_rect_, &content_bounds_); |
| 850 ASSERT_EQ(1U, candidate_list.size()); | 884 ASSERT_EQ(1U, candidate_list.size()); |
| 851 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_VERTICAL, | 885 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_VERTICAL, |
| 852 candidate_list.back().transform); | 886 candidate_list.back().transform); |
| 853 } | 887 } |
| 854 | 888 |
| 855 TEST_F(UnderlayTest, AllowHorizontalFlip) { | 889 TEST_F(UnderlayTest, AllowHorizontalFlip) { |
| 856 gfx::Rect rect = kOverlayRect; | 890 gfx::Rect rect = kOverlayRect; |
| 857 rect.set_height(rect.height() / 2); | 891 rect.set_height(rect.height() / 2); |
| 858 rect.Offset(-rect.width(), 0); | 892 rect.Offset(-rect.width(), 0); |
| 859 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 893 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 860 CreateCandidateQuadAt(resource_provider_.get(), | 894 CreateCandidateQuadAt(resource_provider_.get(), |
| 861 pass->shared_quad_state_list.back(), pass.get(), rect); | 895 pass->shared_quad_state_list.back(), pass.get(), rect); |
| 862 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(-1.0f, | 896 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(-1.0f, |
| 863 2.0f); | 897 2.0f); |
| 864 | 898 |
| 865 OverlayCandidateList candidate_list; | 899 OverlayCandidateList candidate_list; |
| 866 RenderPassFilterList render_pass_filters; | 900 RenderPassFilterList render_pass_filters; |
| 867 RenderPassFilterList render_pass_background_filters; | 901 RenderPassFilterList render_pass_background_filters; |
| 868 overlay_processor_->ProcessForOverlays( | 902 overlay_processor_->ProcessForOverlays( |
| 869 resource_provider_.get(), pass.get(), render_pass_filters, | 903 resource_provider_.get(), pass.get(), render_pass_filters, |
| 870 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 904 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 871 &content_bounds_); | 905 &damage_rect_, &content_bounds_); |
| 872 ASSERT_EQ(1U, candidate_list.size()); | 906 ASSERT_EQ(1U, candidate_list.size()); |
| 873 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_HORIZONTAL, | 907 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_HORIZONTAL, |
| 874 candidate_list.back().transform); | 908 candidate_list.back().transform); |
| 875 } | 909 } |
| 876 | 910 |
| 877 TEST_F(SingleOverlayOnTopTest, AllowPositiveScaleTransform) { | 911 TEST_F(SingleOverlayOnTopTest, AllowPositiveScaleTransform) { |
| 878 gfx::Rect rect = kOverlayRect; | 912 gfx::Rect rect = kOverlayRect; |
| 879 rect.set_width(rect.width() / 2); | 913 rect.set_width(rect.width() / 2); |
| 880 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 914 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 881 CreateCandidateQuadAt(resource_provider_.get(), | 915 CreateCandidateQuadAt(resource_provider_.get(), |
| 882 pass->shared_quad_state_list.back(), pass.get(), rect); | 916 pass->shared_quad_state_list.back(), pass.get(), rect); |
| 883 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(2.0f, | 917 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(2.0f, |
| 884 1.0f); | 918 1.0f); |
| 885 OverlayCandidateList candidate_list; | 919 OverlayCandidateList candidate_list; |
| 886 RenderPassFilterList render_pass_filters; | 920 RenderPassFilterList render_pass_filters; |
| 887 RenderPassFilterList render_pass_background_filters; | 921 RenderPassFilterList render_pass_background_filters; |
| 888 overlay_processor_->ProcessForOverlays( | 922 overlay_processor_->ProcessForOverlays( |
| 889 resource_provider_.get(), pass.get(), render_pass_filters, | 923 resource_provider_.get(), pass.get(), render_pass_filters, |
| 890 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 924 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 891 &content_bounds_); | 925 &damage_rect_, &content_bounds_); |
| 892 EXPECT_EQ(1U, candidate_list.size()); | 926 EXPECT_EQ(1U, candidate_list.size()); |
| 893 } | 927 } |
| 894 | 928 |
| 895 TEST_F(SingleOverlayOnTopTest, RejectTransform) { | 929 TEST_F(SingleOverlayOnTopTest, RejectTransform) { |
| 896 gfx::Rect rect = kOverlayRect; | 930 gfx::Rect rect = kOverlayRect; |
| 897 rect.Offset(0, -rect.height()); | 931 rect.Offset(0, -rect.height()); |
| 898 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 932 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 899 CreateCandidateQuadAt(resource_provider_.get(), | 933 CreateCandidateQuadAt(resource_provider_.get(), |
| 900 pass->shared_quad_state_list.back(), pass.get(), rect); | 934 pass->shared_quad_state_list.back(), pass.get(), rect); |
| 901 pass->shared_quad_state_list.back() | 935 pass->shared_quad_state_list.back() |
| 902 ->quad_to_target_transform.RotateAboutZAxis(90.f); | 936 ->quad_to_target_transform.RotateAboutZAxis(90.f); |
| 903 | 937 |
| 904 OverlayCandidateList candidate_list; | 938 OverlayCandidateList candidate_list; |
| 905 RenderPassFilterList render_pass_filters; | 939 RenderPassFilterList render_pass_filters; |
| 906 RenderPassFilterList render_pass_background_filters; | 940 RenderPassFilterList render_pass_background_filters; |
| 907 overlay_processor_->ProcessForOverlays( | 941 overlay_processor_->ProcessForOverlays( |
| 908 resource_provider_.get(), pass.get(), render_pass_filters, | 942 resource_provider_.get(), pass.get(), render_pass_filters, |
| 909 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 943 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 910 &content_bounds_); | 944 &damage_rect_, &content_bounds_); |
| 911 ASSERT_EQ(0U, candidate_list.size()); | 945 ASSERT_EQ(0U, candidate_list.size()); |
| 912 } | 946 } |
| 913 | 947 |
| 914 TEST_F(UnderlayTest, Allow90DegreeRotation) { | 948 TEST_F(UnderlayTest, Allow90DegreeRotation) { |
| 915 gfx::Rect rect = kOverlayRect; | 949 gfx::Rect rect = kOverlayRect; |
| 916 rect.Offset(0, -rect.height()); | 950 rect.Offset(0, -rect.height()); |
| 917 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 951 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 918 CreateCandidateQuadAt(resource_provider_.get(), | 952 CreateCandidateQuadAt(resource_provider_.get(), |
| 919 pass->shared_quad_state_list.back(), pass.get(), rect); | 953 pass->shared_quad_state_list.back(), pass.get(), rect); |
| 920 pass->shared_quad_state_list.back() | 954 pass->shared_quad_state_list.back() |
| 921 ->quad_to_target_transform.RotateAboutZAxis(90.f); | 955 ->quad_to_target_transform.RotateAboutZAxis(90.f); |
| 922 | 956 |
| 923 OverlayCandidateList candidate_list; | 957 OverlayCandidateList candidate_list; |
| 924 RenderPassFilterList render_pass_filters; | 958 RenderPassFilterList render_pass_filters; |
| 925 RenderPassFilterList render_pass_background_filters; | 959 RenderPassFilterList render_pass_background_filters; |
| 926 overlay_processor_->ProcessForOverlays( | 960 overlay_processor_->ProcessForOverlays( |
| 927 resource_provider_.get(), pass.get(), render_pass_filters, | 961 resource_provider_.get(), pass.get(), render_pass_filters, |
| 928 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 962 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 929 &content_bounds_); | 963 &damage_rect_, &content_bounds_); |
| 930 ASSERT_EQ(1U, candidate_list.size()); | 964 ASSERT_EQ(1U, candidate_list.size()); |
| 931 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_90, candidate_list.back().transform); | 965 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_90, candidate_list.back().transform); |
| 932 } | 966 } |
| 933 | 967 |
| 934 TEST_F(UnderlayTest, Allow180DegreeRotation) { | 968 TEST_F(UnderlayTest, Allow180DegreeRotation) { |
| 935 gfx::Rect rect = kOverlayRect; | 969 gfx::Rect rect = kOverlayRect; |
| 936 rect.Offset(-rect.width(), -rect.height()); | 970 rect.Offset(-rect.width(), -rect.height()); |
| 937 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 971 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 938 CreateCandidateQuadAt(resource_provider_.get(), | 972 CreateCandidateQuadAt(resource_provider_.get(), |
| 939 pass->shared_quad_state_list.back(), pass.get(), rect); | 973 pass->shared_quad_state_list.back(), pass.get(), rect); |
| 940 pass->shared_quad_state_list.back() | 974 pass->shared_quad_state_list.back() |
| 941 ->quad_to_target_transform.RotateAboutZAxis(180.f); | 975 ->quad_to_target_transform.RotateAboutZAxis(180.f); |
| 942 | 976 |
| 943 OverlayCandidateList candidate_list; | 977 OverlayCandidateList candidate_list; |
| 944 RenderPassFilterList render_pass_filters; | 978 RenderPassFilterList render_pass_filters; |
| 945 RenderPassFilterList render_pass_background_filters; | 979 RenderPassFilterList render_pass_background_filters; |
| 946 overlay_processor_->ProcessForOverlays( | 980 overlay_processor_->ProcessForOverlays( |
| 947 resource_provider_.get(), pass.get(), render_pass_filters, | 981 resource_provider_.get(), pass.get(), render_pass_filters, |
| 948 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 982 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 949 &content_bounds_); | 983 &damage_rect_, &content_bounds_); |
| 950 ASSERT_EQ(1U, candidate_list.size()); | 984 ASSERT_EQ(1U, candidate_list.size()); |
| 951 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_180, candidate_list.back().transform); | 985 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_180, candidate_list.back().transform); |
| 952 } | 986 } |
| 953 | 987 |
| 954 TEST_F(UnderlayTest, Allow270DegreeRotation) { | 988 TEST_F(UnderlayTest, Allow270DegreeRotation) { |
| 955 gfx::Rect rect = kOverlayRect; | 989 gfx::Rect rect = kOverlayRect; |
| 956 rect.Offset(-rect.width(), 0); | 990 rect.Offset(-rect.width(), 0); |
| 957 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 991 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 958 CreateCandidateQuadAt(resource_provider_.get(), | 992 CreateCandidateQuadAt(resource_provider_.get(), |
| 959 pass->shared_quad_state_list.back(), pass.get(), rect); | 993 pass->shared_quad_state_list.back(), pass.get(), rect); |
| 960 pass->shared_quad_state_list.back() | 994 pass->shared_quad_state_list.back() |
| 961 ->quad_to_target_transform.RotateAboutZAxis(270.f); | 995 ->quad_to_target_transform.RotateAboutZAxis(270.f); |
| 962 | 996 |
| 963 OverlayCandidateList candidate_list; | 997 OverlayCandidateList candidate_list; |
| 964 RenderPassFilterList render_pass_filters; | 998 RenderPassFilterList render_pass_filters; |
| 965 RenderPassFilterList render_pass_background_filters; | 999 RenderPassFilterList render_pass_background_filters; |
| 966 overlay_processor_->ProcessForOverlays( | 1000 overlay_processor_->ProcessForOverlays( |
| 967 resource_provider_.get(), pass.get(), render_pass_filters, | 1001 resource_provider_.get(), pass.get(), render_pass_filters, |
| 968 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 1002 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 969 &content_bounds_); | 1003 &damage_rect_, &content_bounds_); |
| 970 ASSERT_EQ(1U, candidate_list.size()); | 1004 ASSERT_EQ(1U, candidate_list.size()); |
| 971 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_270, candidate_list.back().transform); | 1005 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_270, candidate_list.back().transform); |
| 972 } | 1006 } |
| 973 | 1007 |
| 974 TEST_F(SingleOverlayOnTopTest, AllowNotTopIfNotOccluded) { | 1008 TEST_F(SingleOverlayOnTopTest, AllowNotTopIfNotOccluded) { |
| 975 output_surface_->GetOverlayCandidateValidator()->SetExpectedRect( | 1009 output_surface_->GetOverlayCandidateValidator()->SetExpectedRect( |
| 976 gfx::RectF(kOverlayBottomRightRect)); | 1010 gfx::RectF(kOverlayBottomRightRect)); |
| 977 | 1011 |
| 978 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 1012 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 979 CreateOpaqueQuadAt(resource_provider_.get(), | 1013 CreateOpaqueQuadAt(resource_provider_.get(), |
| 980 pass->shared_quad_state_list.back(), pass.get(), | 1014 pass->shared_quad_state_list.back(), pass.get(), |
| 981 kOverlayTopLeftRect); | 1015 kOverlayTopLeftRect); |
| 982 CreateCandidateQuadAt(resource_provider_.get(), | 1016 CreateCandidateQuadAt(resource_provider_.get(), |
| 983 pass->shared_quad_state_list.back(), | 1017 pass->shared_quad_state_list.back(), |
| 984 pass.get(), | 1018 pass.get(), |
| 985 kOverlayBottomRightRect); | 1019 kOverlayBottomRightRect); |
| 986 | 1020 |
| 987 OverlayCandidateList candidate_list; | 1021 OverlayCandidateList candidate_list; |
| 988 RenderPassFilterList render_pass_filters; | 1022 RenderPassFilterList render_pass_filters; |
| 989 RenderPassFilterList render_pass_background_filters; | 1023 RenderPassFilterList render_pass_background_filters; |
| 990 overlay_processor_->ProcessForOverlays( | 1024 overlay_processor_->ProcessForOverlays( |
| 991 resource_provider_.get(), pass.get(), render_pass_filters, | 1025 resource_provider_.get(), pass.get(), render_pass_filters, |
| 992 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 1026 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 993 &content_bounds_); | 1027 &damage_rect_, &content_bounds_); |
| 994 EXPECT_EQ(1U, candidate_list.size()); | 1028 EXPECT_EQ(1U, candidate_list.size()); |
| 995 } | 1029 } |
| 996 | 1030 |
| 997 TEST_F(SingleOverlayOnTopTest, AllowTransparentOnTop) { | 1031 TEST_F(SingleOverlayOnTopTest, AllowTransparentOnTop) { |
| 998 output_surface_->GetOverlayCandidateValidator()->SetExpectedRect( | 1032 output_surface_->GetOverlayCandidateValidator()->SetExpectedRect( |
| 999 gfx::RectF(kOverlayBottomRightRect)); | 1033 gfx::RectF(kOverlayBottomRightRect)); |
| 1000 | 1034 |
| 1001 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 1035 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 1002 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); | 1036 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); |
| 1003 shared_state->opacity = 0.f; | 1037 shared_state->opacity = 0.f; |
| 1004 CreateSolidColorQuadAt(shared_state, SK_ColorBLACK, pass.get(), | 1038 CreateSolidColorQuadAt(shared_state, SK_ColorBLACK, pass.get(), |
| 1005 kOverlayBottomRightRect); | 1039 kOverlayBottomRightRect); |
| 1006 shared_state = pass->CreateAndAppendSharedQuadState(); | 1040 shared_state = pass->CreateAndAppendSharedQuadState(); |
| 1007 shared_state->opacity = 1.f; | 1041 shared_state->opacity = 1.f; |
| 1008 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(), | 1042 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(), |
| 1009 kOverlayBottomRightRect); | 1043 kOverlayBottomRightRect); |
| 1010 | 1044 |
| 1011 OverlayCandidateList candidate_list; | 1045 OverlayCandidateList candidate_list; |
| 1012 RenderPassFilterList render_pass_filters; | 1046 RenderPassFilterList render_pass_filters; |
| 1013 RenderPassFilterList render_pass_background_filters; | 1047 RenderPassFilterList render_pass_background_filters; |
| 1014 overlay_processor_->ProcessForOverlays( | 1048 overlay_processor_->ProcessForOverlays( |
| 1015 resource_provider_.get(), pass.get(), render_pass_filters, | 1049 resource_provider_.get(), pass.get(), render_pass_filters, |
| 1016 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 1050 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 1017 &content_bounds_); | 1051 &damage_rect_, &content_bounds_); |
| 1018 EXPECT_EQ(1U, candidate_list.size()); | 1052 EXPECT_EQ(1U, candidate_list.size()); |
| 1019 } | 1053 } |
| 1020 | 1054 |
| 1021 TEST_F(SingleOverlayOnTopTest, AllowTransparentColorOnTop) { | 1055 TEST_F(SingleOverlayOnTopTest, AllowTransparentColorOnTop) { |
| 1022 output_surface_->GetOverlayCandidateValidator()->SetExpectedRect( | 1056 output_surface_->GetOverlayCandidateValidator()->SetExpectedRect( |
| 1023 gfx::RectF(kOverlayBottomRightRect)); | 1057 gfx::RectF(kOverlayBottomRightRect)); |
| 1024 | 1058 |
| 1025 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 1059 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 1026 CreateSolidColorQuadAt(pass->shared_quad_state_list.back(), | 1060 CreateSolidColorQuadAt(pass->shared_quad_state_list.back(), |
| 1027 SK_ColorTRANSPARENT, pass.get(), | 1061 SK_ColorTRANSPARENT, pass.get(), |
| 1028 kOverlayBottomRightRect); | 1062 kOverlayBottomRightRect); |
| 1029 CreateCandidateQuadAt(resource_provider_.get(), | 1063 CreateCandidateQuadAt(resource_provider_.get(), |
| 1030 pass->shared_quad_state_list.back(), pass.get(), | 1064 pass->shared_quad_state_list.back(), pass.get(), |
| 1031 kOverlayBottomRightRect); | 1065 kOverlayBottomRightRect); |
| 1032 | 1066 |
| 1033 OverlayCandidateList candidate_list; | 1067 OverlayCandidateList candidate_list; |
| 1034 RenderPassFilterList render_pass_filters; | 1068 RenderPassFilterList render_pass_filters; |
| 1035 RenderPassFilterList render_pass_background_filters; | 1069 RenderPassFilterList render_pass_background_filters; |
| 1036 overlay_processor_->ProcessForOverlays( | 1070 overlay_processor_->ProcessForOverlays( |
| 1037 resource_provider_.get(), pass.get(), render_pass_filters, | 1071 resource_provider_.get(), pass.get(), render_pass_filters, |
| 1038 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 1072 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 1039 &content_bounds_); | 1073 &damage_rect_, &content_bounds_); |
| 1040 EXPECT_EQ(1U, candidate_list.size()); | 1074 EXPECT_EQ(1U, candidate_list.size()); |
| 1041 } | 1075 } |
| 1042 | 1076 |
| 1043 TEST_F(SingleOverlayOnTopTest, RejectOpaqueColorOnTop) { | 1077 TEST_F(SingleOverlayOnTopTest, RejectOpaqueColorOnTop) { |
| 1044 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 1078 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 1045 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); | 1079 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); |
| 1046 shared_state->opacity = 0.5f; | 1080 shared_state->opacity = 0.5f; |
| 1047 CreateSolidColorQuadAt(shared_state, SK_ColorBLACK, pass.get(), | 1081 CreateSolidColorQuadAt(shared_state, SK_ColorBLACK, pass.get(), |
| 1048 kOverlayBottomRightRect); | 1082 kOverlayBottomRightRect); |
| 1049 shared_state = pass->CreateAndAppendSharedQuadState(); | 1083 shared_state = pass->CreateAndAppendSharedQuadState(); |
| 1050 shared_state->opacity = 1.f; | 1084 shared_state->opacity = 1.f; |
| 1051 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(), | 1085 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(), |
| 1052 kOverlayBottomRightRect); | 1086 kOverlayBottomRightRect); |
| 1053 | 1087 |
| 1054 OverlayCandidateList candidate_list; | 1088 OverlayCandidateList candidate_list; |
| 1055 RenderPassFilterList render_pass_filters; | 1089 RenderPassFilterList render_pass_filters; |
| 1056 RenderPassFilterList render_pass_background_filters; | 1090 RenderPassFilterList render_pass_background_filters; |
| 1057 overlay_processor_->ProcessForOverlays( | 1091 overlay_processor_->ProcessForOverlays( |
| 1058 resource_provider_.get(), pass.get(), render_pass_filters, | 1092 resource_provider_.get(), pass.get(), render_pass_filters, |
| 1059 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 1093 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 1060 &content_bounds_); | 1094 &damage_rect_, &content_bounds_); |
| 1061 EXPECT_EQ(0U, candidate_list.size()); | 1095 EXPECT_EQ(0U, candidate_list.size()); |
| 1062 } | 1096 } |
| 1063 | 1097 |
| 1064 TEST_F(SingleOverlayOnTopTest, RejectTransparentColorOnTopWithoutBlending) { | 1098 TEST_F(SingleOverlayOnTopTest, RejectTransparentColorOnTopWithoutBlending) { |
| 1065 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 1099 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 1066 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); | 1100 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); |
| 1067 CreateSolidColorQuadAt(shared_state, SK_ColorTRANSPARENT, pass.get(), | 1101 CreateSolidColorQuadAt(shared_state, SK_ColorTRANSPARENT, pass.get(), |
| 1068 kOverlayBottomRightRect)->opaque_rect = | 1102 kOverlayBottomRightRect)->opaque_rect = |
| 1069 kOverlayBottomRightRect; | 1103 kOverlayBottomRightRect; |
| 1070 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(), | 1104 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(), |
| 1071 kOverlayBottomRightRect); | 1105 kOverlayBottomRightRect); |
| 1072 | 1106 |
| 1073 OverlayCandidateList candidate_list; | 1107 OverlayCandidateList candidate_list; |
| 1074 RenderPassFilterList render_pass_filters; | 1108 RenderPassFilterList render_pass_filters; |
| 1075 RenderPassFilterList render_pass_background_filters; | 1109 RenderPassFilterList render_pass_background_filters; |
| 1076 overlay_processor_->ProcessForOverlays( | 1110 overlay_processor_->ProcessForOverlays( |
| 1077 resource_provider_.get(), pass.get(), render_pass_filters, | 1111 resource_provider_.get(), pass.get(), render_pass_filters, |
| 1078 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 1112 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 1079 &content_bounds_); | 1113 &damage_rect_, &content_bounds_); |
| 1080 EXPECT_EQ(0U, candidate_list.size()); | 1114 EXPECT_EQ(0U, candidate_list.size()); |
| 1081 } | 1115 } |
| 1082 | 1116 |
| 1083 TEST_F(SingleOverlayOnTopTest, RejectVideoSwapTransform) { | 1117 TEST_F(SingleOverlayOnTopTest, RejectVideoSwapTransform) { |
| 1084 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 1118 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 1085 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), | 1119 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), |
| 1086 pass->shared_quad_state_list.back(), | 1120 pass->shared_quad_state_list.back(), |
| 1087 pass.get(), kSwapTransform); | 1121 pass.get(), kSwapTransform); |
| 1088 | 1122 |
| 1089 OverlayCandidateList candidate_list; | 1123 OverlayCandidateList candidate_list; |
| 1090 RenderPassFilterList render_pass_filters; | 1124 RenderPassFilterList render_pass_filters; |
| 1091 RenderPassFilterList render_pass_background_filters; | 1125 RenderPassFilterList render_pass_background_filters; |
| 1092 overlay_processor_->ProcessForOverlays( | 1126 overlay_processor_->ProcessForOverlays( |
| 1093 resource_provider_.get(), pass.get(), render_pass_filters, | 1127 resource_provider_.get(), pass.get(), render_pass_filters, |
| 1094 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 1128 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 1095 &content_bounds_); | 1129 &damage_rect_, &content_bounds_); |
| 1096 EXPECT_EQ(0U, candidate_list.size()); | 1130 EXPECT_EQ(0U, candidate_list.size()); |
| 1097 } | 1131 } |
| 1098 | 1132 |
| 1099 TEST_F(UnderlayTest, AllowVideoXMirrorTransform) { | 1133 TEST_F(UnderlayTest, AllowVideoXMirrorTransform) { |
| 1100 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 1134 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 1101 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), | 1135 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), |
| 1102 pass->shared_quad_state_list.back(), | 1136 pass->shared_quad_state_list.back(), |
| 1103 pass.get(), kXMirrorTransform); | 1137 pass.get(), kXMirrorTransform); |
| 1104 | 1138 |
| 1105 OverlayCandidateList candidate_list; | 1139 OverlayCandidateList candidate_list; |
| 1106 RenderPassFilterList render_pass_filters; | 1140 RenderPassFilterList render_pass_filters; |
| 1107 RenderPassFilterList render_pass_background_filters; | 1141 RenderPassFilterList render_pass_background_filters; |
| 1108 overlay_processor_->ProcessForOverlays( | 1142 overlay_processor_->ProcessForOverlays( |
| 1109 resource_provider_.get(), pass.get(), render_pass_filters, | 1143 resource_provider_.get(), pass.get(), render_pass_filters, |
| 1110 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 1144 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 1111 &content_bounds_); | 1145 &damage_rect_, &content_bounds_); |
| 1112 EXPECT_EQ(1U, candidate_list.size()); | 1146 EXPECT_EQ(1U, candidate_list.size()); |
| 1113 } | 1147 } |
| 1114 | 1148 |
| 1115 TEST_F(UnderlayTest, AllowVideoBothMirrorTransform) { | 1149 TEST_F(UnderlayTest, AllowVideoBothMirrorTransform) { |
| 1116 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 1150 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 1117 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), | 1151 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), |
| 1118 pass->shared_quad_state_list.back(), | 1152 pass->shared_quad_state_list.back(), |
| 1119 pass.get(), kBothMirrorTransform); | 1153 pass.get(), kBothMirrorTransform); |
| 1120 | 1154 |
| 1121 OverlayCandidateList candidate_list; | 1155 OverlayCandidateList candidate_list; |
| 1122 RenderPassFilterList render_pass_filters; | 1156 RenderPassFilterList render_pass_filters; |
| 1123 RenderPassFilterList render_pass_background_filters; | 1157 RenderPassFilterList render_pass_background_filters; |
| 1124 overlay_processor_->ProcessForOverlays( | 1158 overlay_processor_->ProcessForOverlays( |
| 1125 resource_provider_.get(), pass.get(), render_pass_filters, | 1159 resource_provider_.get(), pass.get(), render_pass_filters, |
| 1126 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 1160 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 1127 &content_bounds_); | 1161 &damage_rect_, &content_bounds_); |
| 1128 EXPECT_EQ(1U, candidate_list.size()); | 1162 EXPECT_EQ(1U, candidate_list.size()); |
| 1129 } | 1163 } |
| 1130 | 1164 |
| 1131 TEST_F(UnderlayTest, AllowVideoNormalTransform) { | 1165 TEST_F(UnderlayTest, AllowVideoNormalTransform) { |
| 1132 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 1166 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 1133 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), | 1167 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), |
| 1134 pass->shared_quad_state_list.back(), | 1168 pass->shared_quad_state_list.back(), |
| 1135 pass.get(), kNormalTransform); | 1169 pass.get(), kNormalTransform); |
| 1136 | 1170 |
| 1137 OverlayCandidateList candidate_list; | 1171 OverlayCandidateList candidate_list; |
| 1138 RenderPassFilterList render_pass_filters; | 1172 RenderPassFilterList render_pass_filters; |
| 1139 RenderPassFilterList render_pass_background_filters; | 1173 RenderPassFilterList render_pass_background_filters; |
| 1140 overlay_processor_->ProcessForOverlays( | 1174 overlay_processor_->ProcessForOverlays( |
| 1141 resource_provider_.get(), pass.get(), render_pass_filters, | 1175 resource_provider_.get(), pass.get(), render_pass_filters, |
| 1142 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 1176 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 1143 &content_bounds_); | 1177 &damage_rect_, &content_bounds_); |
| 1144 EXPECT_EQ(1U, candidate_list.size()); | 1178 EXPECT_EQ(1U, candidate_list.size()); |
| 1145 } | 1179 } |
| 1146 | 1180 |
| 1147 TEST_F(SingleOverlayOnTopTest, AllowVideoYMirrorTransform) { | 1181 TEST_F(SingleOverlayOnTopTest, AllowVideoYMirrorTransform) { |
| 1148 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 1182 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 1149 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), | 1183 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), |
| 1150 pass->shared_quad_state_list.back(), | 1184 pass->shared_quad_state_list.back(), |
| 1151 pass.get(), kYMirrorTransform); | 1185 pass.get(), kYMirrorTransform); |
| 1152 | 1186 |
| 1153 OverlayCandidateList candidate_list; | 1187 OverlayCandidateList candidate_list; |
| 1154 RenderPassFilterList render_pass_filters; | 1188 RenderPassFilterList render_pass_filters; |
| 1155 RenderPassFilterList render_pass_background_filters; | 1189 RenderPassFilterList render_pass_background_filters; |
| 1156 overlay_processor_->ProcessForOverlays( | 1190 overlay_processor_->ProcessForOverlays( |
| 1157 resource_provider_.get(), pass.get(), render_pass_filters, | 1191 resource_provider_.get(), pass.get(), render_pass_filters, |
| 1158 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 1192 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 1159 &content_bounds_); | 1193 &damage_rect_, &content_bounds_); |
| 1160 EXPECT_EQ(1U, candidate_list.size()); | 1194 EXPECT_EQ(1U, candidate_list.size()); |
| 1161 } | 1195 } |
| 1162 | 1196 |
| 1163 TEST_F(UnderlayTest, OverlayLayerUnderMainLayer) { | 1197 TEST_F(UnderlayTest, OverlayLayerUnderMainLayer) { |
| 1164 output_surface_->GetOverlayCandidateValidator()->SetExpectedRect( | 1198 output_surface_->GetOverlayCandidateValidator()->SetExpectedRect( |
| 1165 gfx::RectF(kOverlayBottomRightRect)); | 1199 gfx::RectF(kOverlayBottomRightRect)); |
| 1166 | 1200 |
| 1167 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 1201 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 1168 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 1202 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 1169 pass->shared_quad_state_list.back(), pass.get()); | 1203 pass->shared_quad_state_list.back(), pass.get()); |
| 1170 CreateCandidateQuadAt(resource_provider_.get(), | 1204 CreateCandidateQuadAt(resource_provider_.get(), |
| 1171 pass->shared_quad_state_list.back(), pass.get(), | 1205 pass->shared_quad_state_list.back(), pass.get(), |
| 1172 kOverlayBottomRightRect); | 1206 kOverlayBottomRightRect); |
| 1173 | 1207 |
| 1174 OverlayCandidateList candidate_list; | 1208 OverlayCandidateList candidate_list; |
| 1175 RenderPassFilterList render_pass_filters; | 1209 RenderPassFilterList render_pass_filters; |
| 1176 RenderPassFilterList render_pass_background_filters; | 1210 RenderPassFilterList render_pass_background_filters; |
| 1177 overlay_processor_->ProcessForOverlays( | 1211 overlay_processor_->ProcessForOverlays( |
| 1178 resource_provider_.get(), pass.get(), render_pass_filters, | 1212 resource_provider_.get(), pass.get(), render_pass_filters, |
| 1179 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 1213 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 1180 &content_bounds_); | 1214 &damage_rect_, &content_bounds_); |
| 1181 ASSERT_EQ(1U, candidate_list.size()); | 1215 ASSERT_EQ(1U, candidate_list.size()); |
| 1182 EXPECT_EQ(-1, candidate_list[0].plane_z_order); | 1216 EXPECT_EQ(-1, candidate_list[0].plane_z_order); |
| 1183 EXPECT_EQ(2U, pass->quad_list.size()); | 1217 EXPECT_EQ(2U, pass->quad_list.size()); |
| 1184 // The overlay quad should have changed to a SOLID_COLOR quad. | 1218 // The overlay quad should have changed to a SOLID_COLOR quad. |
| 1185 EXPECT_EQ(pass->quad_list.back()->material, DrawQuad::SOLID_COLOR); | 1219 EXPECT_EQ(pass->quad_list.back()->material, DrawQuad::SOLID_COLOR); |
| 1186 } | 1220 } |
| 1187 | 1221 |
| 1188 TEST_F(UnderlayTest, AllowOnTop) { | 1222 TEST_F(UnderlayTest, AllowOnTop) { |
| 1189 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 1223 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 1190 CreateFullscreenCandidateQuad(resource_provider_.get(), | 1224 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 1191 pass->shared_quad_state_list.back(), | 1225 pass->shared_quad_state_list.back(), |
| 1192 pass.get()); | 1226 pass.get()); |
| 1193 pass->CreateAndAppendSharedQuadState()->opacity = 0.5f; | 1227 pass->CreateAndAppendSharedQuadState()->opacity = 0.5f; |
| 1194 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 1228 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 1195 pass->shared_quad_state_list.back(), pass.get()); | 1229 pass->shared_quad_state_list.back(), pass.get()); |
| 1196 | 1230 |
| 1197 OverlayCandidateList candidate_list; | 1231 OverlayCandidateList candidate_list; |
| 1198 RenderPassFilterList render_pass_filters; | 1232 RenderPassFilterList render_pass_filters; |
| 1199 RenderPassFilterList render_pass_background_filters; | 1233 RenderPassFilterList render_pass_background_filters; |
| 1200 overlay_processor_->ProcessForOverlays( | 1234 overlay_processor_->ProcessForOverlays( |
| 1201 resource_provider_.get(), pass.get(), render_pass_filters, | 1235 resource_provider_.get(), pass.get(), render_pass_filters, |
| 1202 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 1236 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 1203 &content_bounds_); | 1237 &damage_rect_, &content_bounds_); |
| 1204 ASSERT_EQ(1U, candidate_list.size()); | 1238 ASSERT_EQ(1U, candidate_list.size()); |
| 1205 EXPECT_EQ(-1, candidate_list[0].plane_z_order); | 1239 EXPECT_EQ(-1, candidate_list[0].plane_z_order); |
| 1206 // The overlay quad should have changed to a SOLID_COLOR quad. | 1240 // The overlay quad should have changed to a SOLID_COLOR quad. |
| 1207 EXPECT_EQ(pass->quad_list.front()->material, DrawQuad::SOLID_COLOR); | 1241 EXPECT_EQ(pass->quad_list.front()->material, DrawQuad::SOLID_COLOR); |
| 1208 } | 1242 } |
| 1209 | 1243 |
| 1210 // The first time an underlay is scheduled its damage must not be subtracted. | 1244 // The first time an underlay is scheduled its damage must not be subtracted. |
| 1211 TEST_F(UnderlayTest, InitialUnderlayDamageNotSubtracted) { | 1245 TEST_F(UnderlayTest, InitialUnderlayDamageNotSubtracted) { |
| 1212 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 1246 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 1213 CreateFullscreenCandidateQuad(resource_provider_.get(), | 1247 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 1214 pass->shared_quad_state_list.back(), | 1248 pass->shared_quad_state_list.back(), |
| 1215 pass.get()); | 1249 pass.get()); |
| 1216 | 1250 |
| 1217 damage_rect_ = kOverlayRect; | 1251 damage_rect_ = kOverlayRect; |
| 1218 | 1252 |
| 1219 OverlayCandidateList candidate_list; | 1253 OverlayCandidateList candidate_list; |
| 1220 RenderPassFilterList render_pass_filters; | 1254 RenderPassFilterList render_pass_filters; |
| 1221 RenderPassFilterList render_pass_background_filters; | 1255 RenderPassFilterList render_pass_background_filters; |
| 1222 overlay_processor_->ProcessForOverlays( | 1256 overlay_processor_->ProcessForOverlays( |
| 1223 resource_provider_.get(), pass.get(), render_pass_filters, | 1257 resource_provider_.get(), pass.get(), render_pass_filters, |
| 1224 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 1258 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 1225 &content_bounds_); | 1259 &damage_rect_, &content_bounds_); |
| 1226 | 1260 |
| 1227 EXPECT_EQ(kOverlayRect, damage_rect_); | 1261 EXPECT_EQ(kOverlayRect, damage_rect_); |
| 1228 } | 1262 } |
| 1229 | 1263 |
| 1230 // An identical underlay for two frames in a row means the damage can be | 1264 // An identical underlay for two frames in a row means the damage can be |
| 1231 // subtracted the second time. | 1265 // subtracted the second time. |
| 1232 TEST_F(UnderlayTest, DamageSubtractedForConsecutiveIdenticalUnderlays) { | 1266 TEST_F(UnderlayTest, DamageSubtractedForConsecutiveIdenticalUnderlays) { |
| 1233 for (int i = 0; i < 2; ++i) { | 1267 for (int i = 0; i < 2; ++i) { |
| 1234 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 1268 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 1235 CreateFullscreenCandidateQuad(resource_provider_.get(), | 1269 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 1236 pass->shared_quad_state_list.back(), | 1270 pass->shared_quad_state_list.back(), |
| 1237 pass.get()); | 1271 pass.get()); |
| 1238 | 1272 |
| 1239 damage_rect_ = kOverlayRect; | 1273 damage_rect_ = kOverlayRect; |
| 1240 | 1274 |
| 1241 // Add something behind it. | 1275 // Add something behind it. |
| 1242 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 1276 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 1243 pass->shared_quad_state_list.back(), pass.get()); | 1277 pass->shared_quad_state_list.back(), pass.get()); |
| 1244 | 1278 |
| 1245 OverlayCandidateList candidate_list; | 1279 OverlayCandidateList candidate_list; |
| 1246 RenderPassFilterList render_pass_filters; | 1280 RenderPassFilterList render_pass_filters; |
| 1247 RenderPassFilterList render_pass_background_filters; | 1281 RenderPassFilterList render_pass_background_filters; |
| 1248 overlay_processor_->ProcessForOverlays( | 1282 overlay_processor_->ProcessForOverlays( |
| 1249 resource_provider_.get(), pass.get(), render_pass_filters, | 1283 resource_provider_.get(), pass.get(), render_pass_filters, |
| 1250 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 1284 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 1251 &content_bounds_); | 1285 &damage_rect_, &content_bounds_); |
| 1252 } | 1286 } |
| 1253 | 1287 |
| 1254 // The second time the same overlay rect is scheduled it will be subtracted | 1288 // The second time the same overlay rect is scheduled it will be subtracted |
| 1255 // from the damage rect. | 1289 // from the damage rect. |
| 1256 EXPECT_TRUE(damage_rect_.IsEmpty()); | 1290 EXPECT_TRUE(damage_rect_.IsEmpty()); |
| 1257 } | 1291 } |
| 1258 | 1292 |
| 1259 // Underlay damage can only be subtracted if the previous frame's underlay | 1293 // Underlay damage can only be subtracted if the previous frame's underlay |
| 1260 // was the same rect. | 1294 // was the same rect. |
| 1261 TEST_F(UnderlayTest, DamageNotSubtractedForNonIdenticalConsecutiveUnderlays) { | 1295 TEST_F(UnderlayTest, DamageNotSubtractedForNonIdenticalConsecutiveUnderlays) { |
| 1262 gfx::Rect overlay_rects[] = {kOverlayBottomRightRect, kOverlayRect}; | 1296 gfx::Rect overlay_rects[] = {kOverlayBottomRightRect, kOverlayRect}; |
| 1263 for (int i = 0; i < 2; ++i) { | 1297 for (int i = 0; i < 2; ++i) { |
| 1264 output_surface_->GetOverlayCandidateValidator()->SetExpectedRect( | 1298 output_surface_->GetOverlayCandidateValidator()->SetExpectedRect( |
| 1265 gfx::RectF(overlay_rects[i])); | 1299 gfx::RectF(overlay_rects[i])); |
| 1266 | 1300 |
| 1267 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 1301 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 1268 | 1302 |
| 1269 CreateCandidateQuadAt(resource_provider_.get(), | 1303 CreateCandidateQuadAt(resource_provider_.get(), |
| 1270 pass->shared_quad_state_list.back(), pass.get(), | 1304 pass->shared_quad_state_list.back(), pass.get(), |
| 1271 overlay_rects[i]); | 1305 overlay_rects[i]); |
| 1272 | 1306 |
| 1273 damage_rect_ = overlay_rects[i]; | 1307 damage_rect_ = overlay_rects[i]; |
| 1274 | 1308 |
| 1275 OverlayCandidateList candidate_list; | 1309 OverlayCandidateList candidate_list; |
| 1276 RenderPassFilterList render_pass_filters; | 1310 RenderPassFilterList render_pass_filters; |
| 1277 RenderPassFilterList render_pass_background_filters; | 1311 RenderPassFilterList render_pass_background_filters; |
| 1278 overlay_processor_->ProcessForOverlays( | 1312 overlay_processor_->ProcessForOverlays( |
| 1279 resource_provider_.get(), pass.get(), render_pass_filters, | 1313 resource_provider_.get(), pass.get(), render_pass_filters, |
| 1280 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 1314 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 1281 &content_bounds_); | 1315 &damage_rect_, &content_bounds_); |
| 1282 | 1316 |
| 1283 EXPECT_EQ(overlay_rects[i], damage_rect_); | 1317 EXPECT_EQ(overlay_rects[i], damage_rect_); |
| 1284 } | 1318 } |
| 1285 } | 1319 } |
| 1286 | 1320 |
| 1287 TEST_F(UnderlayTest, DamageNotSubtractedWhenQuadsAboveOverlap) { | 1321 TEST_F(UnderlayTest, DamageNotSubtractedWhenQuadsAboveOverlap) { |
| 1288 for (int i = 0; i < 2; ++i) { | 1322 for (int i = 0; i < 2; ++i) { |
| 1289 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 1323 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 1290 // Add an overlapping quad above the candidate. | 1324 // Add an overlapping quad above the candidate. |
| 1291 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 1325 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 1292 pass->shared_quad_state_list.back(), pass.get()); | 1326 pass->shared_quad_state_list.back(), pass.get()); |
| 1293 CreateFullscreenCandidateQuad(resource_provider_.get(), | 1327 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 1294 pass->shared_quad_state_list.back(), | 1328 pass->shared_quad_state_list.back(), |
| 1295 pass.get()); | 1329 pass.get()); |
| 1296 | 1330 |
| 1297 damage_rect_ = kOverlayRect; | 1331 damage_rect_ = kOverlayRect; |
| 1298 | 1332 |
| 1299 OverlayCandidateList candidate_list; | 1333 OverlayCandidateList candidate_list; |
| 1300 RenderPassFilterList render_pass_filters; | 1334 RenderPassFilterList render_pass_filters; |
| 1301 RenderPassFilterList render_pass_background_filters; | 1335 RenderPassFilterList render_pass_background_filters; |
| 1302 overlay_processor_->ProcessForOverlays( | 1336 overlay_processor_->ProcessForOverlays( |
| 1303 resource_provider_.get(), pass.get(), render_pass_filters, | 1337 resource_provider_.get(), pass.get(), render_pass_filters, |
| 1304 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 1338 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 1305 &content_bounds_); | 1339 &damage_rect_, &content_bounds_); |
| 1306 } | 1340 } |
| 1307 | 1341 |
| 1308 EXPECT_EQ(kOverlayRect, damage_rect_); | 1342 EXPECT_EQ(kOverlayRect, damage_rect_); |
| 1309 } | 1343 } |
| 1310 | 1344 |
| 1311 TEST_F(UnderlayTest, DamageSubtractedWhenQuadsAboveDontOverlap) { | 1345 TEST_F(UnderlayTest, DamageSubtractedWhenQuadsAboveDontOverlap) { |
| 1312 output_surface_->GetOverlayCandidateValidator()->SetExpectedRect( | 1346 output_surface_->GetOverlayCandidateValidator()->SetExpectedRect( |
| 1313 gfx::RectF(kOverlayBottomRightRect)); | 1347 gfx::RectF(kOverlayBottomRightRect)); |
| 1314 | 1348 |
| 1315 for (int i = 0; i < 2; ++i) { | 1349 for (int i = 0; i < 2; ++i) { |
| 1316 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 1350 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 1317 // Add a non-overlapping quad above the candidate. | 1351 // Add a non-overlapping quad above the candidate. |
| 1318 CreateOpaqueQuadAt(resource_provider_.get(), | 1352 CreateOpaqueQuadAt(resource_provider_.get(), |
| 1319 pass->shared_quad_state_list.back(), pass.get(), | 1353 pass->shared_quad_state_list.back(), pass.get(), |
| 1320 kOverlayTopLeftRect); | 1354 kOverlayTopLeftRect); |
| 1321 CreateCandidateQuadAt(resource_provider_.get(), | 1355 CreateCandidateQuadAt(resource_provider_.get(), |
| 1322 pass->shared_quad_state_list.back(), pass.get(), | 1356 pass->shared_quad_state_list.back(), pass.get(), |
| 1323 kOverlayBottomRightRect); | 1357 kOverlayBottomRightRect); |
| 1324 | 1358 |
| 1325 damage_rect_ = kOverlayBottomRightRect; | 1359 damage_rect_ = kOverlayBottomRightRect; |
| 1326 | 1360 |
| 1327 OverlayCandidateList candidate_list; | 1361 OverlayCandidateList candidate_list; |
| 1328 RenderPassFilterList render_pass_filters; | 1362 RenderPassFilterList render_pass_filters; |
| 1329 RenderPassFilterList render_pass_background_filters; | 1363 RenderPassFilterList render_pass_background_filters; |
| 1330 overlay_processor_->ProcessForOverlays( | 1364 overlay_processor_->ProcessForOverlays( |
| 1331 resource_provider_.get(), pass.get(), render_pass_filters, | 1365 resource_provider_.get(), pass.get(), render_pass_filters, |
| 1332 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 1366 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 1333 &content_bounds_); | 1367 &damage_rect_, &content_bounds_); |
| 1334 } | 1368 } |
| 1335 | 1369 |
| 1336 EXPECT_TRUE(damage_rect_.IsEmpty()); | 1370 EXPECT_TRUE(damage_rect_.IsEmpty()); |
| 1337 } | 1371 } |
| 1338 | 1372 |
| 1339 TEST_F(UnderlayCastTest, NoOverlayContentBounds) { | 1373 TEST_F(UnderlayCastTest, NoOverlayContentBounds) { |
| 1340 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 1374 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 1341 | 1375 |
| 1342 CreateOpaqueQuadAt(resource_provider_.get(), | 1376 CreateOpaqueQuadAt(resource_provider_.get(), |
| 1343 pass->shared_quad_state_list.back(), pass.get(), | 1377 pass->shared_quad_state_list.back(), pass.get(), |
| 1344 kOverlayTopLeftRect); | 1378 kOverlayTopLeftRect); |
| 1345 | 1379 |
| 1346 OverlayCandidateList candidate_list; | 1380 OverlayCandidateList candidate_list; |
| 1347 RenderPassFilterList render_pass_filters; | 1381 RenderPassFilterList render_pass_filters; |
| 1348 RenderPassFilterList render_pass_background_filters; | 1382 RenderPassFilterList render_pass_background_filters; |
| 1349 overlay_processor_->ProcessForOverlays( | 1383 overlay_processor_->ProcessForOverlays( |
| 1350 resource_provider_.get(), pass.get(), render_pass_filters, | 1384 resource_provider_.get(), pass.get(), render_pass_filters, |
| 1351 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 1385 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 1352 &content_bounds_); | 1386 &damage_rect_, &content_bounds_); |
| 1353 EXPECT_EQ(0U, content_bounds_.size()); | 1387 EXPECT_EQ(0U, content_bounds_.size()); |
| 1354 } | 1388 } |
| 1355 | 1389 |
| 1356 TEST_F(UnderlayCastTest, FullScreenOverlayContentBounds) { | 1390 TEST_F(UnderlayCastTest, FullScreenOverlayContentBounds) { |
| 1357 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 1391 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 1358 CreateCandidateQuadAt(resource_provider_.get(), | 1392 CreateCandidateQuadAt(resource_provider_.get(), |
| 1359 pass->shared_quad_state_list.back(), pass.get(), | 1393 pass->shared_quad_state_list.back(), pass.get(), |
| 1360 kOverlayRect); | 1394 kOverlayRect); |
| 1361 | 1395 |
| 1362 OverlayCandidateList candidate_list; | 1396 OverlayCandidateList candidate_list; |
| 1363 RenderPassFilterList render_pass_filters; | 1397 RenderPassFilterList render_pass_filters; |
| 1364 RenderPassFilterList render_pass_background_filters; | 1398 RenderPassFilterList render_pass_background_filters; |
| 1365 overlay_processor_->ProcessForOverlays( | 1399 overlay_processor_->ProcessForOverlays( |
| 1366 resource_provider_.get(), pass.get(), render_pass_filters, | 1400 resource_provider_.get(), pass.get(), render_pass_filters, |
| 1367 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 1401 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 1368 &content_bounds_); | 1402 &damage_rect_, &content_bounds_); |
| 1369 | 1403 |
| 1370 EXPECT_EQ(1U, content_bounds_.size()); | 1404 EXPECT_EQ(1U, content_bounds_.size()); |
| 1371 EXPECT_TRUE(content_bounds_[0].IsEmpty()); | 1405 EXPECT_TRUE(content_bounds_[0].IsEmpty()); |
| 1372 } | 1406 } |
| 1373 | 1407 |
| 1374 TEST_F(UnderlayCastTest, BlackOutsideOverlayContentBounds) { | 1408 TEST_F(UnderlayCastTest, BlackOutsideOverlayContentBounds) { |
| 1375 output_surface_->GetOverlayCandidateValidator()->SetExpectedRect( | 1409 output_surface_->GetOverlayCandidateValidator()->SetExpectedRect( |
| 1376 gfx::RectF(kOverlayBottomRightRect)); | 1410 gfx::RectF(kOverlayBottomRightRect)); |
| 1377 | 1411 |
| 1378 const gfx::Rect kLeftSide(0, 0, 128, 256); | 1412 const gfx::Rect kLeftSide(0, 0, 128, 256); |
| 1379 const gfx::Rect kTopRight(128, 0, 128, 128); | 1413 const gfx::Rect kTopRight(128, 0, 128, 128); |
| 1380 | 1414 |
| 1381 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 1415 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 1382 CreateCandidateQuadAt(resource_provider_.get(), | 1416 CreateCandidateQuadAt(resource_provider_.get(), |
| 1383 pass->shared_quad_state_list.back(), pass.get(), | 1417 pass->shared_quad_state_list.back(), pass.get(), |
| 1384 kOverlayBottomRightRect); | 1418 kOverlayBottomRightRect); |
| 1385 CreateOpaqueQuadAt(resource_provider_.get(), | 1419 CreateOpaqueQuadAt(resource_provider_.get(), |
| 1386 pass->shared_quad_state_list.back(), pass.get(), kLeftSide, | 1420 pass->shared_quad_state_list.back(), pass.get(), kLeftSide, |
| 1387 SK_ColorBLACK); | 1421 SK_ColorBLACK); |
| 1388 CreateOpaqueQuadAt(resource_provider_.get(), | 1422 CreateOpaqueQuadAt(resource_provider_.get(), |
| 1389 pass->shared_quad_state_list.back(), pass.get(), kTopRight, | 1423 pass->shared_quad_state_list.back(), pass.get(), kTopRight, |
| 1390 SK_ColorBLACK); | 1424 SK_ColorBLACK); |
| 1391 | 1425 |
| 1392 OverlayCandidateList candidate_list; | 1426 OverlayCandidateList candidate_list; |
| 1393 RenderPassFilterList render_pass_filters; | 1427 RenderPassFilterList render_pass_filters; |
| 1394 RenderPassFilterList render_pass_background_filters; | 1428 RenderPassFilterList render_pass_background_filters; |
| 1395 overlay_processor_->ProcessForOverlays( | 1429 overlay_processor_->ProcessForOverlays( |
| 1396 resource_provider_.get(), pass.get(), render_pass_filters, | 1430 resource_provider_.get(), pass.get(), render_pass_filters, |
| 1397 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 1431 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 1398 &content_bounds_); | 1432 &damage_rect_, &content_bounds_); |
| 1399 | 1433 |
| 1400 EXPECT_EQ(1U, content_bounds_.size()); | 1434 EXPECT_EQ(1U, content_bounds_.size()); |
| 1401 EXPECT_TRUE(content_bounds_[0].IsEmpty()); | 1435 EXPECT_TRUE(content_bounds_[0].IsEmpty()); |
| 1402 } | 1436 } |
| 1403 | 1437 |
| 1404 TEST_F(UnderlayCastTest, OverlayOccludedContentBounds) { | 1438 TEST_F(UnderlayCastTest, OverlayOccludedContentBounds) { |
| 1405 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 1439 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 1406 CreateOpaqueQuadAt(resource_provider_.get(), | 1440 CreateOpaqueQuadAt(resource_provider_.get(), |
| 1407 pass->shared_quad_state_list.back(), pass.get(), | 1441 pass->shared_quad_state_list.back(), pass.get(), |
| 1408 kOverlayTopLeftRect); | 1442 kOverlayTopLeftRect); |
| 1409 CreateCandidateQuadAt(resource_provider_.get(), | 1443 CreateCandidateQuadAt(resource_provider_.get(), |
| 1410 pass->shared_quad_state_list.back(), pass.get(), | 1444 pass->shared_quad_state_list.back(), pass.get(), |
| 1411 kOverlayRect); | 1445 kOverlayRect); |
| 1412 | 1446 |
| 1413 OverlayCandidateList candidate_list; | 1447 OverlayCandidateList candidate_list; |
| 1414 RenderPassFilterList render_pass_filters; | 1448 RenderPassFilterList render_pass_filters; |
| 1415 RenderPassFilterList render_pass_background_filters; | 1449 RenderPassFilterList render_pass_background_filters; |
| 1416 overlay_processor_->ProcessForOverlays( | 1450 overlay_processor_->ProcessForOverlays( |
| 1417 resource_provider_.get(), pass.get(), render_pass_filters, | 1451 resource_provider_.get(), pass.get(), render_pass_filters, |
| 1418 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 1452 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 1419 &content_bounds_); | 1453 &damage_rect_, &content_bounds_); |
| 1420 | 1454 |
| 1421 EXPECT_EQ(1U, content_bounds_.size()); | 1455 EXPECT_EQ(1U, content_bounds_.size()); |
| 1422 EXPECT_EQ(kOverlayTopLeftRect, content_bounds_[0]); | 1456 EXPECT_EQ(kOverlayTopLeftRect, content_bounds_[0]); |
| 1423 } | 1457 } |
| 1424 | 1458 |
| 1425 TEST_F(UnderlayCastTest, OverlayOccludedUnionContentBounds) { | 1459 TEST_F(UnderlayCastTest, OverlayOccludedUnionContentBounds) { |
| 1426 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 1460 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 1427 CreateOpaqueQuadAt(resource_provider_.get(), | 1461 CreateOpaqueQuadAt(resource_provider_.get(), |
| 1428 pass->shared_quad_state_list.back(), pass.get(), | 1462 pass->shared_quad_state_list.back(), pass.get(), |
| 1429 kOverlayTopLeftRect); | 1463 kOverlayTopLeftRect); |
| 1430 CreateOpaqueQuadAt(resource_provider_.get(), | 1464 CreateOpaqueQuadAt(resource_provider_.get(), |
| 1431 pass->shared_quad_state_list.back(), pass.get(), | 1465 pass->shared_quad_state_list.back(), pass.get(), |
| 1432 kOverlayBottomRightRect); | 1466 kOverlayBottomRightRect); |
| 1433 CreateCandidateQuadAt(resource_provider_.get(), | 1467 CreateCandidateQuadAt(resource_provider_.get(), |
| 1434 pass->shared_quad_state_list.back(), pass.get(), | 1468 pass->shared_quad_state_list.back(), pass.get(), |
| 1435 kOverlayRect); | 1469 kOverlayRect); |
| 1436 | 1470 |
| 1437 OverlayCandidateList candidate_list; | 1471 OverlayCandidateList candidate_list; |
| 1438 RenderPassFilterList render_pass_filters; | 1472 RenderPassFilterList render_pass_filters; |
| 1439 RenderPassFilterList render_pass_background_filters; | 1473 RenderPassFilterList render_pass_background_filters; |
| 1440 overlay_processor_->ProcessForOverlays( | 1474 overlay_processor_->ProcessForOverlays( |
| 1441 resource_provider_.get(), pass.get(), render_pass_filters, | 1475 resource_provider_.get(), pass.get(), render_pass_filters, |
| 1442 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 1476 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 1443 &content_bounds_); | 1477 &damage_rect_, &content_bounds_); |
| 1444 | 1478 |
| 1445 EXPECT_EQ(1U, content_bounds_.size()); | 1479 EXPECT_EQ(1U, content_bounds_.size()); |
| 1446 EXPECT_EQ(kOverlayRect, content_bounds_[0]); | 1480 EXPECT_EQ(kOverlayRect, content_bounds_[0]); |
| 1447 } | 1481 } |
| 1448 | 1482 |
| 1449 TEST_F(UnderlayCastTest, RoundOverlayContentBounds) { | 1483 TEST_F(UnderlayCastTest, RoundOverlayContentBounds) { |
| 1450 // Check rounding behaviour on overlay quads. Be conservative (content | 1484 // Check rounding behaviour on overlay quads. Be conservative (content |
| 1451 // potentially visible on boundary). | 1485 // potentially visible on boundary). |
| 1452 const gfx::Rect overlay_rect(1, 1, 8, 8); | 1486 const gfx::Rect overlay_rect(1, 1, 8, 8); |
| 1453 output_surface_->GetOverlayCandidateValidator()->SetExpectedRect( | 1487 output_surface_->GetOverlayCandidateValidator()->SetExpectedRect( |
| 1454 gfx::RectF(1.5f, 1.5f, 8, 8)); | 1488 gfx::RectF(1.5f, 1.5f, 8, 8)); |
| 1455 | 1489 |
| 1456 gfx::Transform transform; | 1490 gfx::Transform transform; |
| 1457 transform.Translate(0.5f, 0.5f); | 1491 transform.Translate(0.5f, 0.5f); |
| 1458 | 1492 |
| 1459 std::unique_ptr<RenderPass> pass = CreateRenderPassWithTransform(transform); | 1493 std::unique_ptr<RenderPass> pass = CreateRenderPassWithTransform(transform); |
| 1460 CreateCandidateQuadAt(resource_provider_.get(), | 1494 CreateCandidateQuadAt(resource_provider_.get(), |
| 1461 pass->shared_quad_state_list.back(), pass.get(), | 1495 pass->shared_quad_state_list.back(), pass.get(), |
| 1462 overlay_rect); | 1496 overlay_rect); |
| 1463 CreateOpaqueQuadAt(resource_provider_.get(), | 1497 CreateOpaqueQuadAt(resource_provider_.get(), |
| 1464 pass->shared_quad_state_list.back(), pass.get(), | 1498 pass->shared_quad_state_list.back(), pass.get(), |
| 1465 gfx::Rect(0, 0, 10, 10), SK_ColorWHITE); | 1499 gfx::Rect(0, 0, 10, 10), SK_ColorWHITE); |
| 1466 | 1500 |
| 1467 OverlayCandidateList candidate_list; | 1501 OverlayCandidateList candidate_list; |
| 1468 RenderPassFilterList render_pass_filters; | 1502 RenderPassFilterList render_pass_filters; |
| 1469 RenderPassFilterList render_pass_background_filters; | 1503 RenderPassFilterList render_pass_background_filters; |
| 1470 overlay_processor_->ProcessForOverlays( | 1504 overlay_processor_->ProcessForOverlays( |
| 1471 resource_provider_.get(), pass.get(), render_pass_filters, | 1505 resource_provider_.get(), pass.get(), render_pass_filters, |
| 1472 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 1506 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 1473 &content_bounds_); | 1507 &damage_rect_, &content_bounds_); |
| 1474 | 1508 |
| 1475 EXPECT_EQ(1U, content_bounds_.size()); | 1509 EXPECT_EQ(1U, content_bounds_.size()); |
| 1476 EXPECT_EQ(gfx::Rect(0, 0, 11, 11), content_bounds_[0]); | 1510 EXPECT_EQ(gfx::Rect(0, 0, 11, 11), content_bounds_[0]); |
| 1477 } | 1511 } |
| 1478 | 1512 |
| 1479 TEST_F(UnderlayCastTest, RoundContentBounds) { | 1513 TEST_F(UnderlayCastTest, RoundContentBounds) { |
| 1480 // Check rounding behaviour on content quads (bounds should be enclosing | 1514 // Check rounding behaviour on content quads (bounds should be enclosing |
| 1481 // rect). | 1515 // rect). |
| 1482 gfx::Rect overlay_rect = kOverlayRect; | 1516 gfx::Rect overlay_rect = kOverlayRect; |
| 1483 overlay_rect.Inset(0, 0, 1, 1); | 1517 overlay_rect.Inset(0, 0, 1, 1); |
| 1484 output_surface_->GetOverlayCandidateValidator()->SetExpectedRect( | 1518 output_surface_->GetOverlayCandidateValidator()->SetExpectedRect( |
| 1485 gfx::RectF(0.5f, 0.5f, 255, 255)); | 1519 gfx::RectF(0.5f, 0.5f, 255, 255)); |
| 1486 | 1520 |
| 1487 gfx::Transform transform; | 1521 gfx::Transform transform; |
| 1488 transform.Translate(0.5f, 0.5f); | 1522 transform.Translate(0.5f, 0.5f); |
| 1489 | 1523 |
| 1490 std::unique_ptr<RenderPass> pass = CreateRenderPassWithTransform(transform); | 1524 std::unique_ptr<RenderPass> pass = CreateRenderPassWithTransform(transform); |
| 1491 CreateCandidateQuadAt(resource_provider_.get(), | 1525 CreateCandidateQuadAt(resource_provider_.get(), |
| 1492 pass->shared_quad_state_list.back(), pass.get(), | 1526 pass->shared_quad_state_list.back(), pass.get(), |
| 1493 overlay_rect); | 1527 overlay_rect); |
| 1494 CreateOpaqueQuadAt(resource_provider_.get(), | 1528 CreateOpaqueQuadAt(resource_provider_.get(), |
| 1495 pass->shared_quad_state_list.back(), pass.get(), | 1529 pass->shared_quad_state_list.back(), pass.get(), |
| 1496 gfx::Rect(0, 0, 255, 255), SK_ColorWHITE); | 1530 gfx::Rect(0, 0, 255, 255), SK_ColorWHITE); |
| 1497 | 1531 |
| 1498 OverlayCandidateList candidate_list; | 1532 OverlayCandidateList candidate_list; |
| 1499 RenderPassFilterList render_pass_filters; | 1533 RenderPassFilterList render_pass_filters; |
| 1500 RenderPassFilterList render_pass_background_filters; | 1534 RenderPassFilterList render_pass_background_filters; |
| 1501 overlay_processor_->ProcessForOverlays( | 1535 overlay_processor_->ProcessForOverlays( |
| 1502 resource_provider_.get(), pass.get(), render_pass_filters, | 1536 resource_provider_.get(), pass.get(), render_pass_filters, |
| 1503 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_, | 1537 render_pass_background_filters, &candidate_list, nullptr, nullptr, |
| 1504 &content_bounds_); | 1538 &damage_rect_, &content_bounds_); |
| 1505 | 1539 |
| 1506 EXPECT_EQ(1U, content_bounds_.size()); | 1540 EXPECT_EQ(1U, content_bounds_.size()); |
| 1507 EXPECT_EQ(kOverlayRect, content_bounds_[0]); | 1541 EXPECT_EQ(kOverlayRect, content_bounds_[0]); |
| 1508 } | 1542 } |
| 1509 | 1543 |
| 1510 OverlayCandidateList BackbufferOverlayList(const RenderPass* root_render_pass) { | 1544 OverlayCandidateList BackbufferOverlayList(const RenderPass* root_render_pass) { |
| 1511 OverlayCandidateList list; | 1545 OverlayCandidateList list; |
| 1512 OverlayCandidate output_surface_plane; | 1546 OverlayCandidate output_surface_plane; |
| 1513 output_surface_plane.display_rect = gfx::RectF(root_render_pass->output_rect); | 1547 output_surface_plane.display_rect = gfx::RectF(root_render_pass->output_rect); |
| 1514 output_surface_plane.quad_rect_in_target_space = | 1548 output_surface_plane.quad_rect_in_target_space = |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1527 pass->shared_quad_state_list.back() | 1561 pass->shared_quad_state_list.back() |
| 1528 ->quad_to_target_transform.RotateAboutZAxis(45.f); | 1562 ->quad_to_target_transform.RotateAboutZAxis(45.f); |
| 1529 | 1563 |
| 1530 gfx::Rect damage_rect; | 1564 gfx::Rect damage_rect; |
| 1531 CALayerOverlayList ca_layer_list; | 1565 CALayerOverlayList ca_layer_list; |
| 1532 OverlayCandidateList overlay_list(BackbufferOverlayList(pass.get())); | 1566 OverlayCandidateList overlay_list(BackbufferOverlayList(pass.get())); |
| 1533 RenderPassFilterList render_pass_filters; | 1567 RenderPassFilterList render_pass_filters; |
| 1534 RenderPassFilterList render_pass_background_filters; | 1568 RenderPassFilterList render_pass_background_filters; |
| 1535 overlay_processor_->ProcessForOverlays( | 1569 overlay_processor_->ProcessForOverlays( |
| 1536 resource_provider_.get(), pass.get(), render_pass_filters, | 1570 resource_provider_.get(), pass.get(), render_pass_filters, |
| 1537 render_pass_background_filters, &overlay_list, &ca_layer_list, | 1571 render_pass_background_filters, &overlay_list, &ca_layer_list, nullptr, |
| 1538 &damage_rect_, &content_bounds_); | 1572 &damage_rect_, &content_bounds_); |
| 1539 EXPECT_EQ(gfx::Rect(), damage_rect); | 1573 EXPECT_EQ(gfx::Rect(), damage_rect); |
| 1540 EXPECT_EQ(0U, overlay_list.size()); | 1574 EXPECT_EQ(0U, overlay_list.size()); |
| 1541 EXPECT_EQ(1U, ca_layer_list.size()); | 1575 EXPECT_EQ(1U, ca_layer_list.size()); |
| 1542 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count()); | 1576 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count()); |
| 1543 } | 1577 } |
| 1544 | 1578 |
| 1545 TEST_F(CALayerOverlayTest, ThreeDTransform) { | 1579 TEST_F(CALayerOverlayTest, ThreeDTransform) { |
| 1546 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 1580 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 1547 CreateFullscreenCandidateQuad(resource_provider_.get(), | 1581 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 1548 pass->shared_quad_state_list.back(), | 1582 pass->shared_quad_state_list.back(), |
| 1549 pass.get()); | 1583 pass.get()); |
| 1550 pass->shared_quad_state_list.back() | 1584 pass->shared_quad_state_list.back() |
| 1551 ->quad_to_target_transform.RotateAboutXAxis(45.f); | 1585 ->quad_to_target_transform.RotateAboutXAxis(45.f); |
| 1552 | 1586 |
| 1553 gfx::Rect damage_rect; | 1587 gfx::Rect damage_rect; |
| 1554 CALayerOverlayList ca_layer_list; | 1588 CALayerOverlayList ca_layer_list; |
| 1555 OverlayCandidateList overlay_list(BackbufferOverlayList(pass.get())); | 1589 OverlayCandidateList overlay_list(BackbufferOverlayList(pass.get())); |
| 1556 RenderPassFilterList render_pass_filters; | 1590 RenderPassFilterList render_pass_filters; |
| 1557 RenderPassFilterList render_pass_background_filters; | 1591 RenderPassFilterList render_pass_background_filters; |
| 1558 overlay_processor_->ProcessForOverlays( | 1592 overlay_processor_->ProcessForOverlays( |
| 1559 resource_provider_.get(), pass.get(), render_pass_filters, | 1593 resource_provider_.get(), pass.get(), render_pass_filters, |
| 1560 render_pass_background_filters, &overlay_list, &ca_layer_list, | 1594 render_pass_background_filters, &overlay_list, &ca_layer_list, nullptr, |
| 1561 &damage_rect_, &content_bounds_); | 1595 &damage_rect_, &content_bounds_); |
| 1562 EXPECT_EQ(0U, overlay_list.size()); | 1596 EXPECT_EQ(0U, overlay_list.size()); |
| 1563 EXPECT_EQ(1U, ca_layer_list.size()); | 1597 EXPECT_EQ(1U, ca_layer_list.size()); |
| 1564 gfx::Transform expected_transform; | 1598 gfx::Transform expected_transform; |
| 1565 expected_transform.RotateAboutXAxis(45.f); | 1599 expected_transform.RotateAboutXAxis(45.f); |
| 1566 gfx::Transform actual_transform(ca_layer_list.back().shared_state->transform); | 1600 gfx::Transform actual_transform(ca_layer_list.back().shared_state->transform); |
| 1567 EXPECT_EQ(expected_transform.ToString(), actual_transform.ToString()); | 1601 EXPECT_EQ(expected_transform.ToString(), actual_transform.ToString()); |
| 1568 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count()); | 1602 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count()); |
| 1569 } | 1603 } |
| 1570 | 1604 |
| 1571 TEST_F(CALayerOverlayTest, AllowContainingClip) { | 1605 TEST_F(CALayerOverlayTest, AllowContainingClip) { |
| 1572 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 1606 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 1573 CreateFullscreenCandidateQuad(resource_provider_.get(), | 1607 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 1574 pass->shared_quad_state_list.back(), | 1608 pass->shared_quad_state_list.back(), |
| 1575 pass.get()); | 1609 pass.get()); |
| 1576 pass->shared_quad_state_list.back()->is_clipped = true; | 1610 pass->shared_quad_state_list.back()->is_clipped = true; |
| 1577 pass->shared_quad_state_list.back()->clip_rect = kOverlayRect; | 1611 pass->shared_quad_state_list.back()->clip_rect = kOverlayRect; |
| 1578 | 1612 |
| 1579 gfx::Rect damage_rect; | 1613 gfx::Rect damage_rect; |
| 1580 CALayerOverlayList ca_layer_list; | 1614 CALayerOverlayList ca_layer_list; |
| 1581 OverlayCandidateList overlay_list(BackbufferOverlayList(pass.get())); | 1615 OverlayCandidateList overlay_list(BackbufferOverlayList(pass.get())); |
| 1582 RenderPassFilterList render_pass_filters; | 1616 RenderPassFilterList render_pass_filters; |
| 1583 RenderPassFilterList render_pass_background_filters; | 1617 RenderPassFilterList render_pass_background_filters; |
| 1584 overlay_processor_->ProcessForOverlays( | 1618 overlay_processor_->ProcessForOverlays( |
| 1585 resource_provider_.get(), pass.get(), render_pass_filters, | 1619 resource_provider_.get(), pass.get(), render_pass_filters, |
| 1586 render_pass_background_filters, &overlay_list, &ca_layer_list, | 1620 render_pass_background_filters, &overlay_list, &ca_layer_list, nullptr, |
| 1587 &damage_rect_, &content_bounds_); | 1621 &damage_rect_, &content_bounds_); |
| 1588 EXPECT_EQ(gfx::Rect(), damage_rect); | 1622 EXPECT_EQ(gfx::Rect(), damage_rect); |
| 1589 EXPECT_EQ(0U, overlay_list.size()); | 1623 EXPECT_EQ(0U, overlay_list.size()); |
| 1590 EXPECT_EQ(1U, ca_layer_list.size()); | 1624 EXPECT_EQ(1U, ca_layer_list.size()); |
| 1591 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count()); | 1625 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count()); |
| 1592 } | 1626 } |
| 1593 | 1627 |
| 1594 TEST_F(CALayerOverlayTest, NontrivialClip) { | 1628 TEST_F(CALayerOverlayTest, NontrivialClip) { |
| 1595 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 1629 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 1596 CreateFullscreenCandidateQuad(resource_provider_.get(), | 1630 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 1597 pass->shared_quad_state_list.back(), | 1631 pass->shared_quad_state_list.back(), |
| 1598 pass.get()); | 1632 pass.get()); |
| 1599 pass->shared_quad_state_list.back()->is_clipped = true; | 1633 pass->shared_quad_state_list.back()->is_clipped = true; |
| 1600 pass->shared_quad_state_list.back()->clip_rect = gfx::Rect(64, 64, 128, 128); | 1634 pass->shared_quad_state_list.back()->clip_rect = gfx::Rect(64, 64, 128, 128); |
| 1601 | 1635 |
| 1602 gfx::Rect damage_rect; | 1636 gfx::Rect damage_rect; |
| 1603 CALayerOverlayList ca_layer_list; | 1637 CALayerOverlayList ca_layer_list; |
| 1604 OverlayCandidateList overlay_list(BackbufferOverlayList(pass.get())); | 1638 OverlayCandidateList overlay_list(BackbufferOverlayList(pass.get())); |
| 1605 RenderPassFilterList render_pass_filters; | 1639 RenderPassFilterList render_pass_filters; |
| 1606 RenderPassFilterList render_pass_background_filters; | 1640 RenderPassFilterList render_pass_background_filters; |
| 1607 overlay_processor_->ProcessForOverlays( | 1641 overlay_processor_->ProcessForOverlays( |
| 1608 resource_provider_.get(), pass.get(), render_pass_filters, | 1642 resource_provider_.get(), pass.get(), render_pass_filters, |
| 1609 render_pass_background_filters, &overlay_list, &ca_layer_list, | 1643 render_pass_background_filters, &overlay_list, &ca_layer_list, nullptr, |
| 1610 &damage_rect_, &content_bounds_); | 1644 &damage_rect_, &content_bounds_); |
| 1611 EXPECT_EQ(gfx::Rect(), damage_rect); | 1645 EXPECT_EQ(gfx::Rect(), damage_rect); |
| 1612 EXPECT_EQ(0U, overlay_list.size()); | 1646 EXPECT_EQ(0U, overlay_list.size()); |
| 1613 EXPECT_EQ(1U, ca_layer_list.size()); | 1647 EXPECT_EQ(1U, ca_layer_list.size()); |
| 1614 EXPECT_TRUE(ca_layer_list.back().shared_state->is_clipped); | 1648 EXPECT_TRUE(ca_layer_list.back().shared_state->is_clipped); |
| 1615 EXPECT_EQ(gfx::RectF(64, 64, 128, 128), | 1649 EXPECT_EQ(gfx::RectF(64, 64, 128, 128), |
| 1616 ca_layer_list.back().shared_state->clip_rect); | 1650 ca_layer_list.back().shared_state->clip_rect); |
| 1617 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count()); | 1651 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count()); |
| 1618 } | 1652 } |
| 1619 | 1653 |
| 1620 TEST_F(CALayerOverlayTest, SkipTransparent) { | 1654 TEST_F(CALayerOverlayTest, SkipTransparent) { |
| 1621 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 1655 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 1622 CreateFullscreenCandidateQuad(resource_provider_.get(), | 1656 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 1623 pass->shared_quad_state_list.back(), | 1657 pass->shared_quad_state_list.back(), |
| 1624 pass.get()); | 1658 pass.get()); |
| 1625 pass->shared_quad_state_list.back()->opacity = 0; | 1659 pass->shared_quad_state_list.back()->opacity = 0; |
| 1626 | 1660 |
| 1627 gfx::Rect damage_rect; | 1661 gfx::Rect damage_rect; |
| 1628 CALayerOverlayList ca_layer_list; | 1662 CALayerOverlayList ca_layer_list; |
| 1629 OverlayCandidateList overlay_list(BackbufferOverlayList(pass.get())); | 1663 OverlayCandidateList overlay_list(BackbufferOverlayList(pass.get())); |
| 1630 RenderPassFilterList render_pass_filters; | 1664 RenderPassFilterList render_pass_filters; |
| 1631 RenderPassFilterList render_pass_background_filters; | 1665 RenderPassFilterList render_pass_background_filters; |
| 1632 overlay_processor_->ProcessForOverlays( | 1666 overlay_processor_->ProcessForOverlays( |
| 1633 resource_provider_.get(), pass.get(), render_pass_filters, | 1667 resource_provider_.get(), pass.get(), render_pass_filters, |
| 1634 render_pass_background_filters, &overlay_list, &ca_layer_list, | 1668 render_pass_background_filters, &overlay_list, &ca_layer_list, nullptr, |
| 1635 &damage_rect_, &content_bounds_); | 1669 &damage_rect_, &content_bounds_); |
| 1636 EXPECT_EQ(gfx::Rect(), damage_rect); | 1670 EXPECT_EQ(gfx::Rect(), damage_rect); |
| 1637 EXPECT_EQ(0U, overlay_list.size()); | 1671 EXPECT_EQ(0U, overlay_list.size()); |
| 1638 EXPECT_EQ(0U, ca_layer_list.size()); | 1672 EXPECT_EQ(0U, ca_layer_list.size()); |
| 1639 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count()); | 1673 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count()); |
| 1640 } | 1674 } |
| 1641 | 1675 |
| 1676 TEST_F(DCLayerOverlayTest, AllowNonAxisAlignedTransform) { |
| 1677 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 1678 CreateFullscreenCandidateYUVVideoQuad(resource_provider_.get(), |
| 1679 pass->shared_quad_state_list.back(), |
| 1680 pass.get()); |
| 1681 pass->shared_quad_state_list.back() |
| 1682 ->quad_to_target_transform.RotateAboutZAxis(45.f); |
| 1683 |
| 1684 gfx::Rect damage_rect; |
| 1685 DCLayerOverlayList dc_layer_list; |
| 1686 OverlayCandidateList overlay_list; |
| 1687 RenderPassFilterList render_pass_filters; |
| 1688 RenderPassFilterList render_pass_background_filters; |
| 1689 damage_rect_ = gfx::Rect(1, 1, 10, 10); |
| 1690 overlay_processor_->ProcessForOverlays( |
| 1691 resource_provider_.get(), pass.get(), render_pass_filters, |
| 1692 render_pass_background_filters, &overlay_list, nullptr, &dc_layer_list, |
| 1693 &damage_rect_, &content_bounds_); |
| 1694 EXPECT_EQ(gfx::Rect(), damage_rect); |
| 1695 EXPECT_EQ(0U, overlay_list.size()); |
| 1696 EXPECT_EQ(1U, dc_layer_list.size()); |
| 1697 EXPECT_EQ(1, dc_layer_list.back().shared_state->z_order); |
| 1698 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count()); |
| 1699 EXPECT_EQ(gfx::Rect(1, 1, 10, 10), damage_rect_); |
| 1700 } |
| 1701 |
| 1702 TEST_F(DCLayerOverlayTest, Occluded) { |
| 1703 { |
| 1704 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 1705 CreateOpaqueQuadAt(resource_provider_.get(), |
| 1706 pass->shared_quad_state_list.back(), pass.get(), |
| 1707 gfx::Rect(0, 2, 100, 100), SK_ColorWHITE); |
| 1708 CreateFullscreenCandidateYUVVideoQuad(resource_provider_.get(), |
| 1709 pass->shared_quad_state_list.back(), |
| 1710 pass.get()); |
| 1711 |
| 1712 gfx::Rect damage_rect; |
| 1713 DCLayerOverlayList dc_layer_list; |
| 1714 OverlayCandidateList overlay_list; |
| 1715 RenderPassFilterList render_pass_filters; |
| 1716 RenderPassFilterList render_pass_background_filters; |
| 1717 damage_rect_ = gfx::Rect(1, 1, 10, 10); |
| 1718 overlay_processor_->ProcessForOverlays( |
| 1719 resource_provider_.get(), pass.get(), render_pass_filters, |
| 1720 render_pass_background_filters, &overlay_list, nullptr, &dc_layer_list, |
| 1721 &damage_rect_, &content_bounds_); |
| 1722 EXPECT_EQ(gfx::Rect(), damage_rect); |
| 1723 EXPECT_EQ(0U, overlay_list.size()); |
| 1724 EXPECT_EQ(1U, dc_layer_list.size()); |
| 1725 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count()); |
| 1726 EXPECT_EQ(-1, dc_layer_list.back().shared_state->z_order); |
| 1727 // Entire underlay rect must be redrawn. |
| 1728 EXPECT_EQ(gfx::Rect(0, 0, 256, 256), damage_rect_); |
| 1729 } |
| 1730 { |
| 1731 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 1732 CreateOpaqueQuadAt(resource_provider_.get(), |
| 1733 pass->shared_quad_state_list.back(), pass.get(), |
| 1734 gfx::Rect(2, 2, 100, 100), SK_ColorWHITE); |
| 1735 CreateFullscreenCandidateYUVVideoQuad(resource_provider_.get(), |
| 1736 pass->shared_quad_state_list.back(), |
| 1737 pass.get()); |
| 1738 |
| 1739 gfx::Rect damage_rect; |
| 1740 DCLayerOverlayList dc_layer_list; |
| 1741 OverlayCandidateList overlay_list; |
| 1742 RenderPassFilterList render_pass_filters; |
| 1743 RenderPassFilterList render_pass_background_filters; |
| 1744 damage_rect_ = gfx::Rect(1, 1, 10, 10); |
| 1745 overlay_processor_->ProcessForOverlays( |
| 1746 resource_provider_.get(), pass.get(), render_pass_filters, |
| 1747 render_pass_background_filters, &overlay_list, nullptr, &dc_layer_list, |
| 1748 &damage_rect_, &content_bounds_); |
| 1749 EXPECT_EQ(gfx::Rect(), damage_rect); |
| 1750 EXPECT_EQ(0U, overlay_list.size()); |
| 1751 EXPECT_EQ(1U, dc_layer_list.size()); |
| 1752 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count()); |
| 1753 EXPECT_EQ(-1, dc_layer_list.back().shared_state->z_order); |
| 1754 // The underlay rectangle is the same, so the damage is contained within |
| 1755 // the combined occluding rects for this and the last frame. |
| 1756 EXPECT_EQ(gfx::Rect(1, 2, 10, 9), damage_rect_); |
| 1757 } |
| 1758 } |
| 1759 |
| 1760 TEST_F(DCLayerOverlayTest, DamageRect) { |
| 1761 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| 1762 CreateFullscreenCandidateYUVVideoQuad(resource_provider_.get(), |
| 1763 pass->shared_quad_state_list.back(), |
| 1764 pass.get()); |
| 1765 |
| 1766 gfx::Rect damage_rect; |
| 1767 DCLayerOverlayList dc_layer_list; |
| 1768 OverlayCandidateList overlay_list; |
| 1769 RenderPassFilterList render_pass_filters; |
| 1770 RenderPassFilterList render_pass_background_filters; |
| 1771 damage_rect_ = gfx::Rect(1, 1, 10, 10); |
| 1772 overlay_processor_->ProcessForOverlays( |
| 1773 resource_provider_.get(), pass.get(), render_pass_filters, |
| 1774 render_pass_background_filters, &overlay_list, nullptr, &dc_layer_list, |
| 1775 &damage_rect_, &content_bounds_); |
| 1776 EXPECT_EQ(gfx::Rect(), damage_rect); |
| 1777 EXPECT_EQ(0U, overlay_list.size()); |
| 1778 EXPECT_EQ(1U, dc_layer_list.size()); |
| 1779 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count()); |
| 1780 EXPECT_EQ(1, dc_layer_list.back().shared_state->z_order); |
| 1781 EXPECT_TRUE(damage_rect_.IsEmpty()); |
| 1782 } |
| 1783 |
| 1642 class OverlayInfoRendererGL : public GLRenderer { | 1784 class OverlayInfoRendererGL : public GLRenderer { |
| 1643 public: | 1785 public: |
| 1644 OverlayInfoRendererGL(const RendererSettings* settings, | 1786 OverlayInfoRendererGL(const RendererSettings* settings, |
| 1645 OutputSurface* output_surface, | 1787 OutputSurface* output_surface, |
| 1646 ResourceProvider* resource_provider) | 1788 ResourceProvider* resource_provider) |
| 1647 : GLRenderer(settings, output_surface, resource_provider, NULL, 0), | 1789 : GLRenderer(settings, output_surface, resource_provider, NULL, 0), |
| 1648 expect_overlays_(false) {} | 1790 expect_overlays_(false) {} |
| 1649 | 1791 |
| 1650 MOCK_METHOD2(DoDrawQuad, | 1792 MOCK_METHOD2(DoDrawQuad, |
| 1651 void(const DrawQuad* quad, const gfx::QuadF* draw_region)); | 1793 void(const DrawQuad* quad, const gfx::QuadF* draw_region)); |
| (...skipping 518 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2170 quad_ = pass_->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); | 2312 quad_ = pass_->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); |
| 2171 render_pass_id_ = 3; | 2313 render_pass_id_ = 3; |
| 2172 } | 2314 } |
| 2173 | 2315 |
| 2174 void ProcessForOverlays() { | 2316 void ProcessForOverlays() { |
| 2175 gfx::Rect damage_rect; | 2317 gfx::Rect damage_rect; |
| 2176 overlay_list_ = BackbufferOverlayList(pass_.get()); | 2318 overlay_list_ = BackbufferOverlayList(pass_.get()); |
| 2177 overlay_processor_->ProcessForOverlays( | 2319 overlay_processor_->ProcessForOverlays( |
| 2178 resource_provider_.get(), pass_.get(), render_pass_filters_, | 2320 resource_provider_.get(), pass_.get(), render_pass_filters_, |
| 2179 render_pass_background_filters_, &overlay_list_, &ca_layer_list_, | 2321 render_pass_background_filters_, &overlay_list_, &ca_layer_list_, |
| 2180 &damage_rect_, &content_bounds_); | 2322 nullptr, &damage_rect_, &content_bounds_); |
| 2181 } | 2323 } |
| 2182 std::unique_ptr<RenderPass> pass_; | 2324 std::unique_ptr<RenderPass> pass_; |
| 2183 RenderPassDrawQuad* quad_; | 2325 RenderPassDrawQuad* quad_; |
| 2184 int render_pass_id_; | 2326 int render_pass_id_; |
| 2185 FilterOperations filters_; | 2327 FilterOperations filters_; |
| 2186 FilterOperations background_filters_; | 2328 FilterOperations background_filters_; |
| 2187 RenderPassFilterList render_pass_filters_; | 2329 RenderPassFilterList render_pass_filters_; |
| 2188 RenderPassFilterList render_pass_background_filters_; | 2330 RenderPassFilterList render_pass_background_filters_; |
| 2189 CALayerOverlayList ca_layer_list_; | 2331 CALayerOverlayList ca_layer_list_; |
| 2190 OverlayCandidateList overlay_list_; | 2332 OverlayCandidateList overlay_list_; |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2291 kOverlayRect, render_pass_id_, 2, gfx::RectF(), gfx::Size(), | 2433 kOverlayRect, render_pass_id_, 2, gfx::RectF(), gfx::Size(), |
| 2292 gfx::Vector2dF(1, 1), gfx::PointF(), gfx::RectF()); | 2434 gfx::Vector2dF(1, 1), gfx::PointF(), gfx::RectF()); |
| 2293 } | 2435 } |
| 2294 | 2436 |
| 2295 ProcessForOverlays(); | 2437 ProcessForOverlays(); |
| 2296 EXPECT_EQ(0U, ca_layer_list_.size()); | 2438 EXPECT_EQ(0U, ca_layer_list_.size()); |
| 2297 } | 2439 } |
| 2298 | 2440 |
| 2299 } // namespace | 2441 } // namespace |
| 2300 } // namespace cc | 2442 } // namespace cc |
| OLD | NEW |