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

Side by Side Diff: cc/raster/task_graph_work_queue.cc

Issue 1739993004: content: Implement dynamic priorities for raster threads. Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: preparing for checkin. Created 4 years, 9 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/raster/task_graph_work_queue.h" 5 #include "cc/raster/task_graph_work_queue.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 }; 45 };
46 } // namespace 46 } // namespace
47 47
48 TaskGraphWorkQueue::TaskNamespace::TaskNamespace() {} 48 TaskGraphWorkQueue::TaskNamespace::TaskNamespace() {}
49 49
50 TaskGraphWorkQueue::TaskNamespace::TaskNamespace(const TaskNamespace& other) = 50 TaskGraphWorkQueue::TaskNamespace::TaskNamespace(const TaskNamespace& other) =
51 default; 51 default;
52 52
53 TaskGraphWorkQueue::TaskNamespace::~TaskNamespace() {} 53 TaskGraphWorkQueue::TaskNamespace::~TaskNamespace() {}
54 54
55 TaskGraphWorkQueue::TaskGraphWorkQueue() : next_namespace_id_(1) {} 55 TaskGraphWorkQueue::TaskGraphWorkQueue(TaskGraphWorkQueueClient* client)
56 : client_(client), next_namespace_id_(1) {}
56 TaskGraphWorkQueue::~TaskGraphWorkQueue() {} 57 TaskGraphWorkQueue::~TaskGraphWorkQueue() {}
57 58
58 NamespaceToken TaskGraphWorkQueue::GetNamespaceToken() { 59 NamespaceToken TaskGraphWorkQueue::GetNamespaceToken() {
59 NamespaceToken token(next_namespace_id_++); 60 NamespaceToken token(next_namespace_id_++);
60 DCHECK(namespaces_.find(token) == namespaces_.end()); 61 DCHECK(namespaces_.find(token) == namespaces_.end());
61 return token; 62 return token;
62 } 63 }
63 64
64 void TaskGraphWorkQueue::ScheduleTasks(NamespaceToken token, TaskGraph* graph) { 65 void TaskGraphWorkQueue::ScheduleTasks(NamespaceToken token, TaskGraph* graph) {
65 TaskNamespace& task_namespace = namespaces_[token]; 66 TaskNamespace& task_namespace = namespaces_[token];
(...skipping 30 matching lines...) Expand all
96 continue; 97 continue;
97 98
98 // Skip if already finished running task. 99 // Skip if already finished running task.
99 if (node.task->HasFinishedRunning()) 100 if (node.task->HasFinishedRunning())
100 continue; 101 continue;
101 102
102 // Skip if already running. 103 // Skip if already running.
103 if (std::any_of(task_namespace.running_tasks.begin(), 104 if (std::any_of(task_namespace.running_tasks.begin(),
104 task_namespace.running_tasks.end(), 105 task_namespace.running_tasks.end(),
105 [&node](const CategorizedTask& task) { 106 [&node](const CategorizedTask& task) {
107 if ((task.second == node.task) &&
108 task.first != node.category) {
109 // Fix lambda error.
110 // client_->AdjustWorkerPriorityForTask(
111 // task.second.get(), (uint16_t)task.first,
112 // (uint16_t)node.category);
113 }
106 return task.second == node.task; 114 return task.second == node.task;
107 })) 115 }))
108 continue; 116 continue;
109 117
110 task_namespace.ready_to_run_tasks[node.category].push_back(PrioritizedTask( 118 task_namespace.ready_to_run_tasks[node.category].push_back(PrioritizedTask(
111 node.task, &task_namespace, node.category, node.priority)); 119 node.task, &task_namespace, node.category, node.priority));
112 } 120 }
113 121
114 // Rearrange the elements in each vector within |ready_to_run_tasks| in such a 122 // Rearrange the elements in each vector within |ready_to_run_tasks| in such a
115 // way that they form a heap. 123 // way that they form a heap.
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
301 309
302 for (const TaskGraph::Node& node : graph->nodes) { 310 for (const TaskGraph::Node& node : graph->nodes) {
303 if (dependents[node.task] != node.dependencies) 311 if (dependents[node.task] != node.dependencies)
304 return true; 312 return true;
305 } 313 }
306 314
307 return false; 315 return false;
308 } 316 }
309 317
310 } // namespace cc 318 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698