mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-23 06:09:50 -06: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:
@ -42,11 +42,12 @@ enum class StereoMode : int
|
||||
Nvidia3DVision
|
||||
};
|
||||
|
||||
enum class UberShaderMode : int
|
||||
enum class ShaderCompilationMode : int
|
||||
{
|
||||
Disabled,
|
||||
Hybrid,
|
||||
Exclusive
|
||||
Synchronous,
|
||||
SynchronousUberShaders,
|
||||
AsynchronousUberShaders,
|
||||
AsynchronousSkipRendering
|
||||
};
|
||||
|
||||
struct ProjectionHackConfig final
|
||||
@ -170,7 +171,7 @@ struct VideoConfig final
|
||||
|
||||
// Shader compilation settings.
|
||||
bool bWaitForShadersBeforeStarting;
|
||||
UberShaderMode iUberShaderMode;
|
||||
ShaderCompilationMode iShaderCompilationMode;
|
||||
|
||||
// Number of shader compiler threads.
|
||||
// 0 disables background compilation.
|
||||
@ -238,7 +239,7 @@ struct VideoConfig final
|
||||
return backend_info.bSupportsGPUTextureDecoding && bEnableGPUTextureDecoding;
|
||||
}
|
||||
bool UseVertexRounding() const { return bVertexRounding && iEFBScale != 1; }
|
||||
bool UsingUberShaders() const { return iUberShaderMode != UberShaderMode::Disabled; }
|
||||
bool UsingUberShaders() const;
|
||||
u32 GetShaderCompilerThreads() const;
|
||||
u32 GetShaderPrecompilerThreads() const;
|
||||
};
|
||||
|
Reference in New Issue
Block a user