diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/video_core/renderer_opengl/gl_device.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/video_core/renderer_opengl/gl_device.cpp b/src/video_core/renderer_opengl/gl_device.cpp index 1ae5f1d62..ba59414a7 100644 --- a/src/video_core/renderer_opengl/gl_device.cpp +++ b/src/video_core/renderer_opengl/gl_device.cpp | |||
| @@ -210,6 +210,12 @@ Device::Device() { | |||
| 210 | const bool is_amd = vendor == "ATI Technologies Inc."; | 210 | const bool is_amd = vendor == "ATI Technologies Inc."; |
| 211 | const bool is_intel = vendor == "Intel"; | 211 | const bool is_intel = vendor == "Intel"; |
| 212 | 212 | ||
| 213 | #ifdef __linux__ | ||
| 214 | const bool is_linux = true; | ||
| 215 | #else | ||
| 216 | const bool is_linux = false; | ||
| 217 | #endif | ||
| 218 | |||
| 213 | bool disable_fast_buffer_sub_data = false; | 219 | bool disable_fast_buffer_sub_data = false; |
| 214 | if (is_nvidia && version == "4.6.0 NVIDIA 443.24") { | 220 | if (is_nvidia && version == "4.6.0 NVIDIA 443.24") { |
| 215 | LOG_WARNING( | 221 | LOG_WARNING( |
| @@ -249,7 +255,9 @@ Device::Device() { | |||
| 249 | GLAD_GL_NV_gpu_program5 && GLAD_GL_NV_compute_program5 && | 255 | GLAD_GL_NV_gpu_program5 && GLAD_GL_NV_compute_program5 && |
| 250 | GLAD_GL_NV_transform_feedback && GLAD_GL_NV_transform_feedback2; | 256 | GLAD_GL_NV_transform_feedback && GLAD_GL_NV_transform_feedback2; |
| 251 | 257 | ||
| 252 | use_asynchronous_shaders = Settings::values.use_asynchronous_shaders.GetValue(); | 258 | // Blocks AMD and Intel OpenGL drivers on Windows from using asynchronous shader compilation. |
| 259 | use_asynchronous_shaders = Settings::values.use_asynchronous_shaders.GetValue() && | ||
| 260 | !(is_amd || (is_intel && !is_linux)); | ||
| 253 | use_driver_cache = is_nvidia; | 261 | use_driver_cache = is_nvidia; |
| 254 | 262 | ||
| 255 | LOG_INFO(Render_OpenGL, "Renderer_VariableAOFFI: {}", has_variable_aoffi); | 263 | LOG_INFO(Render_OpenGL, "Renderer_VariableAOFFI: {}", has_variable_aoffi); |
| @@ -261,6 +269,10 @@ Device::Device() { | |||
| 261 | if (Settings::values.use_assembly_shaders.GetValue() && !use_assembly_shaders) { | 269 | if (Settings::values.use_assembly_shaders.GetValue() && !use_assembly_shaders) { |
| 262 | LOG_ERROR(Render_OpenGL, "Assembly shaders enabled but not supported"); | 270 | LOG_ERROR(Render_OpenGL, "Assembly shaders enabled but not supported"); |
| 263 | } | 271 | } |
| 272 | |||
| 273 | if (Settings::values.use_asynchronous_shaders.GetValue() && !use_asynchronous_shaders) { | ||
| 274 | LOG_WARNING(Render_OpenGL, "Asynchronous shader compilation enabled but not supported"); | ||
| 275 | } | ||
| 264 | } | 276 | } |
| 265 | 277 | ||
| 266 | Device::Device(std::nullptr_t) { | 278 | Device::Device(std::nullptr_t) { |