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