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 |