| 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 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 126 DefaultOverlayProcessor::DefaultOverlayProcessor(OutputSurface* surface) | 126 DefaultOverlayProcessor::DefaultOverlayProcessor(OutputSurface* surface) |
| 127 : OverlayProcessor(surface) { | 127 : OverlayProcessor(surface) { |
| 128 } | 128 } |
| 129 | 129 |
| 130 size_t DefaultOverlayProcessor::GetStrategyCount() { | 130 size_t DefaultOverlayProcessor::GetStrategyCount() { |
| 131 return strategies_.size(); | 131 return strategies_.size(); |
| 132 } | 132 } |
| 133 | 133 |
| 134 class OverlayOutputSurface : public OutputSurface { | 134 class OverlayOutputSurface : public OutputSurface { |
| 135 public: | 135 public: |
| 136 explicit OverlayOutputSurface(scoped_refptr<ContextProvider> context_provider) | 136 explicit OverlayOutputSurface( |
| 137 : OutputSurface(context_provider) { | 137 std::unique_ptr<ContextProvider::Factory> compositor_context_factory) |
| 138 : OutputSurface(std::move(compositor_context_factory)) { |
| 138 surface_size_ = kDisplaySize; | 139 surface_size_ = kDisplaySize; |
| 139 device_scale_factor_ = 1; | 140 device_scale_factor_ = 1; |
| 140 is_displayed_as_overlay_plane_ = true; | 141 is_displayed_as_overlay_plane_ = true; |
| 141 } | 142 } |
| 142 | 143 |
| 143 void SetScaleFactor(float scale_factor) { | 144 void SetScaleFactor(float scale_factor) { |
| 144 device_scale_factor_ = scale_factor; | 145 device_scale_factor_ = scale_factor; |
| 145 } | 146 } |
| 146 | 147 |
| 147 // OutputSurface implementation | 148 // OutputSurface implementation |
| (...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 329 EXPECT_EQ(exp_iter->shared_quad_state->quad_layer_bounds.ToString(), | 330 EXPECT_EQ(exp_iter->shared_quad_state->quad_layer_bounds.ToString(), |
| 330 act_iter->shared_quad_state->quad_layer_bounds.ToString()); | 331 act_iter->shared_quad_state->quad_layer_bounds.ToString()); |
| 331 } | 332 } |
| 332 } | 333 } |
| 333 } | 334 } |
| 334 | 335 |
| 335 template <typename OverlayCandidateValidatorType> | 336 template <typename OverlayCandidateValidatorType> |
| 336 class OverlayTest : public testing::Test { | 337 class OverlayTest : public testing::Test { |
| 337 protected: | 338 protected: |
| 338 void SetUp() override { | 339 void SetUp() override { |
| 339 provider_ = TestContextProvider::Create(); | 340 output_surface_.reset(new OverlayOutputSurface( |
| 340 output_surface_.reset(new OverlayOutputSurface(provider_)); | 341 base::MakeUnique<TestContextProvider::Factory>())); |
| 341 EXPECT_TRUE(output_surface_->BindToClient(&client_)); | 342 EXPECT_TRUE(output_surface_->BindToClient(&client_)); |
| 342 output_surface_->SetOverlayCandidateValidator( | 343 output_surface_->SetOverlayCandidateValidator( |
| 343 new OverlayCandidateValidatorType); | 344 new OverlayCandidateValidatorType); |
| 344 | 345 |
| 345 shared_bitmap_manager_.reset(new TestSharedBitmapManager()); | 346 shared_bitmap_manager_.reset(new TestSharedBitmapManager()); |
| 346 resource_provider_ = FakeResourceProvider::Create( | 347 resource_provider_ = FakeResourceProvider::Create( |
| 347 output_surface_.get(), shared_bitmap_manager_.get()); | 348 output_surface_.get(), shared_bitmap_manager_.get()); |
| 348 | 349 |
| 349 overlay_processor_.reset(new OverlayProcessor(output_surface_.get())); | 350 overlay_processor_.reset(new OverlayProcessor(output_surface_.get())); |
| 350 overlay_processor_->Initialize(); | 351 overlay_processor_->Initialize(); |
| 351 } | 352 } |
| 352 | 353 |
| 353 scoped_refptr<TestContextProvider> provider_; | |
| 354 std::unique_ptr<OverlayOutputSurface> output_surface_; | 354 std::unique_ptr<OverlayOutputSurface> output_surface_; |
| 355 FakeOutputSurfaceClient client_; | 355 FakeOutputSurfaceClient client_; |
| 356 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager_; | 356 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager_; |
| 357 std::unique_ptr<ResourceProvider> resource_provider_; | 357 std::unique_ptr<ResourceProvider> resource_provider_; |
| 358 std::unique_ptr<OverlayProcessor> overlay_processor_; | 358 std::unique_ptr<OverlayProcessor> overlay_processor_; |
| 359 gfx::Rect damage_rect_; | 359 gfx::Rect damage_rect_; |
| 360 }; | 360 }; |
| 361 | 361 |
| 362 typedef OverlayTest<SingleOnTopOverlayValidator> SingleOverlayOnTopTest; | 362 typedef OverlayTest<SingleOnTopOverlayValidator> SingleOverlayOnTopTest; |
| 363 typedef OverlayTest<UnderlayOverlayValidator> UnderlayTest; | 363 typedef OverlayTest<UnderlayOverlayValidator> UnderlayTest; |
| 364 typedef OverlayTest<CALayerValidator> CALayerOverlayTest; | 364 typedef OverlayTest<CALayerValidator> CALayerOverlayTest; |
| 365 | 365 |
| 366 TEST(OverlayTest, NoOverlaysByDefault) { | 366 TEST(OverlayTest, NoOverlaysByDefault) { |
| 367 scoped_refptr<TestContextProvider> provider = TestContextProvider::Create(); | 367 OverlayOutputSurface output_surface( |
| 368 OverlayOutputSurface output_surface(provider); | 368 base::MakeUnique<TestContextProvider::Factory>()); |
| 369 EXPECT_EQ(NULL, output_surface.GetOverlayCandidateValidator()); | 369 EXPECT_EQ(NULL, output_surface.GetOverlayCandidateValidator()); |
| 370 | 370 |
| 371 output_surface.SetOverlayCandidateValidator(new SingleOverlayValidator); | 371 output_surface.SetOverlayCandidateValidator(new SingleOverlayValidator); |
| 372 EXPECT_TRUE(output_surface.GetOverlayCandidateValidator() != NULL); | 372 EXPECT_TRUE(output_surface.GetOverlayCandidateValidator() != NULL); |
| 373 } | 373 } |
| 374 | 374 |
| 375 TEST(OverlayTest, OverlaysProcessorHasStrategy) { | 375 TEST(OverlayTest, OverlaysProcessorHasStrategy) { |
| 376 scoped_refptr<TestContextProvider> provider = TestContextProvider::Create(); | 376 OverlayOutputSurface output_surface( |
| 377 OverlayOutputSurface output_surface(provider); | 377 base::MakeUnique<TestContextProvider::Factory>()); |
| 378 FakeOutputSurfaceClient client; | 378 FakeOutputSurfaceClient client; |
| 379 EXPECT_TRUE(output_surface.BindToClient(&client)); | 379 EXPECT_TRUE(output_surface.BindToClient(&client)); |
| 380 output_surface.SetOverlayCandidateValidator(new SingleOverlayValidator); | 380 output_surface.SetOverlayCandidateValidator(new SingleOverlayValidator); |
| 381 | 381 |
| 382 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager( | 382 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager( |
| 383 new TestSharedBitmapManager()); | 383 new TestSharedBitmapManager()); |
| 384 std::unique_ptr<ResourceProvider> resource_provider = | 384 std::unique_ptr<ResourceProvider> resource_provider = |
| 385 FakeResourceProvider::Create(&output_surface, | 385 FakeResourceProvider::Create(&output_surface, |
| 386 shared_bitmap_manager.get()); | 386 shared_bitmap_manager.get()); |
| 387 | 387 |
| (...skipping 808 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1196 void(int plane_z_order, | 1196 void(int plane_z_order, |
| 1197 gfx::OverlayTransform plane_transform, | 1197 gfx::OverlayTransform plane_transform, |
| 1198 unsigned overlay_texture_id, | 1198 unsigned overlay_texture_id, |
| 1199 const gfx::Rect& display_bounds, | 1199 const gfx::Rect& display_bounds, |
| 1200 const gfx::RectF& uv_rect)); | 1200 const gfx::RectF& uv_rect)); |
| 1201 }; | 1201 }; |
| 1202 | 1202 |
| 1203 class GLRendererWithOverlaysTest : public testing::Test { | 1203 class GLRendererWithOverlaysTest : public testing::Test { |
| 1204 protected: | 1204 protected: |
| 1205 GLRendererWithOverlaysTest() { | 1205 GLRendererWithOverlaysTest() { |
| 1206 provider_ = TestContextProvider::Create(); | 1206 output_surface_.reset(new OverlayOutputSurface( |
| 1207 output_surface_.reset(new OverlayOutputSurface(provider_)); | 1207 base::MakeUnique<TestContextProvider::Factory>())); |
| 1208 CHECK(output_surface_->BindToClient(&output_surface_client_)); | 1208 CHECK(output_surface_->BindToClient(&output_surface_client_)); |
| 1209 provider_ = |
| 1210 static_cast<TestContextProvider*>(output_surface_->context_provider()); |
| 1209 resource_provider_ = | 1211 resource_provider_ = |
| 1210 FakeResourceProvider::Create(output_surface_.get(), nullptr); | 1212 FakeResourceProvider::Create(output_surface_.get(), nullptr); |
| 1211 | 1213 |
| 1212 provider_->support()->SetScheduleOverlayPlaneCallback(base::Bind( | 1214 provider_->support()->SetScheduleOverlayPlaneCallback(base::Bind( |
| 1213 &MockOverlayScheduler::Schedule, base::Unretained(&scheduler_))); | 1215 &MockOverlayScheduler::Schedule, base::Unretained(&scheduler_))); |
| 1214 } | 1216 } |
| 1215 | 1217 |
| 1216 void Init(bool use_validator) { | 1218 void Init(bool use_validator) { |
| 1217 if (use_validator) | 1219 if (use_validator) |
| 1218 output_surface_->SetOverlayCandidateValidator(new SingleOverlayValidator); | 1220 output_surface_->SetOverlayCandidateValidator(new SingleOverlayValidator); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1230 void SwapBuffersWithoutComplete() { | 1232 void SwapBuffersWithoutComplete() { |
| 1231 renderer_->SwapBuffers(CompositorFrameMetadata()); | 1233 renderer_->SwapBuffers(CompositorFrameMetadata()); |
| 1232 } | 1234 } |
| 1233 void SwapBuffersComplete() { | 1235 void SwapBuffersComplete() { |
| 1234 output_surface_->OnSwapBuffersComplete(); | 1236 output_surface_->OnSwapBuffersComplete(); |
| 1235 renderer_->SwapBuffersComplete(); | 1237 renderer_->SwapBuffersComplete(); |
| 1236 } | 1238 } |
| 1237 | 1239 |
| 1238 RendererSettings settings_; | 1240 RendererSettings settings_; |
| 1239 FakeOutputSurfaceClient output_surface_client_; | 1241 FakeOutputSurfaceClient output_surface_client_; |
| 1242 TestContextProvider* provider_ = nullptr; |
| 1240 std::unique_ptr<OverlayOutputSurface> output_surface_; | 1243 std::unique_ptr<OverlayOutputSurface> output_surface_; |
| 1241 FakeRendererClient renderer_client_; | 1244 FakeRendererClient renderer_client_; |
| 1242 std::unique_ptr<ResourceProvider> resource_provider_; | 1245 std::unique_ptr<ResourceProvider> resource_provider_; |
| 1243 std::unique_ptr<OverlayInfoRendererGL> renderer_; | 1246 std::unique_ptr<OverlayInfoRendererGL> renderer_; |
| 1244 scoped_refptr<TestContextProvider> provider_; | |
| 1245 MockOverlayScheduler scheduler_; | 1247 MockOverlayScheduler scheduler_; |
| 1246 }; | 1248 }; |
| 1247 | 1249 |
| 1248 TEST_F(GLRendererWithOverlaysTest, OverlayQuadNotDrawn) { | 1250 TEST_F(GLRendererWithOverlaysTest, OverlayQuadNotDrawn) { |
| 1249 bool use_validator = true; | 1251 bool use_validator = true; |
| 1250 Init(use_validator); | 1252 Init(use_validator); |
| 1251 renderer_->set_expect_overlays(true); | 1253 renderer_->set_expect_overlays(true); |
| 1252 gfx::Rect viewport_rect(16, 16); | 1254 gfx::Rect viewport_rect(16, 16); |
| 1253 | 1255 |
| 1254 std::unique_ptr<RenderPass> pass = CreateRenderPass(); | 1256 std::unique_ptr<RenderPass> pass = CreateRenderPass(); |
| (...skipping 375 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1630 | 1632 |
| 1631 // This completion corresponds to the third frame. | 1633 // This completion corresponds to the third frame. |
| 1632 SwapBuffersComplete(); | 1634 SwapBuffersComplete(); |
| 1633 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); | 1635 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); |
| 1634 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2)); | 1636 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2)); |
| 1635 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource3)); | 1637 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource3)); |
| 1636 } | 1638 } |
| 1637 | 1639 |
| 1638 } // namespace | 1640 } // namespace |
| 1639 } // namespace cc | 1641 } // namespace cc |
| OLD | NEW |