diff options
| author | DevJPM <DevJPM@users.noreply.github.com> | 2021-01-02 13:47:18 +0100 |
|---|---|---|
| committer | unknown <jean-pierre.muench@posteo.de> | 2021-11-20 16:08:10 +0100 |
| commit | 61cfd8696ee010758c48d02eac13d3dffc3501a7 (patch) | |
| tree | a4d4c1532ce2c91c98b18f7ccb91ec70d38d6d33 /Source/Core/VideoCommon/VideoConfig.cpp | |
| parent | 6ca2897d200f898607cb1fe4370ed20b7f6ddd86 (diff) | |
Fix CPU Core Count detection and Enable Parallel Shader Compilation
This does this following things:
- Default to the runtime automatic number of threads for pre-compiling shaders
- Adds a distinct automatic thread count computation for pre-compilation (which has less other things going on
and should scale better beyond 4 cores)
- Removes the unused logical_core_count field from the CPU detection
- Changes the semantics of num_cores from maximaum addressable number of cores to actually available CPU cores
(which is also how it was actually used)
- Updates the computation of the HTT flag now that AMD no longer lies about it for its Zen processors
- Background shader compilation is *not* enabled by default
Diffstat (limited to 'Source/Core/VideoCommon/VideoConfig.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/VideoConfig.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/Source/Core/VideoCommon/VideoConfig.cpp b/Source/Core/VideoCommon/VideoConfig.cpp index 88ec126c7c..9cdf1256f7 100644 --- a/Source/Core/VideoCommon/VideoConfig.cpp +++ b/Source/Core/VideoCommon/VideoConfig.cpp @@ -176,6 +176,14 @@ static u32 GetNumAutoShaderCompilerThreads() return static_cast<u32>(std::min(std::max(cpu_info.num_cores - 3, 1), 4)); } +static u32 GetNumAutoShaderPreCompilerThreads() +{ + // Automatic number. We use clamp(cpus - 2, 1, infty) here. + // We chose this because we don't want to limit our speed-up + // and at the same time leave two logical cores for the dolphin UI and the rest of the OS. + return static_cast<u32>(std::max(cpu_info.num_cores - 2, 1)); +} + u32 VideoConfig::GetShaderCompilerThreads() const { if (!backend_info.bSupportsBackgroundCompiling) @@ -199,5 +207,5 @@ u32 VideoConfig::GetShaderPrecompilerThreads() const if (iShaderPrecompilerThreads >= 0) return static_cast<u32>(iShaderPrecompilerThreads); else - return GetNumAutoShaderCompilerThreads(); + return GetNumAutoShaderPreCompilerThreads(); } |
