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

Side by Side Diff: cc/raster/zero_copy_tile_task_worker_pool.cc

Issue 1910213005: cc: Refactor TileTaskWorkerPool. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@task_states
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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/raster/zero_copy_tile_task_worker_pool.h" 5 #include "cc/raster/zero_copy_tile_task_worker_pool.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 10
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 ResourceProvider::ScopedWriteLockGpuMemoryBuffer lock_; 59 ResourceProvider::ScopedWriteLockGpuMemoryBuffer lock_;
60 const Resource* resource_; 60 const Resource* resource_;
61 61
62 DISALLOW_COPY_AND_ASSIGN(RasterBufferImpl); 62 DISALLOW_COPY_AND_ASSIGN(RasterBufferImpl);
63 }; 63 };
64 64
65 } // namespace 65 } // namespace
66 66
67 // static 67 // static
68 std::unique_ptr<TileTaskWorkerPool> ZeroCopyTileTaskWorkerPool::Create( 68 std::unique_ptr<TileTaskWorkerPool> ZeroCopyTileTaskWorkerPool::Create(
69 base::SequencedTaskRunner* task_runner,
70 TaskGraphRunner* task_graph_runner,
71 ResourceProvider* resource_provider, 69 ResourceProvider* resource_provider,
72 ResourceFormat preferred_tile_format) { 70 ResourceFormat preferred_tile_format) {
73 return base::WrapUnique<TileTaskWorkerPool>( 71 return base::WrapUnique<TileTaskWorkerPool>(
74 new ZeroCopyTileTaskWorkerPool(task_runner, task_graph_runner, 72 new ZeroCopyTileTaskWorkerPool(resource_provider, preferred_tile_format));
75 resource_provider, preferred_tile_format));
76 } 73 }
77 74
78 ZeroCopyTileTaskWorkerPool::ZeroCopyTileTaskWorkerPool( 75 ZeroCopyTileTaskWorkerPool::ZeroCopyTileTaskWorkerPool(
79 base::SequencedTaskRunner* task_runner,
80 TaskGraphRunner* task_graph_runner,
81 ResourceProvider* resource_provider, 76 ResourceProvider* resource_provider,
82 ResourceFormat preferred_tile_format) 77 ResourceFormat preferred_tile_format)
83 : task_runner_(task_runner), 78 : resource_provider_(resource_provider),
84 task_graph_runner_(task_graph_runner),
85 namespace_token_(task_graph_runner->GetNamespaceToken()),
86 resource_provider_(resource_provider),
87 preferred_tile_format_(preferred_tile_format) {} 79 preferred_tile_format_(preferred_tile_format) {}
88 80
89 ZeroCopyTileTaskWorkerPool::~ZeroCopyTileTaskWorkerPool() { 81 ZeroCopyTileTaskWorkerPool::~ZeroCopyTileTaskWorkerPool() {
90 } 82 }
91 83
92 void ZeroCopyTileTaskWorkerPool::Shutdown() { 84 void ZeroCopyTileTaskWorkerPool::BarrierToSyncResources() {}
93 TRACE_EVENT0("cc", "ZeroCopyTileTaskWorkerPool::Shutdown");
94
95 TaskGraph empty;
96 task_graph_runner_->ScheduleTasks(namespace_token_, &empty);
97 task_graph_runner_->WaitForTasksToFinishRunning(namespace_token_);
98 }
99
100 void ZeroCopyTileTaskWorkerPool::ScheduleTasks(TaskGraph* graph) {
101 TRACE_EVENT0("cc", "ZeroCopyTileTaskWorkerPool::ScheduleTasks");
102
103 ScheduleTasksOnOriginThread(this, graph);
104 task_graph_runner_->ScheduleTasks(namespace_token_, graph);
105 }
106
107 void ZeroCopyTileTaskWorkerPool::CheckForCompletedTasks() {
108 TRACE_EVENT0("cc", "ZeroCopyTileTaskWorkerPool::CheckForCompletedTasks");
109
110 task_graph_runner_->CollectCompletedTasks(namespace_token_,
111 &completed_tasks_);
112 for (Task::Vector::const_iterator it = completed_tasks_.begin();
113 it != completed_tasks_.end(); ++it) {
114 TileTask* task = static_cast<TileTask*>(it->get());
115
116 task->WillComplete();
117 task->CompleteOnOriginThread(this);
118 task->DidComplete();
119 }
120 completed_tasks_.clear();
121 }
122 85
123 ResourceFormat ZeroCopyTileTaskWorkerPool::GetResourceFormat( 86 ResourceFormat ZeroCopyTileTaskWorkerPool::GetResourceFormat(
124 bool must_support_alpha) const { 87 bool must_support_alpha) const {
125 if (resource_provider_->IsResourceFormatSupported(preferred_tile_format_) && 88 if (resource_provider_->IsResourceFormatSupported(preferred_tile_format_) &&
126 (DoesResourceFormatSupportAlpha(preferred_tile_format_) || 89 (DoesResourceFormatSupportAlpha(preferred_tile_format_) ||
127 !must_support_alpha)) { 90 !must_support_alpha)) {
128 return preferred_tile_format_; 91 return preferred_tile_format_;
129 } 92 }
130 93
131 return resource_provider_->best_texture_format(); 94 return resource_provider_->best_texture_format();
(...skipping 16 matching lines...) Expand all
148 return base::WrapUnique<RasterBuffer>( 111 return base::WrapUnique<RasterBuffer>(
149 new RasterBufferImpl(resource_provider_, resource)); 112 new RasterBufferImpl(resource_provider_, resource));
150 } 113 }
151 114
152 void ZeroCopyTileTaskWorkerPool::ReleaseBufferForRaster( 115 void ZeroCopyTileTaskWorkerPool::ReleaseBufferForRaster(
153 std::unique_ptr<RasterBuffer> buffer) { 116 std::unique_ptr<RasterBuffer> buffer) {
154 // Nothing to do here. RasterBufferImpl destructor cleans up after itself. 117 // Nothing to do here. RasterBufferImpl destructor cleans up after itself.
155 } 118 }
156 119
157 } // namespace cc 120 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698