mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-01-31 23:52:20 +01:00
[dxvk] Fix broken sync in injectCsChunk
This commit is contained in:
parent
b38c6b4dc2
commit
f3c320b490
@ -120,22 +120,27 @@ namespace dxvk {
|
||||
{ std::unique_lock<dxvk::mutex> lock(m_mutex);
|
||||
seq = ++m_chunksDispatched;
|
||||
m_chunksQueued.push_back(std::move(chunk));
|
||||
m_condOnAdd.notify_one();
|
||||
}
|
||||
|
||||
m_condOnAdd.notify_one();
|
||||
return seq;
|
||||
}
|
||||
|
||||
|
||||
void DxvkCsThread::injectChunk(DxvkCsChunkRef&& chunk, bool synchronize) {
|
||||
std::unique_lock<dxvk::mutex> lock(m_mutex);
|
||||
uint64_t timeline;
|
||||
|
||||
uint64_t timeline = ++m_chunksInjectedCount;
|
||||
m_chunksInjected.push_back(std::move(chunk));
|
||||
{ std::unique_lock<dxvk::mutex> lock(m_mutex);
|
||||
|
||||
m_condOnAdd.notify_one();
|
||||
timeline = ++m_chunksInjectedCount;
|
||||
m_chunksInjected.push_back(std::move(chunk));
|
||||
|
||||
m_condOnAdd.notify_one();
|
||||
}
|
||||
|
||||
if (synchronize) {
|
||||
std::unique_lock<dxvk::mutex> lock(m_counterMutex);
|
||||
|
||||
m_condOnSync.wait(lock, [this, timeline] {
|
||||
return m_chunksInjectedComplete.load() >= timeline;
|
||||
});
|
||||
|
Loading…
x
Reference in New Issue
Block a user