| Index: cc/raster/tile_task_worker_pool_perftest.cc
|
| diff --git a/cc/raster/tile_task_worker_pool_perftest.cc b/cc/raster/tile_task_worker_pool_perftest.cc
|
| index d2c7e6c50f29d24207040c3b2ea0200831f99c6a..c228c51fa6b3b324407599b1826519e0a4076e43 100644
|
| --- a/cc/raster/tile_task_worker_pool_perftest.cc
|
| +++ b/cc/raster/tile_task_worker_pool_perftest.cc
|
| @@ -131,17 +131,13 @@ class PerfImageDecodeTaskImpl : public ImageDecodeTask {
|
| // Overridden from Task:
|
| void RunOnWorkerThread() override {}
|
|
|
| - // Overridden from TileTask:
|
| - void ScheduleOnOriginThread(TileTaskClient* client) override {}
|
| - void CompleteOnOriginThread(TileTaskClient* client) override { Reset(); }
|
| -
|
| void Reset() {
|
| did_run_ = false;
|
| did_complete_ = false;
|
| }
|
|
|
| protected:
|
| - ~PerfImageDecodeTaskImpl() override {}
|
| + ~PerfImageDecodeTaskImpl() override { Reset(); }
|
|
|
| private:
|
| DISALLOW_COPY_AND_ASSIGN(PerfImageDecodeTaskImpl);
|
| @@ -150,29 +146,22 @@ class PerfImageDecodeTaskImpl : public ImageDecodeTask {
|
| class PerfRasterTaskImpl : public RasterTask {
|
| public:
|
| PerfRasterTaskImpl(std::unique_ptr<ScopedResource> resource,
|
| + std::unique_ptr<RasterBuffer> raster_buffer,
|
| ImageDecodeTask::Vector* dependencies)
|
| - : RasterTask(dependencies), resource_(std::move(resource)) {}
|
| + : RasterTask(dependencies),
|
| + resource_(std::move(resource)),
|
| + raster_buffer_(std::move(raster_buffer)) {}
|
|
|
| // Overridden from Task:
|
| void RunOnWorkerThread() override {}
|
|
|
| - // Overridden from TileTask:
|
| - void ScheduleOnOriginThread(TileTaskClient* client) override {
|
| - // No tile ids are given to support partial updates.
|
| - raster_buffer_ = client->AcquireBufferForRaster(resource_.get(), 0, 0);
|
| - }
|
| - void CompleteOnOriginThread(TileTaskClient* client) override {
|
| - client->ReleaseBufferForRaster(std::move(raster_buffer_));
|
| - Reset();
|
| - }
|
| -
|
| void Reset() {
|
| did_run_ = false;
|
| did_complete_ = false;
|
| }
|
|
|
| protected:
|
| - ~PerfRasterTaskImpl() override {}
|
| + ~PerfRasterTaskImpl() override { Reset(); }
|
|
|
| private:
|
| std::unique_ptr<ScopedResource> resource_;
|
| @@ -181,7 +170,7 @@ class PerfRasterTaskImpl : public RasterTask {
|
| DISALLOW_COPY_AND_ASSIGN(PerfRasterTaskImpl);
|
| };
|
|
|
| -class TileTaskWorkerPoolPerfTestBase {
|
| +class TileTaskWorkerPoolPerfTestBase : public TileTaskClient {
|
| public:
|
| typedef std::vector<scoped_refptr<RasterTask>> RasterTaskVector;
|
|
|
| @@ -195,6 +184,15 @@ class TileTaskWorkerPoolPerfTestBase {
|
| base::TimeDelta::FromMilliseconds(kTimeLimitMillis),
|
| kTimeCheckInterval) {}
|
|
|
| + // Overridden from TileTaskClient:
|
| + scoped_ptr<RasterBuffer> AcquireBufferForRaster(
|
| + const Resource* resource,
|
| + uint64_t resource_content_id,
|
| + uint64_t previous_content_id) override {
|
| + return nullptr;
|
| + }
|
| + void ReleaseBufferForRaster(scoped_ptr<RasterBuffer> buffer) override {}
|
| +
|
| void CreateImageDecodeTasks(unsigned num_image_decode_tasks,
|
| ImageDecodeTask::Vector* image_decode_tasks) {
|
| for (unsigned i = 0; i < num_image_decode_tasks; ++i)
|
| @@ -211,10 +209,11 @@ class TileTaskWorkerPoolPerfTestBase {
|
| ScopedResource::Create(resource_provider_.get()));
|
| resource->Allocate(size, ResourceProvider::TEXTURE_HINT_IMMUTABLE,
|
| RGBA_8888);
|
| -
|
| ImageDecodeTask::Vector dependencies = image_decode_tasks;
|
| - raster_tasks->push_back(
|
| - new PerfRasterTaskImpl(std::move(resource), &dependencies));
|
| + scoped_ptr<RasterBuffer> raster_buffer =
|
| + AcquireBufferForRaster(resource.get(), 0, 0);
|
| + raster_tasks->push_back(new PerfRasterTaskImpl(
|
| + std::move(resource), std::move(raster_buffer), &dependencies));
|
| }
|
| }
|
|
|
| @@ -288,7 +287,9 @@ class TileTaskWorkerPoolPerfTest
|
| }
|
| void TearDown() override {
|
| tile_task_worker_pool_->AsTileTaskRunner()->Shutdown();
|
| - tile_task_worker_pool_->AsTileTaskRunner()->CheckForCompletedTasks();
|
| + Task::Vector completed_tasks;
|
| + tile_task_worker_pool_->AsTileTaskRunner()->CollectCompletedTasks(
|
| + &completed_tasks);
|
| }
|
|
|
| void RunMessageLoopUntilAllTasksHaveCompleted() {
|
| @@ -312,7 +313,9 @@ class TileTaskWorkerPoolPerfTest
|
| graph.Reset();
|
| BuildTileTaskGraph(&graph, raster_tasks);
|
| tile_task_worker_pool_->AsTileTaskRunner()->ScheduleTasks(&graph);
|
| - tile_task_worker_pool_->AsTileTaskRunner()->CheckForCompletedTasks();
|
| + Task::Vector completed_tasks;
|
| + tile_task_worker_pool_->AsTileTaskRunner()->CollectCompletedTasks(
|
| + &completed_tasks);
|
| timer_.NextLap();
|
| } while (!timer_.HasTimeLimitExpired());
|
|
|
| @@ -345,7 +348,9 @@ class TileTaskWorkerPoolPerfTest
|
| graph.Reset();
|
| BuildTileTaskGraph(&graph, raster_tasks[count % kNumVersions]);
|
| tile_task_worker_pool_->AsTileTaskRunner()->ScheduleTasks(&graph);
|
| - tile_task_worker_pool_->AsTileTaskRunner()->CheckForCompletedTasks();
|
| + Task::Vector completed_tasks;
|
| + tile_task_worker_pool_->AsTileTaskRunner()->CollectCompletedTasks(
|
| + &completed_tasks);
|
| ++count;
|
| timer_.NextLap();
|
| } while (!timer_.HasTimeLimitExpired());
|
|
|