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 |