HarmonyOS NEXT 图形渲染体系
一、渲染管线并行化优化
1.1 多线程渲染架构
class RenderScheduler {
public:
void submitTask(RenderTask task) {
if (task.type == URGENT) {
priorityQueue.push(task);
} else {
auto& queue = getQueue(task.pipelineStage);
queue.enqueue(task);
}
cv.notify_all();
}
private:
void workerThread() {
while (running) {
RenderTask task;
{
std::unique_lock lock(mutex);
cv.wait(lock, [&]{ return !priorityQueue.empty() || !queues.empty(); });
if (!priorityQueue.empty()) {
task = priorityQueue.pop();
} else {
for (auto& q : queues) {
if (!q.empty()) {
task = q.dequeue();
break;
}
}
}
}
(task);
}
}
std::vector<RenderQueue> queues;
PriorityQueue priorityQueue;
};