diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/video_core/renderer_opengl/gl_device.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/video_core/renderer_opengl/gl_device.cpp b/src/video_core/renderer_opengl/gl_device.cpp index 1e1d1d020..0764ea6e0 100644 --- a/src/video_core/renderer_opengl/gl_device.cpp +++ b/src/video_core/renderer_opengl/gl_device.cpp | |||
| @@ -181,6 +181,21 @@ Device::Device() { | |||
| 181 | LOG_ERROR(Render_OpenGL, "Assembly shaders enabled but not supported"); | 181 | LOG_ERROR(Render_OpenGL, "Assembly shaders enabled but not supported"); |
| 182 | shader_backend = Settings::ShaderBackend::GLSL; | 182 | shader_backend = Settings::ShaderBackend::GLSL; |
| 183 | } | 183 | } |
| 184 | |||
| 185 | if (shader_backend == Settings::ShaderBackend::GLSL && is_nvidia && | ||
| 186 | !Settings::values.renderer_debug) { | ||
| 187 | const std::string_view driver_version = version.substr(13); | ||
| 188 | const int version_major = | ||
| 189 | std::atoi(driver_version.substr(0, driver_version.find(".")).data()); | ||
| 190 | |||
| 191 | if (version_major >= 495) { | ||
| 192 | LOG_WARNING(Render_OpenGL, "NVIDIA drivers 495 and later causes significant problems " | ||
| 193 | "with yuzu. Forcing GLASM as a mitigation."); | ||
| 194 | shader_backend = Settings::ShaderBackend::GLASM; | ||
| 195 | use_assembly_shaders = true; | ||
| 196 | } | ||
| 197 | } | ||
| 198 | |||
| 184 | // Blocks AMD and Intel OpenGL drivers on Windows from using asynchronous shader compilation. | 199 | // Blocks AMD and Intel OpenGL drivers on Windows from using asynchronous shader compilation. |
| 185 | use_asynchronous_shaders = Settings::values.use_asynchronous_shaders.GetValue() && | 200 | use_asynchronous_shaders = Settings::values.use_asynchronous_shaders.GetValue() && |
| 186 | !(is_amd || (is_intel && !is_linux)); | 201 | !(is_amd || (is_intel && !is_linux)); |