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

Unified Diff: cc/raster/tile_task_worker_pool_perftest.cc

Issue 1866043006: cc: Remove ScheduleOnOriginThread() and CompleteOnOriginThread(). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: nits Created 4 years, 8 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 side-by-side diff with in-line comments
Download patch
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..acbc2b34e30565eeb17fd9074858b5a1d54000dd 100644
--- a/cc/raster/tile_task_worker_pool_perftest.cc
+++ b/cc/raster/tile_task_worker_pool_perftest.cc
@@ -126,15 +126,11 @@ static const int kTimeCheckInterval = 10;
class PerfImageDecodeTaskImpl : public ImageDecodeTask {
public:
- PerfImageDecodeTaskImpl() {}
+ PerfImageDecodeTaskImpl() { SetTaskTypeId(kImageDecodeTaskTypeId); }
// 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;
@@ -150,22 +146,17 @@ 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)) {
+ SetTaskTypeId(kRasterTaskTypeId);
+ }
// 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;
@@ -181,7 +172,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 +186,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 +211,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));
}
}
@@ -286,9 +287,27 @@ class TileTaskWorkerPoolPerfTest
DCHECK(tile_task_worker_pool_);
}
+
+ void CheckAndProcessCompletedTasks() {
+ Task::Vector completed_tasks;
+ tile_task_worker_pool_->AsTileTaskRunner()->CollectCompletedTasks(
+ &completed_tasks);
+
+ for (auto task : completed_tasks) {
+ if (task->GetTaskTypeId() == kImageDecodeTaskTypeId) {
+ static_cast<PerfImageDecodeTaskImpl*>(task.get())->Reset();
+ } else if (task->GetTaskTypeId() == kRasterTaskTypeId) {
+ static_cast<PerfRasterTaskImpl*>(task.get())->Reset();
+ }
+
+ static_cast<TileTask*>(task.get())->DidComplete();
+ }
+ completed_tasks.clear();
+ }
+
void TearDown() override {
tile_task_worker_pool_->AsTileTaskRunner()->Shutdown();
- tile_task_worker_pool_->AsTileTaskRunner()->CheckForCompletedTasks();
+ CheckAndProcessCompletedTasks();
}
void RunMessageLoopUntilAllTasksHaveCompleted() {
@@ -312,7 +331,7 @@ class TileTaskWorkerPoolPerfTest
graph.Reset();
BuildTileTaskGraph(&graph, raster_tasks);
tile_task_worker_pool_->AsTileTaskRunner()->ScheduleTasks(&graph);
- tile_task_worker_pool_->AsTileTaskRunner()->CheckForCompletedTasks();
+ CheckAndProcessCompletedTasks();
timer_.NextLap();
} while (!timer_.HasTimeLimitExpired());
@@ -345,7 +364,7 @@ class TileTaskWorkerPoolPerfTest
graph.Reset();
BuildTileTaskGraph(&graph, raster_tasks[count % kNumVersions]);
tile_task_worker_pool_->AsTileTaskRunner()->ScheduleTasks(&graph);
- tile_task_worker_pool_->AsTileTaskRunner()->CheckForCompletedTasks();
+ CheckAndProcessCompletedTasks();
++count;
timer_.NextLap();
} while (!timer_.HasTimeLimitExpired());

Powered by Google App Engine
This is Rietveld 408576698