diff options
| author | DevJPM <jean-pierre.muench@web.de> | 2021-06-03 16:03:37 +0200 |
|---|---|---|
| committer | unknown <jean-pierre.muench@posteo.de> | 2021-11-22 09:34:28 +0100 |
| commit | 613c4563c288b5b73b2f1defb23ad645cef97bee (patch) | |
| tree | 6883b1fe1d2b7479cdc3c9a0a9bdd4a004385ef5 /Source/Core/VideoCommon/VideoConfig.cpp | |
| parent | 61cfd8696ee010758c48d02eac13d3dffc3501a7 (diff) | |
VideoCommon: Gate Multi-Threaded Shader Pre-Compilation behind a bug entry
Diffstat (limited to 'Source/Core/VideoCommon/VideoConfig.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/VideoConfig.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/Source/Core/VideoCommon/VideoConfig.cpp b/Source/Core/VideoCommon/VideoConfig.cpp index 9cdf1256f7..5e833a4244 100644 --- a/Source/Core/VideoCommon/VideoConfig.cpp +++ b/Source/Core/VideoCommon/VideoConfig.cpp @@ -10,6 +10,7 @@ #include "Core/ConfigManager.h" #include "Core/Core.h" #include "Core/Movie.h" +#include "VideoCommon/DriverDetails.h" #include "VideoCommon/OnScreenDisplay.h" #include "VideoCommon/VideoCommon.h" #include "VideoCommon/VideoConfig.h" @@ -204,8 +205,17 @@ u32 VideoConfig::GetShaderPrecompilerThreads() const if (!backend_info.bSupportsBackgroundCompiling) return 0; + const bool bugDatabaseSupported = + backend_info.api_type == APIType::OpenGL || backend_info.api_type == APIType::Vulkan; + // DirectX has always worked in our tests in PR#9414 + const bool multiThreadingWorking = + !bugDatabaseSupported || + !DriverDetails::HasBug(DriverDetails::BUG_BROKEN_MULTITHREADED_SHADER_PRECOMPILATION); + if (iShaderPrecompilerThreads >= 0) return static_cast<u32>(iShaderPrecompilerThreads); - else + else if (multiThreadingWorking) return GetNumAutoShaderPreCompilerThreads(); + else + return 1; } |
