| 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 <stddef.h> | 5 #include <stddef.h> |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/memory/ptr_util.h" | 9 #include "base/memory/ptr_util.h" |
| 10 #include "cc/base/region.h" | 10 #include "cc/base/region.h" |
| (...skipping 22 matching lines...) Expand all Loading... |
| 33 #include "testing/gtest/include/gtest/gtest.h" | 33 #include "testing/gtest/include/gtest/gtest.h" |
| 34 #include "ui/gfx/geometry/rect_conversions.h" | 34 #include "ui/gfx/geometry/rect_conversions.h" |
| 35 | 35 |
| 36 using testing::_; | 36 using testing::_; |
| 37 using testing::Mock; | 37 using testing::Mock; |
| 38 | 38 |
| 39 namespace cc { | 39 namespace cc { |
| 40 namespace { | 40 namespace { |
| 41 | 41 |
| 42 const gfx::Size kDisplaySize(256, 256); | 42 const gfx::Size kDisplaySize(256, 256); |
| 43 const gfx::Rect kOverlayRect(0, 0, 128, 128); | 43 const gfx::Rect kOverlayRect(0, 0, 256, 256); |
| 44 const gfx::Rect kOverlayTopLeftRect(0, 0, 64, 64); | 44 const gfx::Rect kOverlayTopLeftRect(0, 0, 128, 128); |
| 45 const gfx::Rect kOverlayBottomRightRect(64, 64, 64, 64); | 45 const gfx::Rect kOverlayBottomRightRect(128, 128, 128, 128); |
| 46 const gfx::Rect kOverlayClipRect(0, 0, 128, 128); | 46 const gfx::Rect kOverlayClipRect(0, 0, 128, 128); |
| 47 const gfx::PointF kUVTopLeft(0.1f, 0.2f); | 47 const gfx::PointF kUVTopLeft(0.1f, 0.2f); |
| 48 const gfx::PointF kUVBottomRight(1.0f, 1.0f); | 48 const gfx::PointF kUVBottomRight(1.0f, 1.0f); |
| 49 const gfx::Transform kNormalTransform = | 49 const gfx::Transform kNormalTransform = |
| 50 gfx::Transform(0.9f, 0, 0, 0.8f, 0.1f, 0.2f); // x,y -> x,y. | 50 gfx::Transform(0.9f, 0, 0, 0.8f, 0.1f, 0.2f); // x,y -> x,y. |
| 51 const gfx::Transform kXMirrorTransform = | 51 const gfx::Transform kXMirrorTransform = |
| 52 gfx::Transform(-0.9f, 0, 0, 0.8f, 1.0f, 0.2f); // x,y -> 1-x,y. | 52 gfx::Transform(-0.9f, 0, 0, 0.8f, 1.0f, 0.2f); // x,y -> 1-x,y. |
| 53 const gfx::Transform kYMirrorTransform = | 53 const gfx::Transform kYMirrorTransform = |
| 54 gfx::Transform(0.9f, 0, 0, -0.8f, 0.1f, 1.0f); // x,y -> x,1-y. | 54 gfx::Transform(0.9f, 0, 0, -0.8f, 0.1f, 1.0f); // x,y -> x,1-y. |
| 55 const gfx::Transform kBothMirrorTransform = | 55 const gfx::Transform kBothMirrorTransform = |
| (...skipping 14 matching lines...) Expand all Loading... |
| 70 } | 70 } |
| 71 bool AllowCALayerOverlays() override { return false; } | 71 bool AllowCALayerOverlays() override { return false; } |
| 72 void CheckOverlaySupport(OverlayCandidateList* surfaces) override { | 72 void CheckOverlaySupport(OverlayCandidateList* surfaces) override { |
| 73 // We may have 1 or 2 surfaces depending on whether this ran through the | 73 // We may have 1 or 2 surfaces depending on whether this ran through the |
| 74 // full renderer and picked up the output surface, or not. | 74 // full renderer and picked up the output surface, or not. |
| 75 ASSERT_LE(1U, surfaces->size()); | 75 ASSERT_LE(1U, surfaces->size()); |
| 76 ASSERT_GE(2U, surfaces->size()); | 76 ASSERT_GE(2U, surfaces->size()); |
| 77 | 77 |
| 78 OverlayCandidate& candidate = surfaces->back(); | 78 OverlayCandidate& candidate = surfaces->back(); |
| 79 EXPECT_TRUE(!candidate.use_output_surface_for_resource); | 79 EXPECT_TRUE(!candidate.use_output_surface_for_resource); |
| 80 if (candidate.display_rect.width() == 64) { | 80 if (candidate.display_rect.width() == kOverlayBottomRightRect.width()) { |
| 81 EXPECT_EQ(gfx::RectF(kOverlayBottomRightRect), candidate.display_rect); | 81 EXPECT_EQ(gfx::RectF(kOverlayBottomRightRect), candidate.display_rect); |
| 82 } else { | 82 } else { |
| 83 EXPECT_NEAR(kOverlayRect.x(), candidate.display_rect.x(), 0.01f); | 83 EXPECT_NEAR(kOverlayRect.x(), candidate.display_rect.x(), 0.01f); |
| 84 EXPECT_NEAR(kOverlayRect.y(), candidate.display_rect.y(), 0.01f); | 84 EXPECT_NEAR(kOverlayRect.y(), candidate.display_rect.y(), 0.01f); |
| 85 EXPECT_NEAR(kOverlayRect.width(), candidate.display_rect.width(), 0.01f); | 85 EXPECT_NEAR(kOverlayRect.width(), candidate.display_rect.width(), 0.01f); |
| 86 EXPECT_NEAR(kOverlayRect.height(), candidate.display_rect.height(), | 86 EXPECT_NEAR(kOverlayRect.height(), candidate.display_rect.height(), |
| 87 0.01f); | 87 0.01f); |
| 88 } | 88 } |
| 89 EXPECT_FLOAT_RECT_EQ(BoundingRect(kUVTopLeft, kUVBottomRight), | 89 EXPECT_FLOAT_RECT_EQ(BoundingRect(kUVTopLeft, kUVBottomRight), |
| 90 candidate.uv_rect); | 90 candidate.uv_rect); |
| (...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 263 overlay_quad->SetNew(shared_quad_state, rect, rect, rect, resource_id, | 263 overlay_quad->SetNew(shared_quad_state, rect, rect, rect, resource_id, |
| 264 resource_size_in_pixels, transform); | 264 resource_size_in_pixels, transform); |
| 265 | 265 |
| 266 return overlay_quad; | 266 return overlay_quad; |
| 267 } | 267 } |
| 268 | 268 |
| 269 TextureDrawQuad* CreateFullscreenCandidateQuad( | 269 TextureDrawQuad* CreateFullscreenCandidateQuad( |
| 270 ResourceProvider* resource_provider, | 270 ResourceProvider* resource_provider, |
| 271 const SharedQuadState* shared_quad_state, | 271 const SharedQuadState* shared_quad_state, |
| 272 RenderPass* render_pass) { | 272 RenderPass* render_pass) { |
| 273 return CreateCandidateQuadAt( | 273 return CreateCandidateQuadAt(resource_provider, shared_quad_state, |
| 274 resource_provider, shared_quad_state, render_pass, kOverlayRect); | 274 render_pass, render_pass->output_rect); |
| 275 } | 275 } |
| 276 | 276 |
| 277 StreamVideoDrawQuad* CreateFullscreenCandidateVideoQuad( | 277 StreamVideoDrawQuad* CreateFullscreenCandidateVideoQuad( |
| 278 ResourceProvider* resource_provider, | 278 ResourceProvider* resource_provider, |
| 279 const SharedQuadState* shared_quad_state, | 279 const SharedQuadState* shared_quad_state, |
| 280 RenderPass* render_pass, | 280 RenderPass* render_pass, |
| 281 const gfx::Transform& transform) { | 281 const gfx::Transform& transform) { |
| 282 return CreateCandidateVideoQuadAt(resource_provider, shared_quad_state, | 282 return CreateCandidateVideoQuadAt(resource_provider, shared_quad_state, |
| 283 render_pass, kOverlayRect, transform); | 283 render_pass, render_pass->output_rect, |
| 284 transform); |
| 284 } | 285 } |
| 285 | 286 |
| 286 void CreateOpaqueQuadAt(ResourceProvider* resource_provider, | 287 void CreateOpaqueQuadAt(ResourceProvider* resource_provider, |
| 287 const SharedQuadState* shared_quad_state, | 288 const SharedQuadState* shared_quad_state, |
| 288 RenderPass* render_pass, | 289 RenderPass* render_pass, |
| 289 const gfx::Rect& rect) { | 290 const gfx::Rect& rect) { |
| 290 SolidColorDrawQuad* color_quad = | 291 SolidColorDrawQuad* color_quad = |
| 291 render_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); | 292 render_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
| 292 color_quad->SetNew(shared_quad_state, rect, rect, SK_ColorBLACK, false); | 293 color_quad->SetNew(shared_quad_state, rect, rect, SK_ColorBLACK, false); |
| 293 } | 294 } |
| 294 | 295 |
| 295 void CreateFullscreenOpaqueQuad(ResourceProvider* resource_provider, | 296 void CreateFullscreenOpaqueQuad(ResourceProvider* resource_provider, |
| 296 const SharedQuadState* shared_quad_state, | 297 const SharedQuadState* shared_quad_state, |
| 297 RenderPass* render_pass) { | 298 RenderPass* render_pass) { |
| 298 CreateOpaqueQuadAt(resource_provider, shared_quad_state, render_pass, | 299 CreateOpaqueQuadAt(resource_provider, shared_quad_state, render_pass, |
| 299 kOverlayRect); | 300 render_pass->output_rect); |
| 300 } | 301 } |
| 301 | 302 |
| 302 static void CompareRenderPassLists(const RenderPassList& expected_list, | 303 static void CompareRenderPassLists(const RenderPassList& expected_list, |
| 303 const RenderPassList& actual_list) { | 304 const RenderPassList& actual_list) { |
| 304 EXPECT_EQ(expected_list.size(), actual_list.size()); | 305 EXPECT_EQ(expected_list.size(), actual_list.size()); |
| 305 for (size_t i = 0; i < actual_list.size(); ++i) { | 306 for (size_t i = 0; i < actual_list.size(); ++i) { |
| 306 RenderPass* expected = expected_list[i].get(); | 307 RenderPass* expected = expected_list[i].get(); |
| 307 RenderPass* actual = actual_list[i].get(); | 308 RenderPass* actual = actual_list[i].get(); |
| 308 | 309 |
| 309 EXPECT_EQ(expected->id, actual->id); | 310 EXPECT_EQ(expected->id, actual->id); |
| (...skipping 1324 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1634 | 1635 |
| 1635 ReturnResourceInUseQuery(resource2); | 1636 ReturnResourceInUseQuery(resource2); |
| 1636 ReturnResourceInUseQuery(resource3); | 1637 ReturnResourceInUseQuery(resource3); |
| 1637 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); | 1638 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); |
| 1638 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2)); | 1639 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2)); |
| 1639 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource3)); | 1640 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource3)); |
| 1640 } | 1641 } |
| 1641 | 1642 |
| 1642 } // namespace | 1643 } // namespace |
| 1643 } // namespace cc | 1644 } // namespace cc |
| OLD | NEW |