OLD | NEW |
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 <stddef.h> | 5 #include <stddef.h> |
6 #include <stdint.h> | 6 #include <stdint.h> |
7 | 7 |
8 #include "base/macros.h" | 8 #include "base/macros.h" |
9 #include "base/memory/ptr_util.h" | 9 #include "base/memory/ptr_util.h" |
10 #include "base/test/test_simple_task_runner.h" | 10 #include "base/test/test_simple_task_runner.h" |
11 #include "base/time/time.h" | 11 #include "base/time/time.h" |
12 #include "cc/debug/lap_timer.h" | 12 #include "cc/debug/lap_timer.h" |
13 #include "cc/output/context_provider.h" | 13 #include "cc/output/context_provider.h" |
14 #include "cc/raster/bitmap_tile_task_worker_pool.h" | 14 #include "cc/raster/bitmap_raster_buffer_provider.h" |
| 15 #include "cc/raster/gpu_raster_buffer_provider.h" |
15 #include "cc/raster/gpu_rasterizer.h" | 16 #include "cc/raster/gpu_rasterizer.h" |
16 #include "cc/raster/gpu_tile_task_worker_pool.h" | 17 #include "cc/raster/one_copy_raster_buffer_provider.h" |
17 #include "cc/raster/one_copy_tile_task_worker_pool.h" | 18 #include "cc/raster/raster_buffer_provider.h" |
18 #include "cc/raster/synchronous_task_graph_runner.h" | 19 #include "cc/raster/synchronous_task_graph_runner.h" |
19 #include "cc/raster/tile_task_worker_pool.h" | 20 #include "cc/raster/zero_copy_raster_buffer_provider.h" |
20 #include "cc/raster/zero_copy_tile_task_worker_pool.h" | |
21 #include "cc/resources/resource_pool.h" | 21 #include "cc/resources/resource_pool.h" |
22 #include "cc/resources/resource_provider.h" | 22 #include "cc/resources/resource_provider.h" |
23 #include "cc/resources/scoped_resource.h" | 23 #include "cc/resources/scoped_resource.h" |
24 #include "cc/test/fake_output_surface.h" | 24 #include "cc/test/fake_output_surface.h" |
25 #include "cc/test/fake_output_surface_client.h" | 25 #include "cc/test/fake_output_surface_client.h" |
26 #include "cc/test/fake_resource_provider.h" | 26 #include "cc/test/fake_resource_provider.h" |
27 #include "cc/test/test_context_support.h" | 27 #include "cc/test/test_context_support.h" |
28 #include "cc/test/test_gpu_memory_buffer_manager.h" | 28 #include "cc/test/test_gpu_memory_buffer_manager.h" |
29 #include "cc/test/test_shared_bitmap_manager.h" | 29 #include "cc/test/test_shared_bitmap_manager.h" |
30 #include "cc/test/test_web_graphics_context_3d.h" | 30 #include "cc/test/test_web_graphics_context_3d.h" |
| 31 #include "cc/tiles/tile_task_manager.h" |
31 #include "testing/gtest/include/gtest/gtest.h" | 32 #include "testing/gtest/include/gtest/gtest.h" |
32 #include "testing/perf/perf_test.h" | 33 #include "testing/perf/perf_test.h" |
33 #include "third_party/khronos/GLES2/gl2.h" | 34 #include "third_party/khronos/GLES2/gl2.h" |
34 #include "third_party/skia/include/gpu/GrContext.h" | 35 #include "third_party/skia/include/gpu/GrContext.h" |
35 #include "third_party/skia/include/gpu/gl/GrGLInterface.h" | 36 #include "third_party/skia/include/gpu/gl/GrGLInterface.h" |
36 | 37 |
37 namespace cc { | 38 namespace cc { |
38 namespace { | 39 namespace { |
39 | 40 |
40 class PerfGLES2Interface : public gpu::gles2::GLES2InterfaceStub { | 41 class PerfGLES2Interface : public gpu::gles2::GLES2InterfaceStub { |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
104 | 105 |
105 private: | 106 private: |
106 ~PerfContextProvider() override {} | 107 ~PerfContextProvider() override {} |
107 | 108 |
108 std::unique_ptr<PerfGLES2Interface> context_gl_; | 109 std::unique_ptr<PerfGLES2Interface> context_gl_; |
109 skia::RefPtr<class GrContext> gr_context_; | 110 skia::RefPtr<class GrContext> gr_context_; |
110 TestContextSupport support_; | 111 TestContextSupport support_; |
111 base::Lock context_lock_; | 112 base::Lock context_lock_; |
112 }; | 113 }; |
113 | 114 |
114 enum TileTaskWorkerPoolType { | 115 enum RasterBufferProviderType { |
115 TILE_TASK_WORKER_POOL_TYPE_ZERO_COPY, | 116 RASTER_BUFFER_PROVIDER_TYPE_ZERO_COPY, |
116 TILE_TASK_WORKER_POOL_TYPE_ONE_COPY, | 117 RASTER_BUFFER_PROVIDER_TYPE_ONE_COPY, |
117 TILE_TASK_WORKER_POOL_TYPE_GPU, | 118 RASTER_BUFFER_PROVIDER_TYPE_GPU, |
118 TILE_TASK_WORKER_POOL_TYPE_BITMAP | 119 RASTER_BUFFER_PROVIDER_TYPE_BITMAP |
119 }; | 120 }; |
120 | 121 |
121 static const int kTimeLimitMillis = 2000; | 122 static const int kTimeLimitMillis = 2000; |
122 static const int kWarmupRuns = 5; | 123 static const int kWarmupRuns = 5; |
123 static const int kTimeCheckInterval = 10; | 124 static const int kTimeCheckInterval = 10; |
124 | 125 |
125 class PerfImageDecodeTaskImpl : public TileTask { | 126 class PerfImageDecodeTaskImpl : public TileTask { |
126 public: | 127 public: |
127 PerfImageDecodeTaskImpl() : TileTask(true) {} | 128 PerfImageDecodeTaskImpl() : TileTask(true) {} |
128 | 129 |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
174 protected: | 175 protected: |
175 ~PerfRasterTaskImpl() override {} | 176 ~PerfRasterTaskImpl() override {} |
176 | 177 |
177 private: | 178 private: |
178 std::unique_ptr<ScopedResource> resource_; | 179 std::unique_ptr<ScopedResource> resource_; |
179 std::unique_ptr<RasterBuffer> raster_buffer_; | 180 std::unique_ptr<RasterBuffer> raster_buffer_; |
180 | 181 |
181 DISALLOW_COPY_AND_ASSIGN(PerfRasterTaskImpl); | 182 DISALLOW_COPY_AND_ASSIGN(PerfRasterTaskImpl); |
182 }; | 183 }; |
183 | 184 |
184 class TileTaskWorkerPoolPerfTestBase { | 185 class RasterBufferProviderPerfTestBase { |
185 public: | 186 public: |
186 typedef std::vector<scoped_refptr<TileTask>> RasterTaskVector; | 187 typedef std::vector<scoped_refptr<TileTask>> RasterTaskVector; |
187 | 188 |
188 enum NamedTaskSet { REQUIRED_FOR_ACTIVATION, REQUIRED_FOR_DRAW, ALL }; | 189 enum NamedTaskSet { REQUIRED_FOR_ACTIVATION, REQUIRED_FOR_DRAW, ALL }; |
189 | 190 |
190 TileTaskWorkerPoolPerfTestBase() | 191 RasterBufferProviderPerfTestBase() |
191 : context_provider_(make_scoped_refptr(new PerfContextProvider)), | 192 : context_provider_(make_scoped_refptr(new PerfContextProvider)), |
192 task_runner_(new base::TestSimpleTaskRunner), | 193 task_runner_(new base::TestSimpleTaskRunner), |
193 task_graph_runner_(new SynchronousTaskGraphRunner), | 194 task_graph_runner_(new SynchronousTaskGraphRunner), |
194 timer_(kWarmupRuns, | 195 timer_(kWarmupRuns, |
195 base::TimeDelta::FromMilliseconds(kTimeLimitMillis), | 196 base::TimeDelta::FromMilliseconds(kTimeLimitMillis), |
196 kTimeCheckInterval) {} | 197 kTimeCheckInterval) {} |
197 | 198 |
198 void CreateImageDecodeTasks(unsigned num_image_decode_tasks, | 199 void CreateImageDecodeTasks(unsigned num_image_decode_tasks, |
199 TileTask::Vector* image_decode_tasks) { | 200 TileTask::Vector* image_decode_tasks) { |
200 for (unsigned i = 0; i < num_image_decode_tasks; ++i) | 201 for (unsigned i = 0; i < num_image_decode_tasks; ++i) |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
242 protected: | 243 protected: |
243 scoped_refptr<ContextProvider> context_provider_; | 244 scoped_refptr<ContextProvider> context_provider_; |
244 FakeOutputSurfaceClient output_surface_client_; | 245 FakeOutputSurfaceClient output_surface_client_; |
245 std::unique_ptr<FakeOutputSurface> output_surface_; | 246 std::unique_ptr<FakeOutputSurface> output_surface_; |
246 std::unique_ptr<ResourceProvider> resource_provider_; | 247 std::unique_ptr<ResourceProvider> resource_provider_; |
247 scoped_refptr<base::TestSimpleTaskRunner> task_runner_; | 248 scoped_refptr<base::TestSimpleTaskRunner> task_runner_; |
248 std::unique_ptr<SynchronousTaskGraphRunner> task_graph_runner_; | 249 std::unique_ptr<SynchronousTaskGraphRunner> task_graph_runner_; |
249 LapTimer timer_; | 250 LapTimer timer_; |
250 }; | 251 }; |
251 | 252 |
252 class TileTaskWorkerPoolPerfTest | 253 class RasterBufferProviderPerfTest |
253 : public TileTaskWorkerPoolPerfTestBase, | 254 : public RasterBufferProviderPerfTestBase, |
254 public testing::TestWithParam<TileTaskWorkerPoolType> { | 255 public testing::TestWithParam<RasterBufferProviderType> { |
255 public: | 256 public: |
256 // Overridden from testing::Test: | 257 // Overridden from testing::Test: |
257 void SetUp() override { | 258 void SetUp() override { |
| 259 std::unique_ptr<RasterBufferProvider> raster_buffer_provider; |
258 switch (GetParam()) { | 260 switch (GetParam()) { |
259 case TILE_TASK_WORKER_POOL_TYPE_ZERO_COPY: | 261 case RASTER_BUFFER_PROVIDER_TYPE_ZERO_COPY: |
260 Create3dOutputSurfaceAndResourceProvider(); | 262 Create3dOutputSurfaceAndResourceProvider(); |
261 tile_task_worker_pool_ = ZeroCopyTileTaskWorkerPool::Create( | 263 raster_buffer_provider = ZeroCopyRasterBufferProvider::Create( |
262 task_runner_.get(), task_graph_runner_.get(), | |
263 resource_provider_.get(), PlatformColor::BestTextureFormat()); | 264 resource_provider_.get(), PlatformColor::BestTextureFormat()); |
264 break; | 265 break; |
265 case TILE_TASK_WORKER_POOL_TYPE_ONE_COPY: | 266 case RASTER_BUFFER_PROVIDER_TYPE_ONE_COPY: |
266 Create3dOutputSurfaceAndResourceProvider(); | 267 Create3dOutputSurfaceAndResourceProvider(); |
267 tile_task_worker_pool_ = OneCopyTileTaskWorkerPool::Create( | 268 raster_buffer_provider = OneCopyRasterBufferProvider::Create( |
268 task_runner_.get(), task_graph_runner_.get(), | 269 task_runner_.get(), context_provider_.get(), |
269 context_provider_.get(), resource_provider_.get(), | 270 resource_provider_.get(), std::numeric_limits<int>::max(), false, |
270 std::numeric_limits<int>::max(), false, | |
271 std::numeric_limits<int>::max(), | 271 std::numeric_limits<int>::max(), |
272 PlatformColor::BestTextureFormat()); | 272 PlatformColor::BestTextureFormat()); |
273 break; | 273 break; |
274 case TILE_TASK_WORKER_POOL_TYPE_GPU: | 274 case RASTER_BUFFER_PROVIDER_TYPE_GPU: |
275 Create3dOutputSurfaceAndResourceProvider(); | 275 Create3dOutputSurfaceAndResourceProvider(); |
276 tile_task_worker_pool_ = GpuTileTaskWorkerPool::Create( | 276 raster_buffer_provider = GpuRasterBufferProvider::Create( |
277 task_runner_.get(), task_graph_runner_.get(), | |
278 context_provider_.get(), resource_provider_.get(), false, 0); | 277 context_provider_.get(), resource_provider_.get(), false, 0); |
279 break; | 278 break; |
280 case TILE_TASK_WORKER_POOL_TYPE_BITMAP: | 279 case RASTER_BUFFER_PROVIDER_TYPE_BITMAP: |
281 CreateSoftwareOutputSurfaceAndResourceProvider(); | 280 CreateSoftwareOutputSurfaceAndResourceProvider(); |
282 tile_task_worker_pool_ = BitmapTileTaskWorkerPool::Create( | 281 raster_buffer_provider = |
283 task_runner_.get(), task_graph_runner_.get(), | 282 BitmapRasterBufferProvider::Create(resource_provider_.get()); |
284 resource_provider_.get()); | |
285 break; | 283 break; |
286 } | 284 } |
287 | 285 |
288 DCHECK(tile_task_worker_pool_); | 286 DCHECK(raster_buffer_provider); |
| 287 |
| 288 tile_task_manager_ = TileTaskManagerImpl::Create( |
| 289 std::move(raster_buffer_provider), task_graph_runner_.get()); |
289 } | 290 } |
290 void TearDown() override { | 291 void TearDown() override { |
291 tile_task_worker_pool_->Shutdown(); | 292 tile_task_manager_->Shutdown(); |
292 tile_task_worker_pool_->CheckForCompletedTasks(); | 293 tile_task_manager_->CheckForCompletedTasks(); |
293 } | 294 } |
294 | 295 |
295 void RunMessageLoopUntilAllTasksHaveCompleted() { | 296 void RunMessageLoopUntilAllTasksHaveCompleted() { |
296 task_graph_runner_->RunUntilIdle(); | 297 task_graph_runner_->RunUntilIdle(); |
297 task_runner_->RunUntilIdle(); | 298 task_runner_->RunUntilIdle(); |
298 } | 299 } |
299 | 300 |
300 void RunScheduleTasksTest(const std::string& test_name, | 301 void RunScheduleTasksTest(const std::string& test_name, |
301 unsigned num_raster_tasks, | 302 unsigned num_raster_tasks, |
302 unsigned num_image_decode_tasks) { | 303 unsigned num_image_decode_tasks) { |
303 RasterTaskVector raster_tasks; | 304 RasterTaskVector raster_tasks; |
304 CreateRasterTasks(num_raster_tasks, num_image_decode_tasks, &raster_tasks); | 305 CreateRasterTasks(num_raster_tasks, num_image_decode_tasks, &raster_tasks); |
305 | 306 |
306 // Avoid unnecessary heap allocations by reusing the same graph. | 307 // Avoid unnecessary heap allocations by reusing the same graph. |
307 TaskGraph graph; | 308 TaskGraph graph; |
308 | 309 |
309 timer_.Reset(); | 310 timer_.Reset(); |
310 do { | 311 do { |
311 graph.Reset(); | 312 graph.Reset(); |
312 BuildTileTaskGraph(&graph, raster_tasks); | 313 BuildTileTaskGraph(&graph, raster_tasks); |
313 tile_task_worker_pool_->ScheduleTasks(&graph); | 314 tile_task_manager_->ScheduleTasks(&graph); |
314 tile_task_worker_pool_->CheckForCompletedTasks(); | 315 tile_task_manager_->CheckForCompletedTasks(); |
315 timer_.NextLap(); | 316 timer_.NextLap(); |
316 } while (!timer_.HasTimeLimitExpired()); | 317 } while (!timer_.HasTimeLimitExpired()); |
317 | 318 |
318 TaskGraph empty; | 319 TaskGraph empty; |
319 tile_task_worker_pool_->ScheduleTasks(&empty); | 320 tile_task_manager_->ScheduleTasks(&empty); |
320 RunMessageLoopUntilAllTasksHaveCompleted(); | 321 RunMessageLoopUntilAllTasksHaveCompleted(); |
321 | 322 |
322 perf_test::PrintResult("schedule_tasks", TestModifierString(), test_name, | 323 perf_test::PrintResult("schedule_tasks", TestModifierString(), test_name, |
323 timer_.LapsPerSecond(), "runs/s", true); | 324 timer_.LapsPerSecond(), "runs/s", true); |
324 } | 325 } |
325 | 326 |
326 void RunScheduleAlternateTasksTest(const std::string& test_name, | 327 void RunScheduleAlternateTasksTest(const std::string& test_name, |
327 unsigned num_raster_tasks, | 328 unsigned num_raster_tasks, |
328 unsigned num_image_decode_tasks) { | 329 unsigned num_image_decode_tasks) { |
329 const size_t kNumVersions = 2; | 330 const size_t kNumVersions = 2; |
330 RasterTaskVector raster_tasks[kNumVersions]; | 331 RasterTaskVector raster_tasks[kNumVersions]; |
331 for (size_t i = 0; i < kNumVersions; ++i) { | 332 for (size_t i = 0; i < kNumVersions; ++i) { |
332 CreateRasterTasks(num_raster_tasks, num_image_decode_tasks, | 333 CreateRasterTasks(num_raster_tasks, num_image_decode_tasks, |
333 &raster_tasks[i]); | 334 &raster_tasks[i]); |
334 } | 335 } |
335 | 336 |
336 // Avoid unnecessary heap allocations by reusing the same graph. | 337 // Avoid unnecessary heap allocations by reusing the same graph. |
337 TaskGraph graph; | 338 TaskGraph graph; |
338 | 339 |
339 size_t count = 0; | 340 size_t count = 0; |
340 timer_.Reset(); | 341 timer_.Reset(); |
341 do { | 342 do { |
342 graph.Reset(); | 343 graph.Reset(); |
343 BuildTileTaskGraph(&graph, raster_tasks[count % kNumVersions]); | 344 BuildTileTaskGraph(&graph, raster_tasks[count % kNumVersions]); |
344 tile_task_worker_pool_->ScheduleTasks(&graph); | 345 tile_task_manager_->ScheduleTasks(&graph); |
345 tile_task_worker_pool_->CheckForCompletedTasks(); | 346 tile_task_manager_->CheckForCompletedTasks(); |
346 ++count; | 347 ++count; |
347 timer_.NextLap(); | 348 timer_.NextLap(); |
348 } while (!timer_.HasTimeLimitExpired()); | 349 } while (!timer_.HasTimeLimitExpired()); |
349 | 350 |
350 TaskGraph empty; | 351 TaskGraph empty; |
351 tile_task_worker_pool_->ScheduleTasks(&empty); | 352 tile_task_manager_->ScheduleTasks(&empty); |
352 RunMessageLoopUntilAllTasksHaveCompleted(); | 353 RunMessageLoopUntilAllTasksHaveCompleted(); |
353 | 354 |
354 perf_test::PrintResult("schedule_alternate_tasks", TestModifierString(), | 355 perf_test::PrintResult("schedule_alternate_tasks", TestModifierString(), |
355 test_name, timer_.LapsPerSecond(), "runs/s", true); | 356 test_name, timer_.LapsPerSecond(), "runs/s", true); |
356 } | 357 } |
357 | 358 |
358 void RunScheduleAndExecuteTasksTest(const std::string& test_name, | 359 void RunScheduleAndExecuteTasksTest(const std::string& test_name, |
359 unsigned num_raster_tasks, | 360 unsigned num_raster_tasks, |
360 unsigned num_image_decode_tasks) { | 361 unsigned num_image_decode_tasks) { |
361 RasterTaskVector raster_tasks; | 362 RasterTaskVector raster_tasks; |
362 CreateRasterTasks(num_raster_tasks, num_image_decode_tasks, &raster_tasks); | 363 CreateRasterTasks(num_raster_tasks, num_image_decode_tasks, &raster_tasks); |
363 | 364 |
364 // Avoid unnecessary heap allocations by reusing the same graph. | 365 // Avoid unnecessary heap allocations by reusing the same graph. |
365 TaskGraph graph; | 366 TaskGraph graph; |
366 | 367 |
367 timer_.Reset(); | 368 timer_.Reset(); |
368 do { | 369 do { |
369 graph.Reset(); | 370 graph.Reset(); |
370 BuildTileTaskGraph(&graph, raster_tasks); | 371 BuildTileTaskGraph(&graph, raster_tasks); |
371 tile_task_worker_pool_->ScheduleTasks(&graph); | 372 tile_task_manager_->ScheduleTasks(&graph); |
372 RunMessageLoopUntilAllTasksHaveCompleted(); | 373 RunMessageLoopUntilAllTasksHaveCompleted(); |
373 timer_.NextLap(); | 374 timer_.NextLap(); |
374 } while (!timer_.HasTimeLimitExpired()); | 375 } while (!timer_.HasTimeLimitExpired()); |
375 | 376 |
376 TaskGraph empty; | 377 TaskGraph empty; |
377 tile_task_worker_pool_->ScheduleTasks(&empty); | 378 tile_task_manager_->ScheduleTasks(&empty); |
378 RunMessageLoopUntilAllTasksHaveCompleted(); | 379 RunMessageLoopUntilAllTasksHaveCompleted(); |
379 | 380 |
380 perf_test::PrintResult("schedule_and_execute_tasks", TestModifierString(), | 381 perf_test::PrintResult("schedule_and_execute_tasks", TestModifierString(), |
381 test_name, timer_.LapsPerSecond(), "runs/s", true); | 382 test_name, timer_.LapsPerSecond(), "runs/s", true); |
382 } | 383 } |
383 | 384 |
384 private: | 385 private: |
385 void Create3dOutputSurfaceAndResourceProvider() { | 386 void Create3dOutputSurfaceAndResourceProvider() { |
386 output_surface_ = FakeOutputSurface::Create3d(context_provider_); | 387 output_surface_ = FakeOutputSurface::Create3d(context_provider_); |
387 CHECK(output_surface_->BindToClient(&output_surface_client_)); | 388 CHECK(output_surface_->BindToClient(&output_surface_client_)); |
388 resource_provider_ = FakeResourceProvider::Create( | 389 resource_provider_ = FakeResourceProvider::Create( |
389 output_surface_.get(), nullptr, &gpu_memory_buffer_manager_); | 390 output_surface_.get(), nullptr, &gpu_memory_buffer_manager_); |
390 } | 391 } |
391 | 392 |
392 void CreateSoftwareOutputSurfaceAndResourceProvider() { | 393 void CreateSoftwareOutputSurfaceAndResourceProvider() { |
393 output_surface_ = FakeOutputSurface::CreateSoftware( | 394 output_surface_ = FakeOutputSurface::CreateSoftware( |
394 base::WrapUnique(new SoftwareOutputDevice)); | 395 base::WrapUnique(new SoftwareOutputDevice)); |
395 CHECK(output_surface_->BindToClient(&output_surface_client_)); | 396 CHECK(output_surface_->BindToClient(&output_surface_client_)); |
396 resource_provider_ = FakeResourceProvider::Create( | 397 resource_provider_ = FakeResourceProvider::Create( |
397 output_surface_.get(), &shared_bitmap_manager_, nullptr); | 398 output_surface_.get(), &shared_bitmap_manager_, nullptr); |
398 } | 399 } |
399 | 400 |
400 std::string TestModifierString() const { | 401 std::string TestModifierString() const { |
401 switch (GetParam()) { | 402 switch (GetParam()) { |
402 case TILE_TASK_WORKER_POOL_TYPE_ZERO_COPY: | 403 case RASTER_BUFFER_PROVIDER_TYPE_ZERO_COPY: |
403 return std::string("_zero_copy_tile_task_worker_pool"); | 404 return std::string("_zero_copy_raster_buffer_provider"); |
404 case TILE_TASK_WORKER_POOL_TYPE_ONE_COPY: | 405 case RASTER_BUFFER_PROVIDER_TYPE_ONE_COPY: |
405 return std::string("_one_copy_tile_task_worker_pool"); | 406 return std::string("_one_copy_raster_buffer_provider"); |
406 case TILE_TASK_WORKER_POOL_TYPE_GPU: | 407 case RASTER_BUFFER_PROVIDER_TYPE_GPU: |
407 return std::string("_gpu_tile_task_worker_pool"); | 408 return std::string("_gpu_raster_buffer_provider"); |
408 case TILE_TASK_WORKER_POOL_TYPE_BITMAP: | 409 case RASTER_BUFFER_PROVIDER_TYPE_BITMAP: |
409 return std::string("_bitmap_tile_task_worker_pool"); | 410 return std::string("_bitmap_raster_buffer_provider"); |
410 } | 411 } |
411 NOTREACHED(); | 412 NOTREACHED(); |
412 return std::string(); | 413 return std::string(); |
413 } | 414 } |
414 | 415 |
415 std::unique_ptr<TileTaskWorkerPool> tile_task_worker_pool_; | 416 std::unique_ptr<TileTaskManager> tile_task_manager_; |
416 TestGpuMemoryBufferManager gpu_memory_buffer_manager_; | 417 TestGpuMemoryBufferManager gpu_memory_buffer_manager_; |
417 TestSharedBitmapManager shared_bitmap_manager_; | 418 TestSharedBitmapManager shared_bitmap_manager_; |
418 }; | 419 }; |
419 | 420 |
420 TEST_P(TileTaskWorkerPoolPerfTest, ScheduleTasks) { | 421 TEST_P(RasterBufferProviderPerfTest, ScheduleTasks) { |
421 RunScheduleTasksTest("1_0", 1, 0); | 422 RunScheduleTasksTest("1_0", 1, 0); |
422 RunScheduleTasksTest("32_0", 32, 0); | 423 RunScheduleTasksTest("32_0", 32, 0); |
423 RunScheduleTasksTest("1_1", 1, 1); | 424 RunScheduleTasksTest("1_1", 1, 1); |
424 RunScheduleTasksTest("32_1", 32, 1); | 425 RunScheduleTasksTest("32_1", 32, 1); |
425 RunScheduleTasksTest("1_4", 1, 4); | 426 RunScheduleTasksTest("1_4", 1, 4); |
426 RunScheduleTasksTest("32_4", 32, 4); | 427 RunScheduleTasksTest("32_4", 32, 4); |
427 } | 428 } |
428 | 429 |
429 TEST_P(TileTaskWorkerPoolPerfTest, ScheduleAlternateTasks) { | 430 TEST_P(RasterBufferProviderPerfTest, ScheduleAlternateTasks) { |
430 RunScheduleAlternateTasksTest("1_0", 1, 0); | 431 RunScheduleAlternateTasksTest("1_0", 1, 0); |
431 RunScheduleAlternateTasksTest("32_0", 32, 0); | 432 RunScheduleAlternateTasksTest("32_0", 32, 0); |
432 RunScheduleAlternateTasksTest("1_1", 1, 1); | 433 RunScheduleAlternateTasksTest("1_1", 1, 1); |
433 RunScheduleAlternateTasksTest("32_1", 32, 1); | 434 RunScheduleAlternateTasksTest("32_1", 32, 1); |
434 RunScheduleAlternateTasksTest("1_4", 1, 4); | 435 RunScheduleAlternateTasksTest("1_4", 1, 4); |
435 RunScheduleAlternateTasksTest("32_4", 32, 4); | 436 RunScheduleAlternateTasksTest("32_4", 32, 4); |
436 } | 437 } |
437 | 438 |
438 TEST_P(TileTaskWorkerPoolPerfTest, ScheduleAndExecuteTasks) { | 439 TEST_P(RasterBufferProviderPerfTest, ScheduleAndExecuteTasks) { |
439 RunScheduleAndExecuteTasksTest("1_0", 1, 0); | 440 RunScheduleAndExecuteTasksTest("1_0", 1, 0); |
440 RunScheduleAndExecuteTasksTest("32_0", 32, 0); | 441 RunScheduleAndExecuteTasksTest("32_0", 32, 0); |
441 RunScheduleAndExecuteTasksTest("1_1", 1, 1); | 442 RunScheduleAndExecuteTasksTest("1_1", 1, 1); |
442 RunScheduleAndExecuteTasksTest("32_1", 32, 1); | 443 RunScheduleAndExecuteTasksTest("32_1", 32, 1); |
443 RunScheduleAndExecuteTasksTest("1_4", 1, 4); | 444 RunScheduleAndExecuteTasksTest("1_4", 1, 4); |
444 RunScheduleAndExecuteTasksTest("32_4", 32, 4); | 445 RunScheduleAndExecuteTasksTest("32_4", 32, 4); |
445 } | 446 } |
446 | 447 |
447 INSTANTIATE_TEST_CASE_P(TileTaskWorkerPoolPerfTests, | 448 INSTANTIATE_TEST_CASE_P(RasterBufferProviderPerfTests, |
448 TileTaskWorkerPoolPerfTest, | 449 RasterBufferProviderPerfTest, |
449 ::testing::Values(TILE_TASK_WORKER_POOL_TYPE_ZERO_COPY, | 450 ::testing::Values(RASTER_BUFFER_PROVIDER_TYPE_ZERO_COPY, |
450 TILE_TASK_WORKER_POOL_TYPE_ONE_COPY, | 451 RASTER_BUFFER_PROVIDER_TYPE_ONE_COPY, |
451 TILE_TASK_WORKER_POOL_TYPE_GPU, | 452 RASTER_BUFFER_PROVIDER_TYPE_GPU, |
452 TILE_TASK_WORKER_POOL_TYPE_BITMAP)); | 453 RASTER_BUFFER_PROVIDER_TYPE_BITMAP)); |
453 | 454 |
454 class TileTaskWorkerPoolCommonPerfTest : public TileTaskWorkerPoolPerfTestBase, | 455 class RasterBufferProviderCommonPerfTest |
455 public testing::Test { | 456 : public RasterBufferProviderPerfTestBase, |
| 457 public testing::Test { |
456 public: | 458 public: |
457 // Overridden from testing::Test: | 459 // Overridden from testing::Test: |
458 void SetUp() override { | 460 void SetUp() override { |
459 output_surface_ = FakeOutputSurface::Create3d(context_provider_); | 461 output_surface_ = FakeOutputSurface::Create3d(context_provider_); |
460 CHECK(output_surface_->BindToClient(&output_surface_client_)); | 462 CHECK(output_surface_->BindToClient(&output_surface_client_)); |
461 resource_provider_ = | 463 resource_provider_ = |
462 FakeResourceProvider::Create(output_surface_.get(), nullptr); | 464 FakeResourceProvider::Create(output_surface_.get(), nullptr); |
463 } | 465 } |
464 | 466 |
465 void RunBuildTileTaskGraphTest(const std::string& test_name, | 467 void RunBuildTileTaskGraphTest(const std::string& test_name, |
(...skipping 10 matching lines...) Expand all Loading... |
476 graph.Reset(); | 478 graph.Reset(); |
477 BuildTileTaskGraph(&graph, raster_tasks); | 479 BuildTileTaskGraph(&graph, raster_tasks); |
478 timer_.NextLap(); | 480 timer_.NextLap(); |
479 } while (!timer_.HasTimeLimitExpired()); | 481 } while (!timer_.HasTimeLimitExpired()); |
480 | 482 |
481 perf_test::PrintResult("build_raster_task_graph", "", test_name, | 483 perf_test::PrintResult("build_raster_task_graph", "", test_name, |
482 timer_.LapsPerSecond(), "runs/s", true); | 484 timer_.LapsPerSecond(), "runs/s", true); |
483 } | 485 } |
484 }; | 486 }; |
485 | 487 |
486 TEST_F(TileTaskWorkerPoolCommonPerfTest, BuildTileTaskGraph) { | 488 TEST_F(RasterBufferProviderCommonPerfTest, BuildTileTaskGraph) { |
487 RunBuildTileTaskGraphTest("1_0", 1, 0); | 489 RunBuildTileTaskGraphTest("1_0", 1, 0); |
488 RunBuildTileTaskGraphTest("32_0", 32, 0); | 490 RunBuildTileTaskGraphTest("32_0", 32, 0); |
489 RunBuildTileTaskGraphTest("1_1", 1, 1); | 491 RunBuildTileTaskGraphTest("1_1", 1, 1); |
490 RunBuildTileTaskGraphTest("32_1", 32, 1); | 492 RunBuildTileTaskGraphTest("32_1", 32, 1); |
491 RunBuildTileTaskGraphTest("1_4", 1, 4); | 493 RunBuildTileTaskGraphTest("1_4", 1, 4); |
492 RunBuildTileTaskGraphTest("32_4", 32, 4); | 494 RunBuildTileTaskGraphTest("32_4", 32, 4); |
493 } | 495 } |
494 | 496 |
495 } // namespace | 497 } // namespace |
496 } // namespace cc | 498 } // namespace cc |
OLD | NEW |