| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "cc/base/region.h" | 5 #include "cc/base/region.h" |
| 6 #include "cc/base/scoped_ptr_vector.h" | |
| 7 #include "cc/output/compositor_frame_metadata.h" | 6 #include "cc/output/compositor_frame_metadata.h" |
| 8 #include "cc/output/gl_renderer.h" | 7 #include "cc/output/gl_renderer.h" |
| 9 #include "cc/output/output_surface.h" | 8 #include "cc/output/output_surface.h" |
| 10 #include "cc/output/output_surface_client.h" | 9 #include "cc/output/output_surface_client.h" |
| 11 #include "cc/output/overlay_candidate_validator.h" | 10 #include "cc/output/overlay_candidate_validator.h" |
| 12 #include "cc/output/overlay_processor.h" | 11 #include "cc/output/overlay_processor.h" |
| 13 #include "cc/output/overlay_strategy_all_or_nothing.h" | 12 #include "cc/output/overlay_strategy_all_or_nothing.h" |
| 14 #include "cc/output/overlay_strategy_sandwich.h" | 13 #include "cc/output/overlay_strategy_sandwich.h" |
| 15 #include "cc/output/overlay_strategy_single_on_top.h" | 14 #include "cc/output/overlay_strategy_single_on_top.h" |
| 16 #include "cc/output/overlay_strategy_underlay.h" | 15 #include "cc/output/overlay_strategy_underlay.h" |
| (...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 307 const SharedQuadState* shared_quad_state, | 306 const SharedQuadState* shared_quad_state, |
| 308 RenderPass* render_pass) { | 307 RenderPass* render_pass) { |
| 309 CreateOpaqueQuadAt(resource_provider, shared_quad_state, render_pass, | 308 CreateOpaqueQuadAt(resource_provider, shared_quad_state, render_pass, |
| 310 kOverlayRect); | 309 kOverlayRect); |
| 311 } | 310 } |
| 312 | 311 |
| 313 static void CompareRenderPassLists(const RenderPassList& expected_list, | 312 static void CompareRenderPassLists(const RenderPassList& expected_list, |
| 314 const RenderPassList& actual_list) { | 313 const RenderPassList& actual_list) { |
| 315 EXPECT_EQ(expected_list.size(), actual_list.size()); | 314 EXPECT_EQ(expected_list.size(), actual_list.size()); |
| 316 for (size_t i = 0; i < actual_list.size(); ++i) { | 315 for (size_t i = 0; i < actual_list.size(); ++i) { |
| 317 RenderPass* expected = expected_list[i]; | 316 RenderPass* expected = expected_list[i].get(); |
| 318 RenderPass* actual = actual_list[i]; | 317 RenderPass* actual = actual_list[i].get(); |
| 319 | 318 |
| 320 EXPECT_EQ(expected->id, actual->id); | 319 EXPECT_EQ(expected->id, actual->id); |
| 321 EXPECT_EQ(expected->output_rect, actual->output_rect); | 320 EXPECT_EQ(expected->output_rect, actual->output_rect); |
| 322 EXPECT_EQ(expected->transform_to_root_target, | 321 EXPECT_EQ(expected->transform_to_root_target, |
| 323 actual->transform_to_root_target); | 322 actual->transform_to_root_target); |
| 324 EXPECT_EQ(expected->damage_rect, actual->damage_rect); | 323 EXPECT_EQ(expected->damage_rect, actual->damage_rect); |
| 325 EXPECT_EQ(expected->has_transparent_background, | 324 EXPECT_EQ(expected->has_transparent_background, |
| 326 actual->has_transparent_background); | 325 actual->has_transparent_background); |
| 327 | 326 |
| 328 EXPECT_EQ(expected->shared_quad_state_list.size(), | 327 EXPECT_EQ(expected->shared_quad_state_list.size(), |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 416 pass_list.push_back(pass.Pass()); | 415 pass_list.push_back(pass.Pass()); |
| 417 | 416 |
| 418 // Check for potential candidates. | 417 // Check for potential candidates. |
| 419 OverlayCandidateList candidate_list; | 418 OverlayCandidateList candidate_list; |
| 420 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 419 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 421 &candidate_list, &damage_rect_); | 420 &candidate_list, &damage_rect_); |
| 422 | 421 |
| 423 ASSERT_EQ(1U, pass_list.size()); | 422 ASSERT_EQ(1U, pass_list.size()); |
| 424 ASSERT_EQ(1U, candidate_list.size()); | 423 ASSERT_EQ(1U, candidate_list.size()); |
| 425 | 424 |
| 426 RenderPass* main_pass = pass_list.back(); | 425 RenderPass* main_pass = pass_list.back().get(); |
| 427 // Check that the quad is gone. | 426 // Check that the quad is gone. |
| 428 EXPECT_EQ(2U, main_pass->quad_list.size()); | 427 EXPECT_EQ(2U, main_pass->quad_list.size()); |
| 429 const QuadList& quad_list = main_pass->quad_list; | 428 const QuadList& quad_list = main_pass->quad_list; |
| 430 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); | 429 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); |
| 431 it != quad_list.BackToFrontEnd(); ++it) { | 430 it != quad_list.BackToFrontEnd(); ++it) { |
| 432 EXPECT_NE(DrawQuad::TEXTURE_CONTENT, it->material); | 431 EXPECT_NE(DrawQuad::TEXTURE_CONTENT, it->material); |
| 433 } | 432 } |
| 434 | 433 |
| 435 // Check that the right resource id got extracted. | 434 // Check that the right resource id got extracted. |
| 436 EXPECT_EQ(original_resource_id, candidate_list.back().resource_id); | 435 EXPECT_EQ(original_resource_id, candidate_list.back().resource_id); |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 555 RenderPassList pass_list; | 554 RenderPassList pass_list; |
| 556 pass_list.push_back(pass.Pass()); | 555 pass_list.push_back(pass.Pass()); |
| 557 | 556 |
| 558 // Check for potential candidates. | 557 // Check for potential candidates. |
| 559 OverlayCandidateList candidate_list; | 558 OverlayCandidateList candidate_list; |
| 560 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 559 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 561 &candidate_list, &damage_rect_); | 560 &candidate_list, &damage_rect_); |
| 562 ASSERT_EQ(1U, pass_list.size()); | 561 ASSERT_EQ(1U, pass_list.size()); |
| 563 ASSERT_EQ(2U, candidate_list.size()); | 562 ASSERT_EQ(2U, candidate_list.size()); |
| 564 | 563 |
| 565 RenderPass* main_pass = pass_list.back(); | 564 RenderPass* main_pass = pass_list.back().get(); |
| 566 // Check that the quad is gone. | 565 // Check that the quad is gone. |
| 567 EXPECT_EQ(3U, main_pass->quad_list.size()); | 566 EXPECT_EQ(3U, main_pass->quad_list.size()); |
| 568 const QuadList& quad_list = main_pass->quad_list; | 567 const QuadList& quad_list = main_pass->quad_list; |
| 569 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); | 568 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); |
| 570 it != quad_list.BackToFrontEnd(); ++it) { | 569 it != quad_list.BackToFrontEnd(); ++it) { |
| 571 EXPECT_NE(DrawQuad::TEXTURE_CONTENT, it->material); | 570 EXPECT_NE(DrawQuad::TEXTURE_CONTENT, it->material); |
| 572 } | 571 } |
| 573 | 572 |
| 574 EXPECT_EQ(candidate_id, candidate_list[0].resource_id); | 573 EXPECT_EQ(candidate_id, candidate_list[0].resource_id); |
| 575 EXPECT_EQ(gfx::RectF(32.f, 32.f, 32.f, 32.f), candidate_list[0].display_rect); | 574 EXPECT_EQ(gfx::RectF(32.f, 32.f, 32.f, 32.f), candidate_list[0].display_rect); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 602 | 601 |
| 603 // Then some opaque background. | 602 // Then some opaque background. |
| 604 CreateOpaqueQuadAt(resource_provider_.get(), | 603 CreateOpaqueQuadAt(resource_provider_.get(), |
| 605 pass->shared_quad_state_list.back(), pass.get(), | 604 pass->shared_quad_state_list.back(), pass.get(), |
| 606 gfx::Rect(kDisplaySize)); | 605 gfx::Rect(kDisplaySize)); |
| 607 | 606 |
| 608 RenderPassList pass_list; | 607 RenderPassList pass_list; |
| 609 pass_list.push_back(pass.Pass()); | 608 pass_list.push_back(pass.Pass()); |
| 610 | 609 |
| 611 // Run the overlay strategy on that input. | 610 // Run the overlay strategy on that input. |
| 612 RenderPass* main_pass = pass_list.back(); | 611 RenderPass* main_pass = pass_list.back().get(); |
| 613 OverlayCandidateList candidate_list; | 612 OverlayCandidateList candidate_list; |
| 614 EXPECT_EQ(4U, main_pass->quad_list.size()); | 613 EXPECT_EQ(4U, main_pass->quad_list.size()); |
| 615 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 614 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 616 &candidate_list, &damage_rect_); | 615 &candidate_list, &damage_rect_); |
| 617 ASSERT_EQ(1U, pass_list.size()); | 616 ASSERT_EQ(1U, pass_list.size()); |
| 618 ASSERT_EQ(3U, candidate_list.size()); | 617 ASSERT_EQ(3U, candidate_list.size()); |
| 619 | 618 |
| 620 // Check that the candidate quad is gone and that we now have two transparent | 619 // Check that the candidate quad is gone and that we now have two transparent |
| 621 // quads for the same region that was covered on the overlay. | 620 // quads for the same region that was covered on the overlay. |
| 622 EXPECT_EQ(5U, main_pass->quad_list.size()); | 621 EXPECT_EQ(5U, main_pass->quad_list.size()); |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 696 pass_list.push_back(pass.Pass()); | 695 pass_list.push_back(pass.Pass()); |
| 697 | 696 |
| 698 // Check for potential candidates. | 697 // Check for potential candidates. |
| 699 OverlayCandidateList candidate_list; | 698 OverlayCandidateList candidate_list; |
| 700 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 699 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 701 &candidate_list, &damage_rect_); | 700 &candidate_list, &damage_rect_); |
| 702 | 701 |
| 703 ASSERT_EQ(1U, pass_list.size()); | 702 ASSERT_EQ(1U, pass_list.size()); |
| 704 ASSERT_EQ(1U, candidate_list.size()); | 703 ASSERT_EQ(1U, candidate_list.size()); |
| 705 | 704 |
| 706 RenderPass* main_pass = pass_list.back(); | 705 RenderPass* main_pass = pass_list.back().get(); |
| 707 // Check that the quad is gone. | 706 // Check that the quad is gone. |
| 708 EXPECT_EQ(2U, main_pass->quad_list.size()); | 707 EXPECT_EQ(2U, main_pass->quad_list.size()); |
| 709 const QuadList& quad_list = main_pass->quad_list; | 708 const QuadList& quad_list = main_pass->quad_list; |
| 710 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); | 709 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); |
| 711 it != quad_list.BackToFrontEnd(); | 710 it != quad_list.BackToFrontEnd(); |
| 712 ++it) { | 711 ++it) { |
| 713 EXPECT_NE(DrawQuad::TEXTURE_CONTENT, it->material); | 712 EXPECT_NE(DrawQuad::TEXTURE_CONTENT, it->material); |
| 714 } | 713 } |
| 715 | 714 |
| 716 // Check that the right resource id got extracted. | 715 // Check that the right resource id got extracted. |
| (...skipping 1042 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1759 renderer_->BeginDrawingFrame(&frame_no_overlays); | 1758 renderer_->BeginDrawingFrame(&frame_no_overlays); |
| 1760 renderer_->FinishDrawingFrame(&frame_no_overlays); | 1759 renderer_->FinishDrawingFrame(&frame_no_overlays); |
| 1761 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); | 1760 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); |
| 1762 SwapBuffers(); | 1761 SwapBuffers(); |
| 1763 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); | 1762 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); |
| 1764 Mock::VerifyAndClearExpectations(&scheduler_); | 1763 Mock::VerifyAndClearExpectations(&scheduler_); |
| 1765 } | 1764 } |
| 1766 | 1765 |
| 1767 } // namespace | 1766 } // namespace |
| 1768 } // namespace cc | 1767 } // namespace cc |
| OLD | NEW |