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

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

Issue 2337913003: Fork cc::OutputSurface into cc::CompositorFrameSink. (Closed)
Patch Set: cfsfork: android-vulkan Created 4 years, 3 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
« no previous file with comments | « cc/proto/commit_earlyout_reason.proto ('k') | cc/raster/raster_buffer_provider_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_cache_controller.h" 13 #include "cc/output/context_cache_controller.h"
14 #include "cc/output/context_provider.h" 14 #include "cc/output/context_provider.h"
15 #include "cc/raster/bitmap_raster_buffer_provider.h" 15 #include "cc/raster/bitmap_raster_buffer_provider.h"
16 #include "cc/raster/gpu_raster_buffer_provider.h" 16 #include "cc/raster/gpu_raster_buffer_provider.h"
17 #include "cc/raster/one_copy_raster_buffer_provider.h" 17 #include "cc/raster/one_copy_raster_buffer_provider.h"
18 #include "cc/raster/raster_buffer_provider.h" 18 #include "cc/raster/raster_buffer_provider.h"
19 #include "cc/raster/synchronous_task_graph_runner.h" 19 #include "cc/raster/synchronous_task_graph_runner.h"
20 #include "cc/raster/zero_copy_raster_buffer_provider.h" 20 #include "cc/raster/zero_copy_raster_buffer_provider.h"
21 #include "cc/resources/platform_color.h" 21 #include "cc/resources/platform_color.h"
22 #include "cc/resources/resource_pool.h" 22 #include "cc/resources/resource_pool.h"
23 #include "cc/resources/resource_provider.h" 23 #include "cc/resources/resource_provider.h"
24 #include "cc/resources/scoped_resource.h" 24 #include "cc/resources/scoped_resource.h"
25 #include "cc/test/fake_output_surface.h"
26 #include "cc/test/fake_output_surface_client.h"
27 #include "cc/test/fake_resource_provider.h" 25 #include "cc/test/fake_resource_provider.h"
26 #include "cc/test/test_context_provider.h"
28 #include "cc/test/test_context_support.h" 27 #include "cc/test/test_context_support.h"
29 #include "cc/test/test_gpu_memory_buffer_manager.h" 28 #include "cc/test/test_gpu_memory_buffer_manager.h"
30 #include "cc/test/test_shared_bitmap_manager.h" 29 #include "cc/test/test_shared_bitmap_manager.h"
31 #include "cc/test/test_web_graphics_context_3d.h" 30 #include "cc/test/test_web_graphics_context_3d.h"
32 #include "cc/tiles/tile_task_manager.h" 31 #include "cc/tiles/tile_task_manager.h"
33 #include "gpu/command_buffer/common/sync_token.h" 32 #include "gpu/command_buffer/common/sync_token.h"
34 #include "testing/gtest/include/gtest/gtest.h" 33 #include "testing/gtest/include/gtest/gtest.h"
35 #include "testing/perf/perf_test.h" 34 #include "testing/perf/perf_test.h"
36 #include "third_party/khronos/GLES2/gl2.h" 35 #include "third_party/khronos/GLES2/gl2.h"
37 #include "third_party/skia/include/gpu/GrContext.h" 36 #include "third_party/skia/include/gpu/GrContext.h"
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after
303 302
304 graph->nodes.push_back(TaskGraph::Node( 303 graph->nodes.push_back(TaskGraph::Node(
305 raster_task.get(), 0u /* group */, priority, 304 raster_task.get(), 0u /* group */, priority,
306 static_cast<uint32_t>(raster_task->dependencies().size()))); 305 static_cast<uint32_t>(raster_task->dependencies().size())));
307 } 306 }
308 } 307 }
309 308
310 protected: 309 protected:
311 scoped_refptr<ContextProvider> compositor_context_provider_; 310 scoped_refptr<ContextProvider> compositor_context_provider_;
312 scoped_refptr<ContextProvider> worker_context_provider_; 311 scoped_refptr<ContextProvider> worker_context_provider_;
313 FakeOutputSurfaceClient output_surface_client_;
314 std::unique_ptr<FakeOutputSurface> output_surface_;
315 std::unique_ptr<ResourceProvider> resource_provider_; 312 std::unique_ptr<ResourceProvider> resource_provider_;
316 scoped_refptr<base::TestSimpleTaskRunner> task_runner_; 313 scoped_refptr<base::TestSimpleTaskRunner> task_runner_;
317 std::unique_ptr<SynchronousTaskGraphRunner> task_graph_runner_; 314 std::unique_ptr<SynchronousTaskGraphRunner> task_graph_runner_;
318 LapTimer timer_; 315 LapTimer timer_;
319 }; 316 };
320 317
321 class RasterBufferProviderPerfTest 318 class RasterBufferProviderPerfTest
322 : public RasterBufferProviderPerfTestBase, 319 : public RasterBufferProviderPerfTestBase,
323 public PerfRasterBufferProviderHelper, 320 public PerfRasterBufferProviderHelper,
324 public testing::TestWithParam<RasterBufferProviderType> { 321 public testing::TestWithParam<RasterBufferProviderType> {
325 public: 322 public:
326 // Overridden from testing::Test: 323 // Overridden from testing::Test:
327 void SetUp() override { 324 void SetUp() override {
328 switch (GetParam()) { 325 switch (GetParam()) {
329 case RASTER_BUFFER_PROVIDER_TYPE_ZERO_COPY: 326 case RASTER_BUFFER_PROVIDER_TYPE_ZERO_COPY:
330 Create3dOutputSurfaceAndResourceProvider(); 327 Create3dResourceProvider();
331 raster_buffer_provider_ = ZeroCopyRasterBufferProvider::Create( 328 raster_buffer_provider_ = ZeroCopyRasterBufferProvider::Create(
332 resource_provider_.get(), PlatformColor::BestTextureFormat()); 329 resource_provider_.get(), PlatformColor::BestTextureFormat());
333 break; 330 break;
334 case RASTER_BUFFER_PROVIDER_TYPE_ONE_COPY: 331 case RASTER_BUFFER_PROVIDER_TYPE_ONE_COPY:
335 Create3dOutputSurfaceAndResourceProvider(); 332 Create3dResourceProvider();
336 raster_buffer_provider_ = base::MakeUnique<OneCopyRasterBufferProvider>( 333 raster_buffer_provider_ = base::MakeUnique<OneCopyRasterBufferProvider>(
337 task_runner_.get(), compositor_context_provider_.get(), 334 task_runner_.get(), compositor_context_provider_.get(),
338 worker_context_provider_.get(), resource_provider_.get(), 335 worker_context_provider_.get(), resource_provider_.get(),
339 std::numeric_limits<int>::max(), false, 336 std::numeric_limits<int>::max(), false,
340 std::numeric_limits<int>::max(), PlatformColor::BestTextureFormat(), 337 std::numeric_limits<int>::max(), PlatformColor::BestTextureFormat(),
341 false); 338 false);
342 break; 339 break;
343 case RASTER_BUFFER_PROVIDER_TYPE_GPU: 340 case RASTER_BUFFER_PROVIDER_TYPE_GPU:
344 Create3dOutputSurfaceAndResourceProvider(); 341 Create3dResourceProvider();
345 raster_buffer_provider_ = base::MakeUnique<GpuRasterBufferProvider>( 342 raster_buffer_provider_ = base::MakeUnique<GpuRasterBufferProvider>(
346 compositor_context_provider_.get(), worker_context_provider_.get(), 343 compositor_context_provider_.get(), worker_context_provider_.get(),
347 resource_provider_.get(), false, 0, false); 344 resource_provider_.get(), false, 0, false);
348 break; 345 break;
349 case RASTER_BUFFER_PROVIDER_TYPE_BITMAP: 346 case RASTER_BUFFER_PROVIDER_TYPE_BITMAP:
350 CreateSoftwareOutputSurfaceAndResourceProvider(); 347 CreateSoftwareResourceProvider();
351 raster_buffer_provider_ = 348 raster_buffer_provider_ =
352 BitmapRasterBufferProvider::Create(resource_provider_.get()); 349 BitmapRasterBufferProvider::Create(resource_provider_.get());
353 break; 350 break;
354 } 351 }
355 352
356 DCHECK(raster_buffer_provider_); 353 DCHECK(raster_buffer_provider_);
357 354
358 tile_task_manager_ = TileTaskManagerImpl::Create(task_graph_runner_.get()); 355 tile_task_manager_ = TileTaskManagerImpl::Create(task_graph_runner_.get());
359 } 356 }
360 void TearDown() override { 357 void TearDown() override {
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
478 TaskGraph empty; 475 TaskGraph empty;
479 raster_buffer_provider_->OrderingBarrier(); 476 raster_buffer_provider_->OrderingBarrier();
480 tile_task_manager_->ScheduleTasks(&empty); 477 tile_task_manager_->ScheduleTasks(&empty);
481 RunMessageLoopUntilAllTasksHaveCompleted(); 478 RunMessageLoopUntilAllTasksHaveCompleted();
482 479
483 perf_test::PrintResult("schedule_and_execute_tasks", TestModifierString(), 480 perf_test::PrintResult("schedule_and_execute_tasks", TestModifierString(),
484 test_name, timer_.LapsPerSecond(), "runs/s", true); 481 test_name, timer_.LapsPerSecond(), "runs/s", true);
485 } 482 }
486 483
487 private: 484 private:
488 void Create3dOutputSurfaceAndResourceProvider() { 485 void Create3dResourceProvider() {
489 output_surface_ = FakeOutputSurface::Create3d(compositor_context_provider_, 486 resource_provider_ =
490 worker_context_provider_); 487 FakeResourceProvider::Create(compositor_context_provider_.get(),
491 CHECK(output_surface_->BindToClient(&output_surface_client_)); 488 nullptr, &gpu_memory_buffer_manager_);
492 resource_provider_ = FakeResourceProvider::Create(
493 output_surface_.get(), nullptr, &gpu_memory_buffer_manager_);
494 } 489 }
495 490
496 void CreateSoftwareOutputSurfaceAndResourceProvider() { 491 void CreateSoftwareResourceProvider() {
497 output_surface_ = FakeOutputSurface::CreateSoftware( 492 resource_provider_ =
498 base::WrapUnique(new SoftwareOutputDevice)); 493 FakeResourceProvider::Create(nullptr, &shared_bitmap_manager_, nullptr);
499 CHECK(output_surface_->BindToClient(&output_surface_client_));
500 resource_provider_ = FakeResourceProvider::Create(
501 output_surface_.get(), &shared_bitmap_manager_, nullptr);
502 } 494 }
503 495
504 std::string TestModifierString() const { 496 std::string TestModifierString() const {
505 switch (GetParam()) { 497 switch (GetParam()) {
506 case RASTER_BUFFER_PROVIDER_TYPE_ZERO_COPY: 498 case RASTER_BUFFER_PROVIDER_TYPE_ZERO_COPY:
507 return std::string("_zero_copy_raster_buffer_provider"); 499 return std::string("_zero_copy_raster_buffer_provider");
508 case RASTER_BUFFER_PROVIDER_TYPE_ONE_COPY: 500 case RASTER_BUFFER_PROVIDER_TYPE_ONE_COPY:
509 return std::string("_one_copy_raster_buffer_provider"); 501 return std::string("_one_copy_raster_buffer_provider");
510 case RASTER_BUFFER_PROVIDER_TYPE_GPU: 502 case RASTER_BUFFER_PROVIDER_TYPE_GPU:
511 return std::string("_gpu_raster_buffer_provider"); 503 return std::string("_gpu_raster_buffer_provider");
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
555 RASTER_BUFFER_PROVIDER_TYPE_ONE_COPY, 547 RASTER_BUFFER_PROVIDER_TYPE_ONE_COPY,
556 RASTER_BUFFER_PROVIDER_TYPE_GPU, 548 RASTER_BUFFER_PROVIDER_TYPE_GPU,
557 RASTER_BUFFER_PROVIDER_TYPE_BITMAP)); 549 RASTER_BUFFER_PROVIDER_TYPE_BITMAP));
558 550
559 class RasterBufferProviderCommonPerfTest 551 class RasterBufferProviderCommonPerfTest
560 : public RasterBufferProviderPerfTestBase, 552 : public RasterBufferProviderPerfTestBase,
561 public testing::Test { 553 public testing::Test {
562 public: 554 public:
563 // Overridden from testing::Test: 555 // Overridden from testing::Test:
564 void SetUp() override { 556 void SetUp() override {
565 output_surface_ = FakeOutputSurface::Create3d(compositor_context_provider_, 557 resource_provider_ = FakeResourceProvider::Create(
566 worker_context_provider_); 558 compositor_context_provider_.get(), nullptr);
567 CHECK(output_surface_->BindToClient(&output_surface_client_));
568 resource_provider_ =
569 FakeResourceProvider::Create(output_surface_.get(), nullptr);
570 } 559 }
571 560
572 void RunBuildTileTaskGraphTest(const std::string& test_name, 561 void RunBuildTileTaskGraphTest(const std::string& test_name,
573 unsigned num_raster_tasks, 562 unsigned num_raster_tasks,
574 unsigned num_image_decode_tasks) { 563 unsigned num_image_decode_tasks) {
575 TileTask::Vector image_decode_tasks; 564 TileTask::Vector image_decode_tasks;
576 RasterTaskVector raster_tasks; 565 RasterTaskVector raster_tasks;
577 CreateImageDecodeTasks(num_image_decode_tasks, &image_decode_tasks); 566 CreateImageDecodeTasks(num_image_decode_tasks, &image_decode_tasks);
578 CreateRasterTasks(nullptr, num_raster_tasks, image_decode_tasks, 567 CreateRasterTasks(nullptr, num_raster_tasks, image_decode_tasks,
579 &raster_tasks); 568 &raster_tasks);
(...skipping 19 matching lines...) Expand all
599 RunBuildTileTaskGraphTest("1_0", 1, 0); 588 RunBuildTileTaskGraphTest("1_0", 1, 0);
600 RunBuildTileTaskGraphTest("32_0", 32, 0); 589 RunBuildTileTaskGraphTest("32_0", 32, 0);
601 RunBuildTileTaskGraphTest("1_1", 1, 1); 590 RunBuildTileTaskGraphTest("1_1", 1, 1);
602 RunBuildTileTaskGraphTest("32_1", 32, 1); 591 RunBuildTileTaskGraphTest("32_1", 32, 1);
603 RunBuildTileTaskGraphTest("1_4", 1, 4); 592 RunBuildTileTaskGraphTest("1_4", 1, 4);
604 RunBuildTileTaskGraphTest("32_4", 32, 4); 593 RunBuildTileTaskGraphTest("32_4", 32, 4);
605 } 594 }
606 595
607 } // namespace 596 } // namespace
608 } // namespace cc 597 } // namespace cc
OLDNEW
« no previous file with comments | « cc/proto/commit_earlyout_reason.proto ('k') | cc/raster/raster_buffer_provider_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698