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

Side by Side Diff: cc/resources/pixel_buffer_raster_worker_pool.cc

Issue 143003012: Revert of cc: Remove WorkerPool class and instead use TaskGraphRunner directly. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 11 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 | Annotate | Revision Log
« no previous file with comments | « cc/resources/pixel_buffer_raster_worker_pool.h ('k') | cc/resources/raster_worker_pool.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/resources/pixel_buffer_raster_worker_pool.h" 5 #include "cc/resources/pixel_buffer_raster_worker_pool.h"
6 6
7 #include "base/containers/stack_container.h" 7 #include "base/containers/stack_container.h"
8 #include "base/debug/trace_event.h" 8 #include "base/debug/trace_event.h"
9 #include "base/values.h" 9 #include "base/values.h"
10 #include "cc/debug/traced_value.h" 10 #include "cc/debug/traced_value.h"
(...skipping 14 matching lines...) Expand all
25 25
26 PixelBufferWorkerPoolTaskImpl(internal::RasterWorkerPoolTask* task, 26 PixelBufferWorkerPoolTaskImpl(internal::RasterWorkerPoolTask* task,
27 uint8_t* buffer, 27 uint8_t* buffer,
28 const Reply& reply) 28 const Reply& reply)
29 : task_(task), 29 : task_(task),
30 buffer_(buffer), 30 buffer_(buffer),
31 reply_(reply), 31 reply_(reply),
32 needs_upload_(false) { 32 needs_upload_(false) {
33 } 33 }
34 34
35 // Overridden from internal::Task: 35 // Overridden from internal::WorkerPoolTask:
36 virtual void RunOnWorkerThread(unsigned thread_index) OVERRIDE { 36 virtual void RunOnWorkerThread(unsigned thread_index) OVERRIDE {
37 // |buffer_| can be NULL in lost context situations. 37 // |buffer_| can be NULL in lost context situations.
38 if (!buffer_) { 38 if (!buffer_) {
39 // |needs_upload_| still needs to be true as task has not 39 // |needs_upload_| still needs to be true as task has not
40 // been canceled. 40 // been canceled.
41 needs_upload_ = true; 41 needs_upload_ = true;
42 return; 42 return;
43 } 43 }
44 needs_upload_ = task_->RunOnWorkerThread(thread_index, 44 needs_upload_ = task_->RunOnWorkerThread(thread_index,
45 buffer_, 45 buffer_,
46 task_->resource()->size(), 46 task_->resource()->size(),
47 0); 47 0);
48 } 48 }
49
50 // Overridden from internal::WorkerPoolTask:
51 virtual void CompleteOnOriginThread() OVERRIDE { 49 virtual void CompleteOnOriginThread() OVERRIDE {
52 // |needs_upload_| must be be false if task didn't run. 50 // |needs_upload_| must be be false if task didn't run.
53 DCHECK(HasFinishedRunning() || !needs_upload_); 51 DCHECK(HasFinishedRunning() || !needs_upload_);
54 reply_.Run(!HasFinishedRunning(), needs_upload_); 52 reply_.Run(!HasFinishedRunning(), needs_upload_);
55 } 53 }
56 54
57 private: 55 private:
58 virtual ~PixelBufferWorkerPoolTaskImpl() {} 56 virtual ~PixelBufferWorkerPoolTaskImpl() {}
59 57
60 scoped_refptr<internal::RasterWorkerPoolTask> task_; 58 scoped_refptr<internal::RasterWorkerPoolTask> task_;
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
113 DCHECK(shutdown_); 111 DCHECK(shutdown_);
114 DCHECK(!check_for_completed_raster_tasks_pending_); 112 DCHECK(!check_for_completed_raster_tasks_pending_);
115 DCHECK_EQ(0u, pixel_buffer_tasks_.size()); 113 DCHECK_EQ(0u, pixel_buffer_tasks_.size());
116 DCHECK_EQ(0u, tasks_with_pending_upload_.size()); 114 DCHECK_EQ(0u, tasks_with_pending_upload_.size());
117 DCHECK_EQ(0u, completed_tasks_.size()); 115 DCHECK_EQ(0u, completed_tasks_.size());
118 } 116 }
119 117
120 void PixelBufferRasterWorkerPool::Shutdown() { 118 void PixelBufferRasterWorkerPool::Shutdown() {
121 shutdown_ = true; 119 shutdown_ = true;
122 RasterWorkerPool::Shutdown(); 120 RasterWorkerPool::Shutdown();
123 121 CheckForCompletedWorkerTasks();
124 CheckForCompletedWorkerPoolTasks();
125 CheckForCompletedUploads(); 122 CheckForCompletedUploads();
126 check_for_completed_raster_tasks_callback_.Cancel(); 123 check_for_completed_raster_tasks_callback_.Cancel();
127 check_for_completed_raster_tasks_pending_ = false; 124 check_for_completed_raster_tasks_pending_ = false;
128 for (TaskMap::iterator it = pixel_buffer_tasks_.begin(); 125 for (TaskMap::iterator it = pixel_buffer_tasks_.begin();
129 it != pixel_buffer_tasks_.end(); ++it) { 126 it != pixel_buffer_tasks_.end(); ++it) {
130 internal::RasterWorkerPoolTask* task = it->first; 127 internal::RasterWorkerPoolTask* task = it->first;
131 internal::WorkerPoolTask* pixel_buffer_task = it->second.get(); 128 internal::WorkerPoolTask* pixel_buffer_task = it->second.get();
132 129
133 // All inactive tasks needs to be canceled. 130 // All inactive tasks needs to be canceled.
134 if (!pixel_buffer_task && !task->HasFinishedRunning()) { 131 if (!pixel_buffer_task && !task->HasFinishedRunning()) {
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 it != completed_tasks_.end() && !tasks_required_for_activation_.empty(); 200 it != completed_tasks_.end() && !tasks_required_for_activation_.empty();
204 ++it) { 201 ++it) {
205 tasks_required_for_activation_.erase(*it); 202 tasks_required_for_activation_.erase(*it);
206 } 203 }
207 204
208 pixel_buffer_tasks_.swap(new_pixel_buffer_tasks); 205 pixel_buffer_tasks_.swap(new_pixel_buffer_tasks);
209 206
210 // Check for completed tasks when ScheduleTasks() is called as 207 // Check for completed tasks when ScheduleTasks() is called as
211 // priorities might have changed and this maximizes the number 208 // priorities might have changed and this maximizes the number
212 // of top priority tasks that are scheduled. 209 // of top priority tasks that are scheduled.
213 CheckForCompletedWorkerPoolTasks(); 210 CheckForCompletedWorkerTasks();
214 CheckForCompletedUploads(); 211 CheckForCompletedUploads();
215 FlushUploads(); 212 FlushUploads();
216 213
217 // Schedule new tasks. 214 // Schedule new tasks.
218 ScheduleMoreTasks(); 215 ScheduleMoreTasks();
219 216
220 // Cancel any pending check for completed raster tasks and schedule 217 // Cancel any pending check for completed raster tasks and schedule
221 // another check. 218 // another check.
222 check_for_completed_raster_tasks_callback_.Cancel(); 219 check_for_completed_raster_tasks_callback_.Cancel();
223 check_for_completed_raster_tasks_pending_ = false; 220 check_for_completed_raster_tasks_pending_ = false;
224 ScheduleCheckForCompletedRasterTasks(); 221 ScheduleCheckForCompletedRasterTasks();
225 222
226 RunGpuRasterTasks(gpu_raster_tasks); 223 RunGpuRasterTasks(gpu_raster_tasks);
227 224
228 TRACE_EVENT_ASYNC_STEP_INTO1( 225 TRACE_EVENT_ASYNC_STEP_INTO1(
229 "cc", "ScheduledTasks", this, StateName(), 226 "cc", "ScheduledTasks", this, StateName(),
230 "state", TracedValue::FromValue(StateAsValue().release())); 227 "state", TracedValue::FromValue(StateAsValue().release()));
231 } 228 }
232 229
233 unsigned PixelBufferRasterWorkerPool::GetResourceTarget() const { 230 GLenum PixelBufferRasterWorkerPool::GetResourceTarget() const {
234 return GL_TEXTURE_2D; 231 return GL_TEXTURE_2D;
235 } 232 }
236 233
237 ResourceFormat PixelBufferRasterWorkerPool::GetResourceFormat() const { 234 ResourceFormat PixelBufferRasterWorkerPool::GetResourceFormat() const {
238 return resource_provider()->memory_efficient_texture_format(); 235 return resource_provider()->memory_efficient_texture_format();
239 } 236 }
240 237
241 void PixelBufferRasterWorkerPool::CheckForCompletedTasks() { 238 void PixelBufferRasterWorkerPool::CheckForCompletedTasks() {
242 TRACE_EVENT0("cc", "PixelBufferRasterWorkerPool::CheckForCompletedTasks"); 239 TRACE_EVENT0("cc", "PixelBufferRasterWorkerPool::CheckForCompletedTasks");
243 240
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
387 384
388 void PixelBufferRasterWorkerPool::CheckForCompletedRasterTasks() { 385 void PixelBufferRasterWorkerPool::CheckForCompletedRasterTasks() {
389 TRACE_EVENT0( 386 TRACE_EVENT0(
390 "cc", "PixelBufferRasterWorkerPool::CheckForCompletedRasterTasks"); 387 "cc", "PixelBufferRasterWorkerPool::CheckForCompletedRasterTasks");
391 388
392 DCHECK(should_notify_client_if_no_tasks_are_pending_); 389 DCHECK(should_notify_client_if_no_tasks_are_pending_);
393 390
394 check_for_completed_raster_tasks_callback_.Cancel(); 391 check_for_completed_raster_tasks_callback_.Cancel();
395 check_for_completed_raster_tasks_pending_ = false; 392 check_for_completed_raster_tasks_pending_ = false;
396 393
397 CheckForCompletedWorkerPoolTasks(); 394 CheckForCompletedWorkerTasks();
398 CheckForCompletedUploads(); 395 CheckForCompletedUploads();
399 FlushUploads(); 396 FlushUploads();
400 397
401 // Determine what client notifications to generate. 398 // Determine what client notifications to generate.
402 bool will_notify_client_that_no_tasks_required_for_activation_are_pending = 399 bool will_notify_client_that_no_tasks_required_for_activation_are_pending =
403 (should_notify_client_if_no_tasks_required_for_activation_are_pending_ && 400 (should_notify_client_if_no_tasks_required_for_activation_are_pending_ &&
404 !raster_required_for_activation_finished_task_pending_ && 401 !raster_required_for_activation_finished_task_pending_ &&
405 !HasPendingTasksRequiredForActivation()); 402 !HasPendingTasksRequiredForActivation());
406 bool will_notify_client_that_no_tasks_are_pending = 403 bool will_notify_client_that_no_tasks_are_pending =
407 (should_notify_client_if_no_tasks_are_pending_ && 404 (should_notify_client_if_no_tasks_are_pending_ &&
(...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after
694 691
695 throttle_state->SetInteger("bytes_available_for_upload", 692 throttle_state->SetInteger("bytes_available_for_upload",
696 max_bytes_pending_upload_ - bytes_pending_upload_); 693 max_bytes_pending_upload_ - bytes_pending_upload_);
697 throttle_state->SetInteger("bytes_pending_upload", bytes_pending_upload_); 694 throttle_state->SetInteger("bytes_pending_upload", bytes_pending_upload_);
698 throttle_state->SetInteger("scheduled_raster_task_count", 695 throttle_state->SetInteger("scheduled_raster_task_count",
699 scheduled_raster_task_count_); 696 scheduled_raster_task_count_);
700 return throttle_state.PassAs<base::Value>(); 697 return throttle_state.PassAs<base::Value>();
701 } 698 }
702 699
703 } // namespace cc 700 } // namespace cc
OLDNEW
« no previous file with comments | « cc/resources/pixel_buffer_raster_worker_pool.h ('k') | cc/resources/raster_worker_pool.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698