| 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" | 6 #include "cc/base/scoped_ptr_vector.h" |
| 7 #include "cc/output/compositor_frame_metadata.h" | 7 #include "cc/output/compositor_frame_metadata.h" |
| 8 #include "cc/output/gl_renderer.h" | 8 #include "cc/output/gl_renderer.h" |
| 9 #include "cc/output/output_surface.h" | 9 #include "cc/output/output_surface.h" |
| 10 #include "cc/output/output_surface_client.h" | 10 #include "cc/output/output_surface_client.h" |
| (...skipping 20 matching lines...) Expand all Loading... |
| 31 using testing::_; | 31 using testing::_; |
| 32 using testing::Mock; | 32 using testing::Mock; |
| 33 | 33 |
| 34 namespace cc { | 34 namespace cc { |
| 35 namespace { | 35 namespace { |
| 36 | 36 |
| 37 const gfx::Size kDisplaySize(256, 256); | 37 const gfx::Size kDisplaySize(256, 256); |
| 38 const gfx::Rect kOverlayRect(0, 0, 128, 128); | 38 const gfx::Rect kOverlayRect(0, 0, 128, 128); |
| 39 const gfx::Rect kOverlayTopLeftRect(0, 0, 64, 64); | 39 const gfx::Rect kOverlayTopLeftRect(0, 0, 64, 64); |
| 40 const gfx::Rect kOverlayBottomRightRect(64, 64, 64, 64); | 40 const gfx::Rect kOverlayBottomRightRect(64, 64, 64, 64); |
| 41 const gfx::Rect kOverlayClipRect(0, 0, 128, 128); |
| 41 const gfx::PointF kUVTopLeft(0.1f, 0.2f); | 42 const gfx::PointF kUVTopLeft(0.1f, 0.2f); |
| 42 const gfx::PointF kUVBottomRight(1.0f, 1.0f); | 43 const gfx::PointF kUVBottomRight(1.0f, 1.0f); |
| 43 const gfx::Transform kNormalTransform = | 44 const gfx::Transform kNormalTransform = |
| 44 gfx::Transform(0.9f, 0, 0, 0.8f, 0.1f, 0.2f); // x,y -> x,y. | 45 gfx::Transform(0.9f, 0, 0, 0.8f, 0.1f, 0.2f); // x,y -> x,y. |
| 45 const gfx::Transform kXMirrorTransform = | 46 const gfx::Transform kXMirrorTransform = |
| 46 gfx::Transform(-0.9f, 0, 0, 0.8f, 1.0f, 0.2f); // x,y -> 1-x,y. | 47 gfx::Transform(-0.9f, 0, 0, 0.8f, 1.0f, 0.2f); // x,y -> 1-x,y. |
| 47 const gfx::Transform kYMirrorTransform = | 48 const gfx::Transform kYMirrorTransform = |
| 48 gfx::Transform(0.9f, 0, 0, -0.8f, 0.1f, 1.0f); // x,y -> x,1-y. | 49 gfx::Transform(0.9f, 0, 0, -0.8f, 0.1f, 1.0f); // x,y -> x,1-y. |
| 49 const gfx::Transform kBothMirrorTransform = | 50 const gfx::Transform kBothMirrorTransform = |
| 50 gfx::Transform(-0.9f, 0, 0, -0.8f, 1.0f, 1.0f); // x,y -> 1-x,1-y. | 51 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... |
| 72 EXPECT_EQ(gfx::RectF(kOverlayBottomRightRect), candidate.display_rect); | 73 EXPECT_EQ(gfx::RectF(kOverlayBottomRightRect), candidate.display_rect); |
| 73 } else { | 74 } else { |
| 74 EXPECT_NEAR(kOverlayRect.x(), candidate.display_rect.x(), 0.01f); | 75 EXPECT_NEAR(kOverlayRect.x(), candidate.display_rect.x(), 0.01f); |
| 75 EXPECT_NEAR(kOverlayRect.y(), candidate.display_rect.y(), 0.01f); | 76 EXPECT_NEAR(kOverlayRect.y(), candidate.display_rect.y(), 0.01f); |
| 76 EXPECT_NEAR(kOverlayRect.width(), candidate.display_rect.width(), 0.01f); | 77 EXPECT_NEAR(kOverlayRect.width(), candidate.display_rect.width(), 0.01f); |
| 77 EXPECT_NEAR(kOverlayRect.height(), candidate.display_rect.height(), | 78 EXPECT_NEAR(kOverlayRect.height(), candidate.display_rect.height(), |
| 78 0.01f); | 79 0.01f); |
| 79 } | 80 } |
| 80 EXPECT_FLOAT_RECT_EQ(BoundingRect(kUVTopLeft, kUVBottomRight), | 81 EXPECT_FLOAT_RECT_EQ(BoundingRect(kUVTopLeft, kUVBottomRight), |
| 81 candidate.uv_rect); | 82 candidate.uv_rect); |
| 83 if (!candidate.clip_rect.IsEmpty()) { |
| 84 EXPECT_EQ(true, candidate.is_clipped); |
| 85 EXPECT_EQ(kOverlayClipRect, candidate.clip_rect); |
| 86 } |
| 82 candidate.overlay_handled = true; | 87 candidate.overlay_handled = true; |
| 83 } | 88 } |
| 84 }; | 89 }; |
| 85 | 90 |
| 86 class SandwichOverlayValidator : public OverlayCandidateValidator { | 91 class SandwichOverlayValidator : public OverlayCandidateValidator { |
| 87 public: | 92 public: |
| 88 void GetStrategies(OverlayProcessor::StrategyList* strategies) override { | 93 void GetStrategies(OverlayProcessor::StrategyList* strategies) override { |
| 89 strategies->push_back(scoped_ptr<OverlayProcessor::Strategy>( | 94 strategies->push_back(scoped_ptr<OverlayProcessor::Strategy>( |
| 90 new OverlayStrategyCommon(this, new OverlayStrategySandwich))); | 95 new OverlayStrategyCommon(this, new OverlayStrategySandwich))); |
| 91 } | 96 } |
| (...skipping 781 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 873 ->quad_to_target_transform.RotateAboutXAxis(45.f); | 878 ->quad_to_target_transform.RotateAboutXAxis(45.f); |
| 874 | 879 |
| 875 RenderPassList pass_list; | 880 RenderPassList pass_list; |
| 876 pass_list.push_back(pass.Pass()); | 881 pass_list.push_back(pass.Pass()); |
| 877 OverlayCandidateList candidate_list; | 882 OverlayCandidateList candidate_list; |
| 878 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); | 883 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); |
| 879 ASSERT_EQ(1U, pass_list.size()); | 884 ASSERT_EQ(1U, pass_list.size()); |
| 880 EXPECT_EQ(0U, candidate_list.size()); | 885 EXPECT_EQ(0U, candidate_list.size()); |
| 881 } | 886 } |
| 882 | 887 |
| 888 TEST_F(SingleOverlayOnTopTest, AllowClipped) { |
| 889 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 890 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| 891 pass->shared_quad_state_list.back(), |
| 892 pass.get()); |
| 893 pass->shared_quad_state_list.back()->is_clipped = true; |
| 894 pass->shared_quad_state_list.back()->clip_rect = kOverlayClipRect; |
| 895 |
| 896 RenderPassList pass_list; |
| 897 pass_list.push_back(pass.Pass()); |
| 898 OverlayCandidateList candidate_list; |
| 899 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); |
| 900 ASSERT_EQ(1U, pass_list.size()); |
| 901 EXPECT_EQ(2U, candidate_list.size()); |
| 902 } |
| 903 |
| 883 TEST_F(SingleOverlayOnTopTest, AllowVerticalFlip) { | 904 TEST_F(SingleOverlayOnTopTest, AllowVerticalFlip) { |
| 884 gfx::Rect rect = kOverlayRect; | 905 gfx::Rect rect = kOverlayRect; |
| 885 rect.set_width(rect.width() / 2); | 906 rect.set_width(rect.width() / 2); |
| 886 rect.Offset(0, -rect.height()); | 907 rect.Offset(0, -rect.height()); |
| 887 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 908 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 888 CreateCandidateQuadAt(resource_provider_.get(), | 909 CreateCandidateQuadAt(resource_provider_.get(), |
| 889 pass->shared_quad_state_list.back(), pass.get(), rect); | 910 pass->shared_quad_state_list.back(), pass.get(), rect); |
| 890 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(2.0f, | 911 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(2.0f, |
| 891 -1.0f); | 912 -1.0f); |
| 892 | 913 |
| (...skipping 721 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1614 renderer_->BeginDrawingFrame(&frame_no_overlays); | 1635 renderer_->BeginDrawingFrame(&frame_no_overlays); |
| 1615 renderer_->FinishDrawingFrame(&frame_no_overlays); | 1636 renderer_->FinishDrawingFrame(&frame_no_overlays); |
| 1616 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); | 1637 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); |
| 1617 SwapBuffers(); | 1638 SwapBuffers(); |
| 1618 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); | 1639 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); |
| 1619 Mock::VerifyAndClearExpectations(&scheduler_); | 1640 Mock::VerifyAndClearExpectations(&scheduler_); |
| 1620 } | 1641 } |
| 1621 | 1642 |
| 1622 } // namespace | 1643 } // namespace |
| 1623 } // namespace cc | 1644 } // namespace cc |
| OLD | NEW |