Chromium Code Reviews| 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/tile_task_worker_pool.h" | 5 #include "cc/resources/tile_task_worker_pool.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/lazy_instance.h" | 9 #include "base/lazy_instance.h" |
| 10 #include "base/strings/stringprintf.h" | 10 #include "base/strings/stringprintf.h" |
| (...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 156 task->ScheduleOnOriginThread(client); | 156 task->ScheduleOnOriginThread(client); |
| 157 task->DidSchedule(); | 157 task->DidSchedule(); |
| 158 } | 158 } |
| 159 } | 159 } |
| 160 } | 160 } |
| 161 | 161 |
| 162 // static | 162 // static |
| 163 void TileTaskWorkerPool::InsertNodeForTask(TaskGraph* graph, | 163 void TileTaskWorkerPool::InsertNodeForTask(TaskGraph* graph, |
| 164 TileTask* task, | 164 TileTask* task, |
| 165 unsigned priority, | 165 unsigned priority, |
| 166 size_t dependencies) { | 166 size_t dependencies, |
| 167 int sub_namespace, | |
| 168 int max_concurrent_tasks) { | |
| 167 DCHECK(std::find_if(graph->nodes.begin(), graph->nodes.end(), | 169 DCHECK(std::find_if(graph->nodes.begin(), graph->nodes.end(), |
| 168 TaskGraph::Node::TaskComparator(task)) == | 170 TaskGraph::Node::TaskComparator(task)) == |
| 169 graph->nodes.end()); | 171 graph->nodes.end()); |
| 170 graph->nodes.push_back(TaskGraph::Node(task, priority, dependencies)); | 172 graph->nodes.push_back(TaskGraph::Node(task, priority, dependencies, |
| 173 sub_namespace, max_concurrent_tasks)); | |
| 171 } | 174 } |
| 172 | 175 |
| 173 // static | 176 // static |
| 174 void TileTaskWorkerPool::InsertNodesForRasterTask( | 177 void TileTaskWorkerPool::InsertNodesForRasterTask( |
| 175 TaskGraph* graph, | 178 TaskGraph* graph, |
| 176 RasterTask* raster_task, | 179 RasterTask* raster_task, |
| 177 const ImageDecodeTask::Vector& decode_tasks, | 180 const ImageDecodeTask::Vector& decode_tasks, |
| 178 unsigned priority) { | 181 unsigned priority, |
| 182 int sub_namespace, | |
| 183 int max_concurrent_tasks) { | |
| 179 size_t dependencies = 0u; | 184 size_t dependencies = 0u; |
| 180 | 185 |
| 181 // Insert image decode tasks. | 186 // Insert image decode tasks. |
| 182 for (ImageDecodeTask::Vector::const_iterator it = decode_tasks.begin(); | 187 for (ImageDecodeTask::Vector::const_iterator it = decode_tasks.begin(); |
| 183 it != decode_tasks.end(); ++it) { | 188 it != decode_tasks.end(); ++it) { |
| 184 ImageDecodeTask* decode_task = it->get(); | 189 ImageDecodeTask* decode_task = it->get(); |
| 185 | 190 |
| 186 // Skip if already decoded. | 191 // Skip if already decoded. |
| 187 if (decode_task->HasCompleted()) | 192 if (decode_task->HasCompleted()) |
| 188 continue; | 193 continue; |
| 189 | 194 |
| 190 dependencies++; | 195 dependencies++; |
| 191 | 196 |
| 192 // Add decode task if it doesn't already exists in graph. | 197 // Add decode task if it doesn't already exists in graph. |
| 193 TaskGraph::Node::Vector::iterator decode_it = | 198 TaskGraph::Node::Vector::iterator decode_it = |
| 194 std::find_if(graph->nodes.begin(), graph->nodes.end(), | 199 std::find_if(graph->nodes.begin(), graph->nodes.end(), |
| 195 TaskGraph::Node::TaskComparator(decode_task)); | 200 TaskGraph::Node::TaskComparator(decode_task)); |
| 196 if (decode_it == graph->nodes.end()) | 201 if (decode_it == graph->nodes.end()) |
| 197 InsertNodeForTask(graph, decode_task, priority, 0u); | 202 InsertNodeForTask(graph, decode_task, priority, 0u, kDefaultSubNamespace, |
|
danakj
2015/02/23 18:45:01
when using the defaults can you leave a comment wh
| |
| 203 kDefaultMaxConcurrentTasks); | |
| 198 | 204 |
| 199 graph->edges.push_back(TaskGraph::Edge(decode_task, raster_task)); | 205 graph->edges.push_back(TaskGraph::Edge(decode_task, raster_task)); |
| 200 } | 206 } |
| 201 | 207 |
| 202 InsertNodeForTask(graph, raster_task, priority, dependencies); | 208 InsertNodeForTask(graph, raster_task, priority, dependencies, sub_namespace, |
| 209 max_concurrent_tasks); | |
| 203 } | 210 } |
| 204 | 211 |
| 205 static bool IsSupportedPlaybackToMemoryFormat(ResourceFormat format) { | 212 static bool IsSupportedPlaybackToMemoryFormat(ResourceFormat format) { |
| 206 switch (format) { | 213 switch (format) { |
| 207 case RGBA_4444: | 214 case RGBA_4444: |
| 208 case RGBA_8888: | 215 case RGBA_8888: |
| 209 case BGRA_8888: | 216 case BGRA_8888: |
| 210 return true; | 217 return true; |
| 211 case ALPHA_8: | 218 case ALPHA_8: |
| 212 case LUMINANCE_8: | 219 case LUMINANCE_8: |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 263 // TODO(kaanb): The GL pipeline assumes a 4-byte alignment for the | 270 // TODO(kaanb): The GL pipeline assumes a 4-byte alignment for the |
| 264 // bitmap data. There will be no need to call SkAlign4 once crbug.com/293728 | 271 // bitmap data. There will be no need to call SkAlign4 once crbug.com/293728 |
| 265 // is fixed. | 272 // is fixed. |
| 266 const size_t dst_row_bytes = SkAlign4(dst_info.minRowBytes()); | 273 const size_t dst_row_bytes = SkAlign4(dst_info.minRowBytes()); |
| 267 DCHECK_EQ(0u, dst_row_bytes % 4); | 274 DCHECK_EQ(0u, dst_row_bytes % 4); |
| 268 bool success = canvas->readPixels(dst_info, memory, dst_row_bytes, 0, 0); | 275 bool success = canvas->readPixels(dst_info, memory, dst_row_bytes, 0, 0); |
| 269 DCHECK_EQ(true, success); | 276 DCHECK_EQ(true, success); |
| 270 } | 277 } |
| 271 | 278 |
| 272 } // namespace cc | 279 } // namespace cc |
| OLD | NEW |