| OLD | NEW |
| 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/image_raster_worker_pool.h" | 5 #include "cc/resources/image_raster_worker_pool.h" |
| 6 | 6 |
| 7 #include "base/debug/trace_event.h" | 7 #include "base/debug/trace_event.h" |
| 8 #include "base/values.h" | 8 #include "base/values.h" |
| 9 #include "cc/debug/traced_value.h" | 9 #include "cc/debug/traced_value.h" |
| 10 #include "cc/resources/resource.h" | 10 #include "cc/resources/resource.h" |
| (...skipping 10 matching lines...) Expand all Loading... |
| 21 ImageWorkerPoolTaskImpl(internal::RasterWorkerPoolTask* task, | 21 ImageWorkerPoolTaskImpl(internal::RasterWorkerPoolTask* task, |
| 22 uint8_t* buffer, | 22 uint8_t* buffer, |
| 23 int stride, | 23 int stride, |
| 24 const Reply& reply) | 24 const Reply& reply) |
| 25 : task_(task), | 25 : task_(task), |
| 26 buffer_(buffer), | 26 buffer_(buffer), |
| 27 stride_(stride), | 27 stride_(stride), |
| 28 reply_(reply) { | 28 reply_(reply) { |
| 29 } | 29 } |
| 30 | 30 |
| 31 // Overridden from internal::Task: | 31 // Overridden from internal::WorkerPoolTask: |
| 32 virtual void RunOnWorkerThread(unsigned thread_index) OVERRIDE { | 32 virtual void RunOnWorkerThread(unsigned thread_index) OVERRIDE { |
| 33 TRACE_EVENT0("cc", "ImageWorkerPoolTaskImpl::RunOnWorkerThread"); | 33 TRACE_EVENT0("cc", "ImageWorkerPoolTaskImpl::RunOnWorkerThread"); |
| 34 if (!buffer_) | 34 if (!buffer_) |
| 35 return; | 35 return; |
| 36 | 36 |
| 37 task_->RunOnWorkerThread(thread_index, | 37 task_->RunOnWorkerThread(thread_index, |
| 38 buffer_, | 38 buffer_, |
| 39 task_->resource()->size(), | 39 task_->resource()->size(), |
| 40 stride_); | 40 stride_); |
| 41 } | 41 } |
| 42 | |
| 43 // Overridden from internal::WorkerPoolTask: | |
| 44 virtual void CompleteOnOriginThread() OVERRIDE { | 42 virtual void CompleteOnOriginThread() OVERRIDE { |
| 45 reply_.Run(!HasFinishedRunning()); | 43 reply_.Run(!HasFinishedRunning()); |
| 46 } | 44 } |
| 47 | 45 |
| 48 private: | 46 private: |
| 49 virtual ~ImageWorkerPoolTaskImpl() {} | 47 virtual ~ImageWorkerPoolTaskImpl() {} |
| 50 | 48 |
| 51 scoped_refptr<internal::RasterWorkerPoolTask> task_; | 49 scoped_refptr<internal::RasterWorkerPoolTask> task_; |
| 52 uint8_t* buffer_; | 50 uint8_t* buffer_; |
| 53 int stride_; | 51 int stride_; |
| 54 const Reply reply_; | 52 const Reply reply_; |
| 55 | 53 |
| 56 DISALLOW_COPY_AND_ASSIGN(ImageWorkerPoolTaskImpl); | 54 DISALLOW_COPY_AND_ASSIGN(ImageWorkerPoolTaskImpl); |
| 57 }; | 55 }; |
| 58 | 56 |
| 59 } // namespace | 57 } // namespace |
| 60 | 58 |
| 61 ImageRasterWorkerPool::ImageRasterWorkerPool( | 59 ImageRasterWorkerPool::ImageRasterWorkerPool( |
| 62 ResourceProvider* resource_provider, | 60 ResourceProvider* resource_provider, |
| 63 ContextProvider* context_provider, | 61 ContextProvider* context_provider, |
| 64 unsigned texture_target) | 62 GLenum texture_target) |
| 65 : RasterWorkerPool(resource_provider, context_provider), | 63 : RasterWorkerPool(resource_provider, context_provider), |
| 66 texture_target_(texture_target), | 64 texture_target_(texture_target), |
| 67 raster_tasks_pending_(false), | 65 raster_tasks_pending_(false), |
| 68 raster_tasks_required_for_activation_pending_(false) { | 66 raster_tasks_required_for_activation_pending_(false) { |
| 69 } | 67 } |
| 70 | 68 |
| 71 ImageRasterWorkerPool::~ImageRasterWorkerPool() { | 69 ImageRasterWorkerPool::~ImageRasterWorkerPool() { |
| 72 DCHECK_EQ(0u, image_tasks_.size()); | 70 DCHECK_EQ(0u, image_tasks_.size()); |
| 73 } | 71 } |
| 74 | 72 |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 162 set_raster_required_for_activation_finished_task( | 160 set_raster_required_for_activation_finished_task( |
| 163 new_raster_required_for_activation_finished_task); | 161 new_raster_required_for_activation_finished_task); |
| 164 | 162 |
| 165 RunGpuRasterTasks(gpu_raster_tasks); | 163 RunGpuRasterTasks(gpu_raster_tasks); |
| 166 | 164 |
| 167 TRACE_EVENT_ASYNC_STEP_INTO1( | 165 TRACE_EVENT_ASYNC_STEP_INTO1( |
| 168 "cc", "ScheduledTasks", this, "rasterizing", | 166 "cc", "ScheduledTasks", this, "rasterizing", |
| 169 "state", TracedValue::FromValue(StateAsValue().release())); | 167 "state", TracedValue::FromValue(StateAsValue().release())); |
| 170 } | 168 } |
| 171 | 169 |
| 172 unsigned ImageRasterWorkerPool::GetResourceTarget() const { | 170 GLenum ImageRasterWorkerPool::GetResourceTarget() const { |
| 173 return texture_target_; | 171 return texture_target_; |
| 174 } | 172 } |
| 175 | 173 |
| 176 ResourceFormat ImageRasterWorkerPool::GetResourceFormat() const { | 174 ResourceFormat ImageRasterWorkerPool::GetResourceFormat() const { |
| 177 return resource_provider()->best_texture_format(); | 175 return resource_provider()->best_texture_format(); |
| 178 } | 176 } |
| 179 | 177 |
| 180 void ImageRasterWorkerPool::OnRasterTasksFinished() { | 178 void ImageRasterWorkerPool::OnRasterTasksFinished() { |
| 181 DCHECK(raster_tasks_pending_); | 179 DCHECK(raster_tasks_pending_); |
| 182 raster_tasks_pending_ = false; | 180 raster_tasks_pending_ = false; |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 218 | 216 |
| 219 state->SetBoolean("tasks_required_for_activation_pending", | 217 state->SetBoolean("tasks_required_for_activation_pending", |
| 220 raster_tasks_required_for_activation_pending_); | 218 raster_tasks_required_for_activation_pending_); |
| 221 state->Set("scheduled_state", ScheduledStateAsValue().release()); | 219 state->Set("scheduled_state", ScheduledStateAsValue().release()); |
| 222 return state.PassAs<base::Value>(); | 220 return state.PassAs<base::Value>(); |
| 223 } | 221 } |
| 224 | 222 |
| 225 // static | 223 // static |
| 226 void ImageRasterWorkerPool::CreateGraphNodeForImageTask( | 224 void ImageRasterWorkerPool::CreateGraphNodeForImageTask( |
| 227 internal::WorkerPoolTask* image_task, | 225 internal::WorkerPoolTask* image_task, |
| 228 const internal::Task::Vector& decode_tasks, | 226 const TaskVector& decode_tasks, |
| 229 unsigned priority, | 227 unsigned priority, |
| 230 bool is_required_for_activation, | 228 bool is_required_for_activation, |
| 231 internal::GraphNode* raster_required_for_activation_finished_node, | 229 internal::GraphNode* raster_required_for_activation_finished_node, |
| 232 internal::GraphNode* raster_finished_node, | 230 internal::GraphNode* raster_finished_node, |
| 233 TaskGraph* graph) { | 231 TaskGraph* graph) { |
| 234 internal::GraphNode* image_node = CreateGraphNodeForRasterTask(image_task, | 232 internal::GraphNode* image_node = CreateGraphNodeForRasterTask(image_task, |
| 235 decode_tasks, | 233 decode_tasks, |
| 236 priority, | 234 priority, |
| 237 graph); | 235 graph); |
| 238 | 236 |
| 239 if (is_required_for_activation) { | 237 if (is_required_for_activation) { |
| 240 raster_required_for_activation_finished_node->add_dependency(); | 238 raster_required_for_activation_finished_node->add_dependency(); |
| 241 image_node->add_dependent(raster_required_for_activation_finished_node); | 239 image_node->add_dependent(raster_required_for_activation_finished_node); |
| 242 } | 240 } |
| 243 | 241 |
| 244 raster_finished_node->add_dependency(); | 242 raster_finished_node->add_dependency(); |
| 245 image_node->add_dependent(raster_finished_node); | 243 image_node->add_dependent(raster_finished_node); |
| 246 } | 244 } |
| 247 | 245 |
| 248 } // namespace cc | 246 } // namespace cc |
| OLD | NEW |