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/scoped_ptr_vector.h" | 5 #include "cc/base/scoped_ptr_vector.h" |
6 #include "cc/output/compositor_frame_metadata.h" | 6 #include "cc/output/compositor_frame_metadata.h" |
7 #include "cc/output/gl_renderer.h" | 7 #include "cc/output/gl_renderer.h" |
8 #include "cc/output/output_surface.h" | 8 #include "cc/output/output_surface.h" |
9 #include "cc/output/output_surface_client.h" | 9 #include "cc/output/output_surface_client.h" |
10 #include "cc/output/overlay_candidate_validator.h" | 10 #include "cc/output/overlay_candidate_validator.h" |
(...skipping 18 matching lines...) Expand all Loading... | |
29 using testing::_; | 29 using testing::_; |
30 using testing::Mock; | 30 using testing::Mock; |
31 | 31 |
32 namespace cc { | 32 namespace cc { |
33 namespace { | 33 namespace { |
34 | 34 |
35 const gfx::Size kDisplaySize(256, 256); | 35 const gfx::Size kDisplaySize(256, 256); |
36 const gfx::Rect kOverlayRect(0, 0, 128, 128); | 36 const gfx::Rect kOverlayRect(0, 0, 128, 128); |
37 const gfx::Rect kOverlayTopLeftRect(0, 0, 64, 64); | 37 const gfx::Rect kOverlayTopLeftRect(0, 0, 64, 64); |
38 const gfx::Rect kOverlayBottomRightRect(64, 64, 64, 64); | 38 const gfx::Rect kOverlayBottomRightRect(64, 64, 64, 64); |
39 const gfx::Rect kOverlayClipRect(0, 0, 128, 128); | |
39 const gfx::PointF kUVTopLeft(0.1f, 0.2f); | 40 const gfx::PointF kUVTopLeft(0.1f, 0.2f); |
40 const gfx::PointF kUVBottomRight(1.0f, 1.0f); | 41 const gfx::PointF kUVBottomRight(1.0f, 1.0f); |
41 const gfx::Transform kNormalTransform = | 42 const gfx::Transform kNormalTransform = |
42 gfx::Transform(0.9f, 0, 0, 0.8f, 0.1f, 0.2f); // x,y -> x,y. | 43 gfx::Transform(0.9f, 0, 0, 0.8f, 0.1f, 0.2f); // x,y -> x,y. |
43 const gfx::Transform kXMirrorTransform = | 44 const gfx::Transform kXMirrorTransform = |
44 gfx::Transform(-0.9f, 0, 0, 0.8f, 1.0f, 0.2f); // x,y -> 1-x,y. | 45 gfx::Transform(-0.9f, 0, 0, 0.8f, 1.0f, 0.2f); // x,y -> 1-x,y. |
45 const gfx::Transform kYMirrorTransform = | 46 const gfx::Transform kYMirrorTransform = |
46 gfx::Transform(0.9f, 0, 0, -0.8f, 0.1f, 1.0f); // x,y -> x,1-y. | 47 gfx::Transform(0.9f, 0, 0, -0.8f, 0.1f, 1.0f); // x,y -> x,1-y. |
47 const gfx::Transform kBothMirrorTransform = | 48 const gfx::Transform kBothMirrorTransform = |
48 gfx::Transform(-0.9f, 0, 0, -0.8f, 1.0f, 1.0f); // x,y -> 1-x,1-y. | 49 gfx::Transform(-0.9f, 0, 0, -0.8f, 1.0f, 1.0f); // x,y -> 1-x,1-y. |
(...skipping 21 matching lines...) Expand all Loading... | |
70 EXPECT_EQ(kOverlayBottomRightRect, candidate.display_rect); | 71 EXPECT_EQ(kOverlayBottomRightRect, candidate.display_rect); |
71 } else { | 72 } else { |
72 EXPECT_NEAR(kOverlayRect.x(), candidate.display_rect.x(), 0.01f); | 73 EXPECT_NEAR(kOverlayRect.x(), candidate.display_rect.x(), 0.01f); |
73 EXPECT_NEAR(kOverlayRect.y(), candidate.display_rect.y(), 0.01f); | 74 EXPECT_NEAR(kOverlayRect.y(), candidate.display_rect.y(), 0.01f); |
74 EXPECT_NEAR(kOverlayRect.width(), candidate.display_rect.width(), 0.01f); | 75 EXPECT_NEAR(kOverlayRect.width(), candidate.display_rect.width(), 0.01f); |
75 EXPECT_NEAR(kOverlayRect.height(), candidate.display_rect.height(), | 76 EXPECT_NEAR(kOverlayRect.height(), candidate.display_rect.height(), |
76 0.01f); | 77 0.01f); |
77 } | 78 } |
78 EXPECT_EQ(BoundingRect(kUVTopLeft, kUVBottomRight).ToString(), | 79 EXPECT_EQ(BoundingRect(kUVTopLeft, kUVBottomRight).ToString(), |
79 candidate.uv_rect.ToString()); | 80 candidate.uv_rect.ToString()); |
81 if (candidate.is_clipped) | |
danakj
2015/09/04 18:00:39
can you also EXPECT that is_clipped is true for th
| |
82 EXPECT_EQ(kOverlayClipRect, candidate.clip_rect); | |
80 candidate.overlay_handled = true; | 83 candidate.overlay_handled = true; |
81 } | 84 } |
82 }; | 85 }; |
83 | 86 |
84 class SandwichOverlayValidator : public OverlayCandidateValidator { | 87 class SandwichOverlayValidator : public OverlayCandidateValidator { |
85 public: | 88 public: |
86 void GetStrategies(OverlayProcessor::StrategyList* strategies) override { | 89 void GetStrategies(OverlayProcessor::StrategyList* strategies) override { |
87 strategies->push_back(scoped_ptr<OverlayProcessor::Strategy>( | 90 strategies->push_back(scoped_ptr<OverlayProcessor::Strategy>( |
88 new OverlayStrategyCommon(this, new OverlayStrategySandwich))); | 91 new OverlayStrategyCommon(this, new OverlayStrategySandwich))); |
89 } | 92 } |
(...skipping 651 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
741 ->quad_to_target_transform.RotateAboutXAxis(45.f); | 744 ->quad_to_target_transform.RotateAboutXAxis(45.f); |
742 | 745 |
743 RenderPassList pass_list; | 746 RenderPassList pass_list; |
744 pass_list.push_back(pass.Pass()); | 747 pass_list.push_back(pass.Pass()); |
745 OverlayCandidateList candidate_list; | 748 OverlayCandidateList candidate_list; |
746 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); | 749 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); |
747 ASSERT_EQ(1U, pass_list.size()); | 750 ASSERT_EQ(1U, pass_list.size()); |
748 EXPECT_EQ(0U, candidate_list.size()); | 751 EXPECT_EQ(0U, candidate_list.size()); |
749 } | 752 } |
750 | 753 |
754 TEST_F(SingleOverlayOnTopTest, AllowClipped) { | |
755 scoped_ptr<RenderPass> pass = CreateRenderPass(); | |
756 CreateFullscreenCandidateQuad(resource_provider_.get(), | |
757 pass->shared_quad_state_list.back(), | |
758 pass.get()); | |
759 pass->shared_quad_state_list.back()->is_clipped = true; | |
760 pass->shared_quad_state_list.back()->clip_rect = kOverlayClipRect; | |
761 | |
762 RenderPassList pass_list; | |
763 pass_list.push_back(pass.Pass()); | |
764 OverlayCandidateList candidate_list; | |
765 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); | |
766 ASSERT_EQ(1U, pass_list.size()); | |
767 EXPECT_EQ(2U, candidate_list.size()); | |
768 } | |
769 | |
751 TEST_F(SingleOverlayOnTopTest, AllowVerticalFlip) { | 770 TEST_F(SingleOverlayOnTopTest, AllowVerticalFlip) { |
752 gfx::Rect rect = kOverlayRect; | 771 gfx::Rect rect = kOverlayRect; |
753 rect.set_width(rect.width() / 2); | 772 rect.set_width(rect.width() / 2); |
754 rect.Offset(0, -rect.height()); | 773 rect.Offset(0, -rect.height()); |
755 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 774 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
756 CreateCandidateQuadAt(resource_provider_.get(), | 775 CreateCandidateQuadAt(resource_provider_.get(), |
757 pass->shared_quad_state_list.back(), pass.get(), rect); | 776 pass->shared_quad_state_list.back(), pass.get(), rect); |
758 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(2.0f, | 777 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(2.0f, |
759 -1.0f); | 778 -1.0f); |
760 | 779 |
(...skipping 721 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1482 renderer_->BeginDrawingFrame(&frame_no_overlays); | 1501 renderer_->BeginDrawingFrame(&frame_no_overlays); |
1483 renderer_->FinishDrawingFrame(&frame_no_overlays); | 1502 renderer_->FinishDrawingFrame(&frame_no_overlays); |
1484 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); | 1503 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); |
1485 SwapBuffers(); | 1504 SwapBuffers(); |
1486 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); | 1505 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); |
1487 Mock::VerifyAndClearExpectations(&scheduler_); | 1506 Mock::VerifyAndClearExpectations(&scheduler_); |
1488 } | 1507 } |
1489 | 1508 |
1490 } // namespace | 1509 } // namespace |
1491 } // namespace cc | 1510 } // namespace cc |
OLD | NEW |