diff options
author | bunnei <bunneidev@gmail.com> | 2020-06-06 08:37:24 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-06 08:37:24 +0200 |
commit | 03fd5aa3849b6bb5c9e7e17c5d41eefec84db22d (patch) | |
tree | 5575cba3da917e6e7282b414dd6cbb094eb3d24c | |
parent | Merge pull request #4013 from ReinUsesLisp/skip-no-xfb (diff) | |
parent | gl_device: Black list NVIDIA 443.24 for fast buffer uploads (diff) | |
download | yuzu-03fd5aa3849b6bb5c9e7e17c5d41eefec84db22d.tar yuzu-03fd5aa3849b6bb5c9e7e17c5d41eefec84db22d.tar.gz yuzu-03fd5aa3849b6bb5c9e7e17c5d41eefec84db22d.tar.bz2 yuzu-03fd5aa3849b6bb5c9e7e17c5d41eefec84db22d.tar.lz yuzu-03fd5aa3849b6bb5c9e7e17c5d41eefec84db22d.tar.xz yuzu-03fd5aa3849b6bb5c9e7e17c5d41eefec84db22d.tar.zst yuzu-03fd5aa3849b6bb5c9e7e17c5d41eefec84db22d.zip |
-rw-r--r-- | src/video_core/renderer_opengl/gl_device.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/video_core/renderer_opengl/gl_device.cpp b/src/video_core/renderer_opengl/gl_device.cpp index b772c37d9..a14641b97 100644 --- a/src/video_core/renderer_opengl/gl_device.cpp +++ b/src/video_core/renderer_opengl/gl_device.cpp @@ -185,12 +185,20 @@ bool IsASTCSupported() { Device::Device() : max_uniform_buffers{BuildMaxUniformBuffers()}, base_bindings{BuildBaseBindings()} { const std::string_view vendor = reinterpret_cast<const char*>(glGetString(GL_VENDOR)); - const auto renderer = reinterpret_cast<const char*>(glGetString(GL_RENDERER)); + const std::string_view version = reinterpret_cast<const char*>(glGetString(GL_VERSION)); const std::vector extensions = GetExtensions(); const bool is_nvidia = vendor == "NVIDIA Corporation"; const bool is_amd = vendor == "ATI Technologies Inc."; + bool disable_fast_buffer_sub_data = false; + if (is_nvidia && version == "4.6.0 NVIDIA 443.24") { + LOG_WARNING( + Render_OpenGL, + "Beta driver 443.24 is known to have issues. There might be performance issues."); + disable_fast_buffer_sub_data = true; + } + uniform_buffer_alignment = GetInteger<std::size_t>(GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT); shader_storage_alignment = GetInteger<std::size_t>(GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT); max_vertex_attributes = GetInteger<u32>(GL_MAX_VERTEX_ATTRIBS); @@ -204,7 +212,7 @@ Device::Device() has_variable_aoffi = TestVariableAoffi(); has_component_indexing_bug = is_amd; has_precise_bug = TestPreciseBug(); - has_fast_buffer_sub_data = is_nvidia; + has_fast_buffer_sub_data = is_nvidia && !disable_fast_buffer_sub_data; use_assembly_shaders = Settings::values.use_assembly_shaders && GLAD_GL_NV_gpu_program5 && GLAD_GL_NV_compute_program5; |