mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-29 12:19:12 +00:00
Merge pull request #6442 from stenzek/async-compiler-priority
ShaderCache: Implement compile priority
This commit is contained in:
commit
98b4716902
4 changed files with 60 additions and 41 deletions
|
@ -20,7 +20,7 @@ AsyncShaderCompiler::~AsyncShaderCompiler()
|
|||
ASSERT(!HasWorkerThreads());
|
||||
}
|
||||
|
||||
void AsyncShaderCompiler::QueueWorkItem(WorkItemPtr item)
|
||||
void AsyncShaderCompiler::QueueWorkItem(WorkItemPtr item, u32 priority)
|
||||
{
|
||||
// If no worker threads are available, compile synchronously.
|
||||
if (!HasWorkerThreads())
|
||||
|
@ -31,7 +31,7 @@ void AsyncShaderCompiler::QueueWorkItem(WorkItemPtr item)
|
|||
else
|
||||
{
|
||||
std::lock_guard<std::mutex> guard(m_pending_work_lock);
|
||||
m_pending_work.push_back(std::move(item));
|
||||
m_pending_work.emplace(priority, std::move(item));
|
||||
m_worker_thread_wake.notify_one();
|
||||
}
|
||||
}
|
||||
|
@ -219,8 +219,9 @@ void AsyncShaderCompiler::WorkerThreadRun()
|
|||
while (!m_pending_work.empty() && !m_exit_flag.IsSet())
|
||||
{
|
||||
m_busy_workers++;
|
||||
WorkItemPtr item(std::move(m_pending_work.front()));
|
||||
m_pending_work.pop_front();
|
||||
auto iter = m_pending_work.begin();
|
||||
WorkItemPtr item(std::move(iter->second));
|
||||
m_pending_work.erase(iter);
|
||||
pending_lock.unlock();
|
||||
|
||||
if (item->Compile())
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue