| 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 086d7b192dcf06d1239e17e6effeb12c04f52d7a..6397120e1109ba5fb000bf5f834fc90008bb8bac 100644
|
| --- a/cc/raster/tile_task_worker_pool_perftest.cc
|
| +++ b/cc/raster/tile_task_worker_pool_perftest.cc
|
| @@ -16,7 +16,6 @@
|
| #include "cc/raster/gpu_rasterizer.h"
|
| #include "cc/raster/gpu_tile_task_worker_pool.h"
|
| #include "cc/raster/one_copy_tile_task_worker_pool.h"
|
| -#include "cc/raster/raster_buffer.h"
|
| #include "cc/raster/synchronous_task_graph_runner.h"
|
| #include "cc/raster/tile_task_runner.h"
|
| #include "cc/raster/zero_copy_tile_task_worker_pool.h"
|
| @@ -124,17 +123,15 @@ static const int kTimeLimitMillis = 2000;
|
| static const int kWarmupRuns = 5;
|
| static const int kTimeCheckInterval = 10;
|
|
|
| -class PerfImageDecodeTaskImpl : public ImageDecodeTask {
|
| +class PerfImageDecodeTaskImpl : public Task {
|
| public:
|
| PerfImageDecodeTaskImpl() {}
|
|
|
| // Overridden from Task:
|
| + void ScheduleOnOriginThread() override {}
|
| + void CompleteOnOriginThread() override { Reset(); }
|
| 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;
|
| @@ -147,24 +144,29 @@ class PerfImageDecodeTaskImpl : public ImageDecodeTask {
|
| DISALLOW_COPY_AND_ASSIGN(PerfImageDecodeTaskImpl);
|
| };
|
|
|
| -class PerfRasterTaskImpl : public RasterTask {
|
| +class PerfRasterTaskImpl : public Task {
|
| public:
|
| - PerfRasterTaskImpl(scoped_ptr<ScopedResource> resource,
|
| - ImageDecodeTask::Vector* dependencies)
|
| - : RasterTask(dependencies), resource_(std::move(resource)) {}
|
| + PerfRasterTaskImpl(RasterBufferProvider* raster_buffer_provider,
|
| + scoped_ptr<ScopedResource> resource,
|
| + Task::Vector* dependencies)
|
| + : raster_buffer_provider_(raster_buffer_provider),
|
| + resource_(std::move(resource)) {
|
| + dependencies_ = std::move(*dependencies);
|
| + }
|
|
|
| - // Overridden from Task:
|
| - void RunOnWorkerThread() override {}
|
| + const Task::Vector& dependencies() const { return dependencies_; }
|
|
|
| - // Overridden from TileTask:
|
| - void ScheduleOnOriginThread(TileTaskClient* client) override {
|
| + // Overridden from Task:
|
| + void ScheduleOnOriginThread() override {
|
| // No tile ids are given to support partial updates.
|
| - raster_buffer_ = client->AcquireBufferForRaster(resource_.get(), 0, 0);
|
| + raster_buffer_ =
|
| + raster_buffer_provider_->AcquireBufferForRaster(resource_.get(), 0, 0);
|
| }
|
| - void CompleteOnOriginThread(TileTaskClient* client) override {
|
| - client->ReleaseBufferForRaster(std::move(raster_buffer_));
|
| + void CompleteOnOriginThread() override {
|
| + raster_buffer_provider_->ReleaseBufferForRaster(std::move(raster_buffer_));
|
| Reset();
|
| }
|
| + void RunOnWorkerThread() override {}
|
|
|
| void Reset() {
|
| did_run_ = false;
|
| @@ -175,15 +177,17 @@ class PerfRasterTaskImpl : public RasterTask {
|
| ~PerfRasterTaskImpl() override {}
|
|
|
| private:
|
| + RasterBufferProvider* raster_buffer_provider_;
|
| scoped_ptr<ScopedResource> resource_;
|
| scoped_ptr<RasterBuffer> raster_buffer_;
|
| + Task::Vector dependencies_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(PerfRasterTaskImpl);
|
| };
|
|
|
| class TileTaskWorkerPoolPerfTestBase {
|
| public:
|
| - typedef std::vector<scoped_refptr<RasterTask>> RasterTaskVector;
|
| + typedef std::vector<scoped_refptr<PerfRasterTaskImpl>> RasterTaskVector;
|
|
|
| enum NamedTaskSet { REQUIRED_FOR_ACTIVATION, REQUIRED_FOR_DRAW, ALL };
|
|
|
| @@ -196,13 +200,14 @@ class TileTaskWorkerPoolPerfTestBase {
|
| kTimeCheckInterval) {}
|
|
|
| void CreateImageDecodeTasks(unsigned num_image_decode_tasks,
|
| - ImageDecodeTask::Vector* image_decode_tasks) {
|
| + Task::Vector* image_decode_tasks) {
|
| for (unsigned i = 0; i < num_image_decode_tasks; ++i)
|
| image_decode_tasks->push_back(new PerfImageDecodeTaskImpl);
|
| }
|
|
|
| - void CreateRasterTasks(unsigned num_raster_tasks,
|
| - const ImageDecodeTask::Vector& image_decode_tasks,
|
| + void CreateRasterTasks(RasterBufferProvider* raster_buffer_provider,
|
| + unsigned num_raster_tasks,
|
| + const Task::Vector& image_decode_tasks,
|
| RasterTaskVector* raster_tasks) {
|
| const gfx::Size size(1, 1);
|
|
|
| @@ -212,9 +217,9 @@ class TileTaskWorkerPoolPerfTestBase {
|
| 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));
|
| + Task::Vector dependencies = image_decode_tasks;
|
| + raster_tasks->push_back(new PerfRasterTaskImpl(
|
| + raster_buffer_provider, std::move(resource), &dependencies));
|
| }
|
| }
|
|
|
| @@ -299,10 +304,11 @@ class TileTaskWorkerPoolPerfTest
|
| void RunScheduleTasksTest(const std::string& test_name,
|
| unsigned num_raster_tasks,
|
| unsigned num_image_decode_tasks) {
|
| - ImageDecodeTask::Vector image_decode_tasks;
|
| + Task::Vector image_decode_tasks;
|
| RasterTaskVector raster_tasks;
|
| CreateImageDecodeTasks(num_image_decode_tasks, &image_decode_tasks);
|
| - CreateRasterTasks(num_raster_tasks, image_decode_tasks, &raster_tasks);
|
| + CreateRasterTasks(tile_task_worker_pool_->AsTileTaskRunner(),
|
| + num_raster_tasks, image_decode_tasks, &raster_tasks);
|
|
|
| // Avoid unnecessary heap allocations by reusing the same graph.
|
| TaskGraph graph;
|
| @@ -328,11 +334,12 @@ class TileTaskWorkerPoolPerfTest
|
| unsigned num_raster_tasks,
|
| unsigned num_image_decode_tasks) {
|
| const size_t kNumVersions = 2;
|
| - ImageDecodeTask::Vector image_decode_tasks[kNumVersions];
|
| + Task::Vector image_decode_tasks[kNumVersions];
|
| RasterTaskVector raster_tasks[kNumVersions];
|
| for (size_t i = 0; i < kNumVersions; ++i) {
|
| CreateImageDecodeTasks(num_image_decode_tasks, &image_decode_tasks[i]);
|
| - CreateRasterTasks(num_raster_tasks, image_decode_tasks[i],
|
| + CreateRasterTasks(tile_task_worker_pool_->AsTileTaskRunner(),
|
| + num_raster_tasks, image_decode_tasks[i],
|
| &raster_tasks[i]);
|
| }
|
|
|
| @@ -361,10 +368,11 @@ class TileTaskWorkerPoolPerfTest
|
| void RunScheduleAndExecuteTasksTest(const std::string& test_name,
|
| unsigned num_raster_tasks,
|
| unsigned num_image_decode_tasks) {
|
| - ImageDecodeTask::Vector image_decode_tasks;
|
| + Task::Vector image_decode_tasks;
|
| RasterTaskVector raster_tasks;
|
| CreateImageDecodeTasks(num_image_decode_tasks, &image_decode_tasks);
|
| - CreateRasterTasks(num_raster_tasks, image_decode_tasks, &raster_tasks);
|
| + CreateRasterTasks(tile_task_worker_pool_->AsTileTaskRunner(),
|
| + num_raster_tasks, image_decode_tasks, &raster_tasks);
|
|
|
| // Avoid unnecessary heap allocations by reusing the same graph.
|
| TaskGraph graph;
|
| @@ -470,10 +478,12 @@ class TileTaskWorkerPoolCommonPerfTest : public TileTaskWorkerPoolPerfTestBase,
|
| void RunBuildTileTaskGraphTest(const std::string& test_name,
|
| unsigned num_raster_tasks,
|
| unsigned num_image_decode_tasks) {
|
| - ImageDecodeTask::Vector image_decode_tasks;
|
| + Task::Vector image_decode_tasks;
|
| RasterTaskVector raster_tasks;
|
| CreateImageDecodeTasks(num_image_decode_tasks, &image_decode_tasks);
|
| - CreateRasterTasks(num_raster_tasks, image_decode_tasks, &raster_tasks);
|
| + // TODO(prashant.n): Pass real RasterBufferProvider instead of nullptr.
|
| + CreateRasterTasks(nullptr, num_raster_tasks, image_decode_tasks,
|
| + &raster_tasks);
|
|
|
| // Avoid unnecessary heap allocations by reusing the same graph.
|
| TaskGraph graph;
|
|
|