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

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

Issue 1985973002: Defer compositor context creation to the thread. Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: contextfactory: . Created 4 years, 7 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 <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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698