summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/VideoConfig.cpp
diff options
context:
space:
mode:
authorDevJPM <DevJPM@users.noreply.github.com>2021-01-02 13:47:18 +0100
committerunknown <jean-pierre.muench@posteo.de>2021-11-20 16:08:10 +0100
commit61cfd8696ee010758c48d02eac13d3dffc3501a7 (patch)
treea4d4c1532ce2c91c98b18f7ccb91ec70d38d6d33 /Source/Core/VideoCommon/VideoConfig.cpp
parent6ca2897d200f898607cb1fe4370ed20b7f6ddd86 (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.cpp10
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();
}