#pragma once #include #include #include #include #include "dxvk_cmdlist.h" #include "dxvk_sync.h" namespace dxvk { class DxvkDevice; /** * \brief Submission queue * * */ class DxvkSubmissionQueue { public: DxvkSubmissionQueue(DxvkDevice* device); ~DxvkSubmissionQueue(); void submit(const Rc& cmdList); private: DxvkDevice* m_device; std::atomic m_stopped = { false }; std::mutex m_mutex; std::condition_variable m_condOnAdd; std::condition_variable m_condOnTake; std::queue> m_entries; std::thread m_thread; void threadFunc(); }; }