Chromium Code Reviews| Index: cc/resources/raster_worker_pool_perftest.cc |
| diff --git a/cc/resources/raster_worker_pool_perftest.cc b/cc/resources/raster_worker_pool_perftest.cc |
| index e69c4df797e85fb09cc254cfe7d4465dd2a4e47d..0a96f535353862fa7d2c28b4589bc34f6662bc46 100644 |
| --- a/cc/resources/raster_worker_pool_perftest.cc |
| +++ b/cc/resources/raster_worker_pool_perftest.cc |
| @@ -8,6 +8,7 @@ |
| #include "base/time/time.h" |
| #include "cc/debug/lap_timer.h" |
| #include "cc/output/context_provider.h" |
| +#include "cc/resources/bitmap_raster_worker_pool.h" |
| #include "cc/resources/gpu_raster_worker_pool.h" |
| #include "cc/resources/one_copy_raster_worker_pool.h" |
| #include "cc/resources/pixel_buffer_raster_worker_pool.h" |
| @@ -96,7 +97,8 @@ enum RasterWorkerPoolType { |
| RASTER_WORKER_POOL_TYPE_PIXEL_BUFFER, |
| RASTER_WORKER_POOL_TYPE_ZERO_COPY, |
| RASTER_WORKER_POOL_TYPE_ONE_COPY, |
| - RASTER_WORKER_POOL_TYPE_GPU |
| + RASTER_WORKER_POOL_TYPE_GPU, |
| + RASTER_WORKER_POOL_TYPE_BITMAP |
| }; |
| static const int kTimeLimitMillis = 2000; |
| @@ -172,21 +174,7 @@ class RasterWorkerPoolPerfTestBase { |
| task_graph_runner_(new TaskGraphRunner), |
| timer_(kWarmupRuns, |
| base::TimeDelta::FromMilliseconds(kTimeLimitMillis), |
| - kTimeCheckInterval) { |
| - output_surface_ = FakeOutputSurface::Create3d(context_provider_).Pass(); |
| - CHECK(output_surface_->BindToClient(&output_surface_client_)); |
| - |
| - shared_bitmap_manager_.reset(new TestSharedBitmapManager()); |
| - resource_provider_ = ResourceProvider::Create(output_surface_.get(), |
| - shared_bitmap_manager_.get(), |
| - NULL, |
| - 0, |
| - false, |
| - 1, |
| - false).Pass(); |
| - staging_resource_pool_ = ResourcePool::Create( |
| - resource_provider_.get(), GL_TEXTURE_2D, RGBA_8888); |
| - } |
| + kTimeCheckInterval) {} |
| void CreateImageDecodeTasks(unsigned num_image_decode_tasks, |
| ImageDecodeTask::Vector* image_decode_tasks) { |
| @@ -227,9 +215,7 @@ class RasterWorkerPoolPerfTestBase { |
| scoped_refptr<ContextProvider> context_provider_; |
| FakeOutputSurfaceClient output_surface_client_; |
| scoped_ptr<FakeOutputSurface> output_surface_; |
| - scoped_ptr<SharedBitmapManager> shared_bitmap_manager_; |
| scoped_ptr<ResourceProvider> resource_provider_; |
| - scoped_ptr<ResourcePool> staging_resource_pool_; |
| scoped_refptr<base::TestSimpleTaskRunner> task_runner_; |
| scoped_ptr<TaskGraphRunner> task_graph_runner_; |
| LapTimer timer_; |
| @@ -240,9 +226,15 @@ class RasterWorkerPoolPerfTest |
| public testing::TestWithParam<RasterWorkerPoolType>, |
| public RasterizerClient { |
| public: |
| - RasterWorkerPoolPerfTest() { |
| + // Overridden from testing::Test: |
| + virtual void SetUp() OVERRIDE { |
| switch (GetParam()) { |
| case RASTER_WORKER_POOL_TYPE_PIXEL_BUFFER: |
| + output_surface_ = FakeOutputSurface::Create3d(context_provider_).Pass(); |
|
vmpstr
2014/09/24 16:31:51
Can you refactor this a bit like
CreateOutputSur
reveman
2014/09/24 17:25:26
Done.
|
| + CHECK(output_surface_->BindToClient(&output_surface_client_)); |
| + resource_provider_ = |
| + ResourceProvider::Create( |
| + output_surface_.get(), NULL, NULL, 0, false, 1, false).Pass(); |
| raster_worker_pool_ = PixelBufferRasterWorkerPool::Create( |
| task_runner_.get(), |
| task_graph_runner_.get(), |
| @@ -251,12 +243,24 @@ class RasterWorkerPoolPerfTest |
| std::numeric_limits<size_t>::max()); |
| break; |
| case RASTER_WORKER_POOL_TYPE_ZERO_COPY: |
| + output_surface_ = FakeOutputSurface::Create3d(context_provider_).Pass(); |
| + CHECK(output_surface_->BindToClient(&output_surface_client_)); |
| + resource_provider_ = |
| + ResourceProvider::Create( |
| + output_surface_.get(), NULL, NULL, 0, false, 1, false).Pass(); |
| raster_worker_pool_ = |
| ZeroCopyRasterWorkerPool::Create(task_runner_.get(), |
| task_graph_runner_.get(), |
| resource_provider_.get()); |
| break; |
| case RASTER_WORKER_POOL_TYPE_ONE_COPY: |
| + output_surface_ = FakeOutputSurface::Create3d(context_provider_).Pass(); |
| + CHECK(output_surface_->BindToClient(&output_surface_client_)); |
| + resource_provider_ = |
| + ResourceProvider::Create( |
| + output_surface_.get(), NULL, NULL, 0, false, 1, false).Pass(); |
| + staging_resource_pool_ = ResourcePool::Create( |
| + resource_provider_.get(), GL_TEXTURE_2D, RGBA_8888); |
| raster_worker_pool_ = |
| OneCopyRasterWorkerPool::Create(task_runner_.get(), |
| task_graph_runner_.get(), |
| @@ -265,18 +269,37 @@ class RasterWorkerPoolPerfTest |
| staging_resource_pool_.get()); |
| break; |
| case RASTER_WORKER_POOL_TYPE_GPU: |
| + output_surface_ = FakeOutputSurface::Create3d(context_provider_).Pass(); |
| + CHECK(output_surface_->BindToClient(&output_surface_client_)); |
| + resource_provider_ = |
| + ResourceProvider::Create( |
| + output_surface_.get(), NULL, NULL, 0, false, 1, false).Pass(); |
| raster_worker_pool_ = |
| GpuRasterWorkerPool::Create(task_runner_.get(), |
| context_provider_.get(), |
| resource_provider_.get()); |
| break; |
| + case RASTER_WORKER_POOL_TYPE_BITMAP: |
| + output_surface_ = FakeOutputSurface::CreateSoftware( |
| + make_scoped_ptr(new SoftwareOutputDevice)); |
| + CHECK(output_surface_->BindToClient(&output_surface_client_)); |
| + resource_provider_ = ResourceProvider::Create(output_surface_.get(), |
| + &shared_bitmap_manager_, |
| + NULL, |
| + 0, |
| + false, |
| + 1, |
| + false).Pass(); |
| + raster_worker_pool_ = |
| + BitmapRasterWorkerPool::Create(task_runner_.get(), |
| + task_graph_runner_.get(), |
| + resource_provider_.get()); |
| + break; |
| } |
| DCHECK(raster_worker_pool_); |
| raster_worker_pool_->AsRasterizer()->SetClient(this); |
| } |
| - |
| - // Overridden from testing::Test: |
| virtual void TearDown() OVERRIDE { |
| raster_worker_pool_->AsRasterizer()->Shutdown(); |
| raster_worker_pool_->AsRasterizer()->CheckForCompletedTasks(); |
| @@ -408,12 +431,16 @@ class RasterWorkerPoolPerfTest |
| return std::string("_one_copy_raster_worker_pool"); |
| case RASTER_WORKER_POOL_TYPE_GPU: |
| return std::string("_gpu_raster_worker_pool"); |
| + case RASTER_WORKER_POOL_TYPE_BITMAP: |
| + return std::string("_bitmap_raster_worker_pool"); |
| } |
| NOTREACHED(); |
| return std::string(); |
| } |
| + scoped_ptr<ResourcePool> staging_resource_pool_; |
| scoped_ptr<RasterWorkerPool> raster_worker_pool_; |
| + TestSharedBitmapManager shared_bitmap_manager_; |
| }; |
| TEST_P(RasterWorkerPoolPerfTest, ScheduleTasks) { |
| @@ -448,11 +475,21 @@ INSTANTIATE_TEST_CASE_P(RasterWorkerPoolPerfTests, |
| ::testing::Values(RASTER_WORKER_POOL_TYPE_PIXEL_BUFFER, |
| RASTER_WORKER_POOL_TYPE_ZERO_COPY, |
| RASTER_WORKER_POOL_TYPE_ONE_COPY, |
| - RASTER_WORKER_POOL_TYPE_GPU)); |
| + RASTER_WORKER_POOL_TYPE_GPU, |
| + RASTER_WORKER_POOL_TYPE_BITMAP)); |
| class RasterWorkerPoolCommonPerfTest : public RasterWorkerPoolPerfTestBase, |
| public testing::Test { |
| public: |
| + // Overridden from testing::Test: |
| + virtual void SetUp() OVERRIDE { |
| + output_surface_ = FakeOutputSurface::Create3d(context_provider_).Pass(); |
| + CHECK(output_surface_->BindToClient(&output_surface_client_)); |
| + resource_provider_ = |
| + ResourceProvider::Create( |
| + output_surface_.get(), NULL, NULL, 0, false, 1, false).Pass(); |
| + } |
| + |
| void RunBuildRasterTaskQueueTest(const std::string& test_name, |
| unsigned num_raster_tasks, |
| unsigned num_image_decode_tasks) { |