mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-04-12 03:02:33 +02: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);
|
{ std::unique_lock<dxvk::mutex> lock(m_mutex);
|
||||||
seq = ++m_chunksDispatched;
|
seq = ++m_chunksDispatched;
|
||||||
m_chunksQueued.push_back(std::move(chunk));
|
m_chunksQueued.push_back(std::move(chunk));
|
||||||
|
m_condOnAdd.notify_one();
|
||||||
}
|
}
|
||||||
|
|
||||||
m_condOnAdd.notify_one();
|
|
||||||
return seq;
|
return seq;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void DxvkCsThread::injectChunk(DxvkCsChunkRef&& chunk, bool synchronize) {
|
void DxvkCsThread::injectChunk(DxvkCsChunkRef&& chunk, bool synchronize) {
|
||||||
std::unique_lock<dxvk::mutex> lock(m_mutex);
|
uint64_t timeline;
|
||||||
|
|
||||||
uint64_t timeline = ++m_chunksInjectedCount;
|
{ std::unique_lock<dxvk::mutex> lock(m_mutex);
|
||||||
m_chunksInjected.push_back(std::move(chunk));
|
|
||||||
|
|
||||||
m_condOnAdd.notify_one();
|
timeline = ++m_chunksInjectedCount;
|
||||||
|
m_chunksInjected.push_back(std::move(chunk));
|
||||||
|
|
||||||
|
m_condOnAdd.notify_one();
|
||||||
|
}
|
||||||
|
|
||||||
if (synchronize) {
|
if (synchronize) {
|
||||||
|
std::unique_lock<dxvk::mutex> lock(m_counterMutex);
|
||||||
|
|
||||||
m_condOnSync.wait(lock, [this, timeline] {
|
m_condOnSync.wait(lock, [this, timeline] {
|
||||||
return m_chunksInjectedComplete.load() >= timeline;
|
return m_chunksInjectedComplete.load() >= timeline;
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user