diff options
| author | ameerj <52414509+ameerj@users.noreply.github.com> | 2021-12-27 23:59:32 -0500 |
|---|---|---|
| committer | ameerj <52414509+ameerj@users.noreply.github.com> | 2021-12-29 19:03:50 -0500 |
| commit | b84d429c2ec59e54a89d9d4e34b0df9f22172e8f (patch) | |
| tree | e275b74a6fb2d16219697cbad38925e2e660e058 /src/video_core/renderer_opengl/gl_device.cpp | |
| parent | 9f34be5a6176674c9f4be0e2636cf1c01c067e69 (diff) | |
glsl_context_get_set: Add alternative cbuf type for broken drivers
some drivers have a bug bitwise converting floating point cbuf values to uint variables. This adds a workaround for these drivers to make all cbufs uint and convert to floating point as needed.
Diffstat (limited to 'src/video_core/renderer_opengl/gl_device.cpp')
| -rw-r--r-- | src/video_core/renderer_opengl/gl_device.cpp | 9 |
1 files changed, 2 insertions, 7 deletions
diff --git a/src/video_core/renderer_opengl/gl_device.cpp b/src/video_core/renderer_opengl/gl_device.cpp index 0764ea6e0..32736126f 100644 --- a/src/video_core/renderer_opengl/gl_device.cpp +++ b/src/video_core/renderer_opengl/gl_device.cpp @@ -182,17 +182,12 @@ Device::Device() { shader_backend = Settings::ShaderBackend::GLSL; } - if (shader_backend == Settings::ShaderBackend::GLSL && is_nvidia && - !Settings::values.renderer_debug) { + if (shader_backend == Settings::ShaderBackend::GLSL && is_nvidia) { const std::string_view driver_version = version.substr(13); const int version_major = std::atoi(driver_version.substr(0, driver_version.find(".")).data()); - if (version_major >= 495) { - LOG_WARNING(Render_OpenGL, "NVIDIA drivers 495 and later causes significant problems " - "with yuzu. Forcing GLASM as a mitigation."); - shader_backend = Settings::ShaderBackend::GLASM; - use_assembly_shaders = true; + has_cbuf_ftou_bug = true; } } |
