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

Side by Side Diff: cc/raster/raster_buffer_provider_perftest.cc

Issue 1910213005: cc: Refactor TileTaskWorkerPool. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@task_states
Patch Set: feedback Created 4 years, 8 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 <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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698