diff --git a/hw/amdgpu/device/include/amdgpu/device/gpu-scheduler.hpp b/hw/amdgpu/device/include/amdgpu/device/gpu-scheduler.hpp index a080369ea..efe3eb39f 100644 --- a/hw/amdgpu/device/include/amdgpu/device/gpu-scheduler.hpp +++ b/hw/amdgpu/device/include/amdgpu/device/gpu-scheduler.hpp @@ -5,6 +5,7 @@ #include #include #include +#include #include #include #include @@ -203,8 +204,8 @@ struct TaskChain { class GpuScheduler { std::list workThreads; - std::vector tasks; - std::vector delayedTasks; + std::deque tasks; + std::deque delayedTasks; std::mutex taskMtx; std::condition_variable taskCv; std::atomic exit{false}; @@ -339,14 +340,14 @@ private: } } - task = std::move(tasks.back()); - tasks.pop_back(); + task = std::move(tasks.front()); + tasks.pop_front(); } if (task.waitId != GpuTaskLayout::kInvalidId && !task.chain->isComplete(task.waitId)) { std::unique_lock lock(taskMtx); - delayedTasks.push_back(std::move(task)); + delayedTasks.push_front(std::move(task)); taskCv.notify_one(); continue; }