diff options
| author | 2020-06-06 02:37:24 -0400 | |
|---|---|---|
| committer | 2020-06-06 02:37:24 -0400 | |
| 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.gz yuzu-03fd5aa3849b6bb5c9e7e17c5d41eefec84db22d.tar.xz yuzu-03fd5aa3849b6bb5c9e7e17c5d41eefec84db22d.zip | |
Merge pull request #4055 from ReinUsesLisp/nvidia-443-24
gl_device: Black list NVIDIA 443.24 for fast buffer uploads
| -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() { | |||
| 185 | Device::Device() | 185 | Device::Device() |
| 186 | : max_uniform_buffers{BuildMaxUniformBuffers()}, base_bindings{BuildBaseBindings()} { | 186 | : max_uniform_buffers{BuildMaxUniformBuffers()}, base_bindings{BuildBaseBindings()} { |
| 187 | const std::string_view vendor = reinterpret_cast<const char*>(glGetString(GL_VENDOR)); | 187 | const std::string_view vendor = reinterpret_cast<const char*>(glGetString(GL_VENDOR)); |
| 188 | const auto renderer = reinterpret_cast<const char*>(glGetString(GL_RENDERER)); | 188 | const std::string_view version = reinterpret_cast<const char*>(glGetString(GL_VERSION)); |
| 189 | const std::vector extensions = GetExtensions(); | 189 | const std::vector extensions = GetExtensions(); |
| 190 | 190 | ||
| 191 | const bool is_nvidia = vendor == "NVIDIA Corporation"; | 191 | const bool is_nvidia = vendor == "NVIDIA Corporation"; |
| 192 | const bool is_amd = vendor == "ATI Technologies Inc."; | 192 | const bool is_amd = vendor == "ATI Technologies Inc."; |
| 193 | 193 | ||
| 194 | bool disable_fast_buffer_sub_data = false; | ||
| 195 | if (is_nvidia && version == "4.6.0 NVIDIA 443.24") { | ||
| 196 | LOG_WARNING( | ||
| 197 | Render_OpenGL, | ||
| 198 | "Beta driver 443.24 is known to have issues. There might be performance issues."); | ||
| 199 | disable_fast_buffer_sub_data = true; | ||
| 200 | } | ||
| 201 | |||
| 194 | uniform_buffer_alignment = GetInteger<std::size_t>(GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT); | 202 | uniform_buffer_alignment = GetInteger<std::size_t>(GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT); |
| 195 | shader_storage_alignment = GetInteger<std::size_t>(GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT); | 203 | shader_storage_alignment = GetInteger<std::size_t>(GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT); |
| 196 | max_vertex_attributes = GetInteger<u32>(GL_MAX_VERTEX_ATTRIBS); | 204 | max_vertex_attributes = GetInteger<u32>(GL_MAX_VERTEX_ATTRIBS); |
| @@ -204,7 +212,7 @@ Device::Device() | |||
| 204 | has_variable_aoffi = TestVariableAoffi(); | 212 | has_variable_aoffi = TestVariableAoffi(); |
| 205 | has_component_indexing_bug = is_amd; | 213 | has_component_indexing_bug = is_amd; |
| 206 | has_precise_bug = TestPreciseBug(); | 214 | has_precise_bug = TestPreciseBug(); |
| 207 | has_fast_buffer_sub_data = is_nvidia; | 215 | has_fast_buffer_sub_data = is_nvidia && !disable_fast_buffer_sub_data; |
| 208 | use_assembly_shaders = Settings::values.use_assembly_shaders && GLAD_GL_NV_gpu_program5 && | 216 | use_assembly_shaders = Settings::values.use_assembly_shaders && GLAD_GL_NV_gpu_program5 && |
| 209 | GLAD_GL_NV_compute_program5; | 217 | GLAD_GL_NV_compute_program5; |
| 210 | 218 | ||