summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2020-06-06 08:37:24 +0200
committerGitHub <noreply@github.com>2020-06-06 08:37:24 +0200
commit03fd5aa3849b6bb5c9e7e17c5d41eefec84db22d (patch)
tree5575cba3da917e6e7282b414dd6cbb094eb3d24c
parentMerge pull request #4013 from ReinUsesLisp/skip-no-xfb (diff)
parentgl_device: Black list NVIDIA 443.24 for fast buffer uploads (diff)
downloadyuzu-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.cpp12
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;