scheduler.h 660 B

12345678910111213141516171819202122232425262728293031323334353637
  1. // SPDX-FileCopyrightText: 2021 yuzu Emulator Project
  2. // SPDX-License-Identifier: GPL-3.0-or-later
  3. #pragma once
  4. #include <memory>
  5. #include <mutex>
  6. #include <unordered_map>
  7. #include "video_core/dma_pusher.h"
  8. namespace Tegra {
  9. class GPU;
  10. namespace Control {
  11. struct ChannelState;
  12. class Scheduler {
  13. public:
  14. explicit Scheduler(GPU& gpu_);
  15. ~Scheduler();
  16. void Push(s32 channel, CommandList&& entries);
  17. void DeclareChannel(std::shared_ptr<ChannelState> new_channel);
  18. private:
  19. std::unordered_map<s32, std::shared_ptr<ChannelState>> channels;
  20. std::mutex scheduling_guard;
  21. GPU& gpu;
  22. };
  23. } // namespace Control
  24. } // namespace Tegra