Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(42)

Side by Side Diff: cc/output/overlay_unittest.cc

Issue 1311013002: [Ozone] Fix SingleOnTop issue by checking if the quad is clipped. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698