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

Side by Side Diff: cc/raster/raster_buffer_provider_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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/raster/raster_buffer_provider.h" 5 #include "cc/raster/raster_buffer_provider.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
123 struct RasterTaskResult { 123 struct RasterTaskResult {
124 unsigned id; 124 unsigned id;
125 bool canceled; 125 bool canceled;
126 }; 126 };
127 127
128 typedef std::vector<scoped_refptr<TileTask>> RasterTaskVector; 128 typedef std::vector<scoped_refptr<TileTask>> RasterTaskVector;
129 129
130 enum NamedTaskSet { REQUIRED_FOR_ACTIVATION, REQUIRED_FOR_DRAW, ALL }; 130 enum NamedTaskSet { REQUIRED_FOR_ACTIVATION, REQUIRED_FOR_DRAW, ALL };
131 131
132 RasterBufferProviderTest() 132 RasterBufferProviderTest()
133 : context_provider_(TestContextProvider::Create()), 133 : all_tile_tasks_finished_(
134 worker_context_provider_(TestContextProvider::CreateWorker()),
135 all_tile_tasks_finished_(
136 base::ThreadTaskRunnerHandle::Get().get(), 134 base::ThreadTaskRunnerHandle::Get().get(),
137 base::Bind(&RasterBufferProviderTest::AllTileTasksFinished, 135 base::Bind(&RasterBufferProviderTest::AllTileTasksFinished,
138 base::Unretained(this))), 136 base::Unretained(this))),
139 timeout_seconds_(5), 137 timeout_seconds_(5),
140 timed_out_(false) {} 138 timed_out_(false) {}
141 139
142 // Overridden from testing::Test: 140 // Overridden from testing::Test:
143 void SetUp() override { 141 void SetUp() override {
144 std::unique_ptr<RasterBufferProvider> raster_buffer_provider; 142 std::unique_ptr<RasterBufferProvider> raster_buffer_provider;
145 switch (GetParam()) { 143 switch (GetParam()) {
146 case RASTER_BUFFER_PROVIDER_TYPE_ZERO_COPY: 144 case RASTER_BUFFER_PROVIDER_TYPE_ZERO_COPY:
147 Create3dOutputSurfaceAndResourceProvider(); 145 Create3dOutputSurfaceAndResourceProvider();
148 raster_buffer_provider = ZeroCopyRasterBufferProvider::Create( 146 raster_buffer_provider = ZeroCopyRasterBufferProvider::Create(
149 resource_provider_.get(), PlatformColor::BestTextureFormat()); 147 resource_provider_.get(), PlatformColor::BestTextureFormat());
150 break; 148 break;
151 case RASTER_BUFFER_PROVIDER_TYPE_ONE_COPY: 149 case RASTER_BUFFER_PROVIDER_TYPE_ONE_COPY:
152 Create3dOutputSurfaceAndResourceProvider(); 150 Create3dOutputSurfaceAndResourceProvider();
153 raster_buffer_provider = OneCopyRasterBufferProvider::Create( 151 raster_buffer_provider = OneCopyRasterBufferProvider::Create(
154 base::ThreadTaskRunnerHandle::Get().get(), context_provider_.get(), 152 base::ThreadTaskRunnerHandle::Get().get(),
155 resource_provider_.get(), kMaxBytesPerCopyOperation, false, 153 output_surface_->context_provider(), resource_provider_.get(),
156 kMaxStagingBuffers, PlatformColor::BestTextureFormat()); 154 kMaxBytesPerCopyOperation, false, kMaxStagingBuffers,
155 PlatformColor::BestTextureFormat());
157 break; 156 break;
158 case RASTER_BUFFER_PROVIDER_TYPE_GPU: 157 case RASTER_BUFFER_PROVIDER_TYPE_GPU:
159 Create3dOutputSurfaceAndResourceProvider(); 158 Create3dOutputSurfaceAndResourceProvider();
160 raster_buffer_provider = GpuRasterBufferProvider::Create( 159 raster_buffer_provider =
161 context_provider_.get(), resource_provider_.get(), false, 0); 160 GpuRasterBufferProvider::Create(output_surface_->context_provider(),
161 resource_provider_.get(), false, 0);
162 break; 162 break;
163 case RASTER_BUFFER_PROVIDER_TYPE_BITMAP: 163 case RASTER_BUFFER_PROVIDER_TYPE_BITMAP:
164 CreateSoftwareOutputSurfaceAndResourceProvider(); 164 CreateSoftwareOutputSurfaceAndResourceProvider();
165 raster_buffer_provider = 165 raster_buffer_provider =
166 BitmapRasterBufferProvider::Create(resource_provider_.get()); 166 BitmapRasterBufferProvider::Create(resource_provider_.get());
167 break; 167 break;
168 } 168 }
169 169
170 DCHECK(raster_buffer_provider); 170 DCHECK(raster_buffer_provider);
171 171
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 void LoseContext(ContextProvider* context_provider) { 243 void LoseContext(ContextProvider* context_provider) {
244 if (!context_provider) 244 if (!context_provider)
245 return; 245 return;
246 context_provider->ContextGL()->LoseContextCHROMIUM( 246 context_provider->ContextGL()->LoseContextCHROMIUM(
247 GL_GUILTY_CONTEXT_RESET_ARB, GL_INNOCENT_CONTEXT_RESET_ARB); 247 GL_GUILTY_CONTEXT_RESET_ARB, GL_INNOCENT_CONTEXT_RESET_ARB);
248 context_provider->ContextGL()->Flush(); 248 context_provider->ContextGL()->Flush();
249 } 249 }
250 250
251 private: 251 private:
252 void Create3dOutputSurfaceAndResourceProvider() { 252 void Create3dOutputSurfaceAndResourceProvider() {
253 output_surface_ = FakeOutputSurface::Create3d(context_provider_, 253 gpu::Capabilities capabilities;
254 worker_context_provider_); 254 capabilities.sync_query = true;
255 output_surface_ = FakeOutputSurface::Create3d(
256 base::MakeUnique<TestContextProvider::Factory>(capabilities),
257 TestContextProvider::Create());
255 CHECK(output_surface_->BindToClient(&output_surface_client_)); 258 CHECK(output_surface_->BindToClient(&output_surface_client_));
256 TestWebGraphicsContext3D* context3d = context_provider_->TestContext3d(); 259 context_provider_ =
257 context3d->set_support_sync_query(true); 260 static_cast<TestContextProvider*>(output_surface_->context_provider());
258 resource_provider_ = FakeResourceProvider::Create( 261 resource_provider_ = FakeResourceProvider::Create(
259 output_surface_.get(), nullptr, &gpu_memory_buffer_manager_); 262 output_surface_.get(), nullptr, &gpu_memory_buffer_manager_);
260 } 263 }
261 264
262 void CreateSoftwareOutputSurfaceAndResourceProvider() { 265 void CreateSoftwareOutputSurfaceAndResourceProvider() {
263 output_surface_ = FakeOutputSurface::CreateSoftware( 266 output_surface_ = FakeOutputSurface::CreateSoftware(
264 base::WrapUnique(new SoftwareOutputDevice)); 267 base::WrapUnique(new SoftwareOutputDevice));
265 CHECK(output_surface_->BindToClient(&output_surface_client_)); 268 CHECK(output_surface_->BindToClient(&output_surface_client_));
266 resource_provider_ = FakeResourceProvider::Create( 269 resource_provider_ = FakeResourceProvider::Create(
267 output_surface_.get(), &shared_bitmap_manager_, nullptr); 270 output_surface_.get(), &shared_bitmap_manager_, nullptr);
268 } 271 }
269 272
270 void OnTaskCompleted(std::unique_ptr<ScopedResource> resource, 273 void OnTaskCompleted(std::unique_ptr<ScopedResource> resource,
271 unsigned id, 274 unsigned id,
272 bool was_canceled) { 275 bool was_canceled) {
273 RasterTaskResult result; 276 RasterTaskResult result;
274 result.id = id; 277 result.id = id;
275 result.canceled = was_canceled; 278 result.canceled = was_canceled;
276 completed_tasks_.push_back(result); 279 completed_tasks_.push_back(result);
277 } 280 }
278 281
279 void OnTimeout() { 282 void OnTimeout() {
280 timed_out_ = true; 283 timed_out_ = true;
281 base::MessageLoop::current()->QuitWhenIdle(); 284 base::MessageLoop::current()->QuitWhenIdle();
282 } 285 }
283 286
284 protected: 287 protected:
285 scoped_refptr<TestContextProvider> context_provider_;
286 scoped_refptr<TestContextProvider> worker_context_provider_;
287 FakeOutputSurfaceClient output_surface_client_; 288 FakeOutputSurfaceClient output_surface_client_;
289 TestContextProvider* context_provider_ = nullptr;
288 std::unique_ptr<FakeOutputSurface> output_surface_; 290 std::unique_ptr<FakeOutputSurface> output_surface_;
289 std::unique_ptr<ResourceProvider> resource_provider_; 291 std::unique_ptr<ResourceProvider> resource_provider_;
290 std::unique_ptr<TileTaskManager> tile_task_manager_; 292 std::unique_ptr<TileTaskManager> tile_task_manager_;
291 TestGpuMemoryBufferManager gpu_memory_buffer_manager_; 293 TestGpuMemoryBufferManager gpu_memory_buffer_manager_;
292 TestSharedBitmapManager shared_bitmap_manager_; 294 TestSharedBitmapManager shared_bitmap_manager_;
293 SynchronousTaskGraphRunner task_graph_runner_; 295 SynchronousTaskGraphRunner task_graph_runner_;
294 base::CancelableClosure timeout_; 296 base::CancelableClosure timeout_;
295 UniqueNotifier all_tile_tasks_finished_; 297 UniqueNotifier all_tile_tasks_finished_;
296 int timeout_seconds_; 298 int timeout_seconds_;
297 bool timed_out_; 299 bool timed_out_;
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
368 370
369 INSTANTIATE_TEST_CASE_P(RasterBufferProviderTests, 371 INSTANTIATE_TEST_CASE_P(RasterBufferProviderTests,
370 RasterBufferProviderTest, 372 RasterBufferProviderTest,
371 ::testing::Values(RASTER_BUFFER_PROVIDER_TYPE_ZERO_COPY, 373 ::testing::Values(RASTER_BUFFER_PROVIDER_TYPE_ZERO_COPY,
372 RASTER_BUFFER_PROVIDER_TYPE_ONE_COPY, 374 RASTER_BUFFER_PROVIDER_TYPE_ONE_COPY,
373 RASTER_BUFFER_PROVIDER_TYPE_GPU, 375 RASTER_BUFFER_PROVIDER_TYPE_GPU,
374 RASTER_BUFFER_PROVIDER_TYPE_BITMAP)); 376 RASTER_BUFFER_PROVIDER_TYPE_BITMAP));
375 377
376 } // namespace 378 } // namespace
377 } // namespace cc 379 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698