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..658435658f1d72407fc97b5d3aabc8f6a21b735f 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,11 @@ 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: |
+ Create3dOutputSurfaceAndResourceProvider(); |
raster_worker_pool_ = PixelBufferRasterWorkerPool::Create( |
task_runner_.get(), |
task_graph_runner_.get(), |
@@ -251,12 +239,16 @@ class RasterWorkerPoolPerfTest |
std::numeric_limits<size_t>::max()); |
break; |
case RASTER_WORKER_POOL_TYPE_ZERO_COPY: |
+ Create3dOutputSurfaceAndResourceProvider(); |
raster_worker_pool_ = |
ZeroCopyRasterWorkerPool::Create(task_runner_.get(), |
task_graph_runner_.get(), |
resource_provider_.get()); |
break; |
case RASTER_WORKER_POOL_TYPE_ONE_COPY: |
+ Create3dOutputSurfaceAndResourceProvider(); |
+ 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 +257,24 @@ class RasterWorkerPoolPerfTest |
staging_resource_pool_.get()); |
break; |
case RASTER_WORKER_POOL_TYPE_GPU: |
+ Create3dOutputSurfaceAndResourceProvider(); |
raster_worker_pool_ = |
GpuRasterWorkerPool::Create(task_runner_.get(), |
context_provider_.get(), |
resource_provider_.get()); |
break; |
+ case RASTER_WORKER_POOL_TYPE_BITMAP: |
+ CreateSoftwareOutputSurfaceAndResourceProvider(); |
+ 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(); |
@@ -398,6 +396,27 @@ class RasterWorkerPoolPerfTest |
} |
private: |
+ void Create3dOutputSurfaceAndResourceProvider() { |
+ 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 CreateSoftwareOutputSurfaceAndResourceProvider() { |
+ 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(); |
+ } |
+ |
std::string TestModifierString() const { |
switch (GetParam()) { |
case RASTER_WORKER_POOL_TYPE_PIXEL_BUFFER: |
@@ -408,12 +427,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 +471,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) { |