mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-29 04:08:55 +00:00
Implement "Skip" ubershader mode
Skip ubershader mode works the same as hybrid ubershaders in that the shaders are compiled asynchronously. However, instead of using the ubershader to draw the object, it skips it entirely until the specialized shader is made available. This mode will likely result in broken effects where a game creates an EFB copy, and does not redraw it every frame. Therefore, it is not a recommended option, however, it may result in better performance on low-end systems.
This commit is contained in:
parent
5c83e18fbd
commit
2f1a7cbee1
22 changed files with 292 additions and 127 deletions
|
@ -103,7 +103,8 @@ void VideoConfig::Refresh()
|
|||
iCommandBufferExecuteInterval = Config::Get(Config::GFX_COMMAND_BUFFER_EXECUTE_INTERVAL);
|
||||
bShaderCache = Config::Get(Config::GFX_SHADER_CACHE);
|
||||
bWaitForShadersBeforeStarting = Config::Get(Config::GFX_WAIT_FOR_SHADERS_BEFORE_STARTING);
|
||||
iUberShaderMode = static_cast<UberShaderMode>(Config::Get(Config::GFX_UBERSHADER_MODE));
|
||||
iShaderCompilationMode =
|
||||
static_cast<ShaderCompilationMode>(Config::Get(Config::GFX_SHADER_COMPILATION_MODE));
|
||||
iShaderCompilerThreads = Config::Get(Config::GFX_SHADER_COMPILER_THREADS);
|
||||
iShaderPrecompilerThreads = Config::Get(Config::GFX_SHADER_PRECOMPILER_THREADS);
|
||||
|
||||
|
@ -178,6 +179,12 @@ bool VideoConfig::IsVSync() const
|
|||
return bVSync && !Core::GetIsThrottlerTempDisabled();
|
||||
}
|
||||
|
||||
bool VideoConfig::UsingUberShaders() const
|
||||
{
|
||||
return iShaderCompilationMode == ShaderCompilationMode::SynchronousUberShaders ||
|
||||
iShaderCompilationMode == ShaderCompilationMode::AsynchronousUberShaders;
|
||||
}
|
||||
|
||||
static u32 GetNumAutoShaderCompilerThreads()
|
||||
{
|
||||
// Automatic number. We use clamp(cpus - 3, 1, 4).
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue