Merge pull request #16689 from unknownbrackets/vk-shutdown

Vulkan: Avoid race in compile thread exit
This commit is contained in:
Henrik Rydgård 2023-01-01 15:59:55 +01:00 committed by GitHub
commit 1353817afa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -302,7 +302,11 @@ void VulkanRenderManager::StopThread() {
INFO_LOG(G3D, "Vulkan submission thread joined. Frame=%d", vulkan_->GetCurFrame());
compileCond_.notify_all();
if (compileThread_.joinable()) {
// Lock to avoid race conditions.
std::lock_guard<std::mutex> guard(compileMutex_);
compileCond_.notify_all();
}
compileThread_.join();
INFO_LOG(G3D, "Vulkan compiler thread joined.");
@ -360,7 +364,7 @@ void VulkanRenderManager::CompileThreadFunc() {
std::vector<CompileQueueEntry> toCompile;
{
std::unique_lock<std::mutex> lock(compileMutex_);
if (compileQueue_.empty()) {
if (compileQueue_.empty() && run_) {
compileCond_.wait(lock);
}
toCompile = std::move(compileQueue_);