diff options
author | LC <mathew1800@gmail.com> | 2021-03-22 04:29:49 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-22 04:29:49 +0100 |
commit | a50133fc5ea87e6ad5aae5e68d5150e852820d1e (patch) | |
tree | 12cdeb65b2680c425bb9178d05d103778040aff1 | |
parent | Merge pull request #6078 from Morph1984/libusb-utf8 (diff) | |
parent | gl_device: Block async shaders on AMD and Intel (diff) | |
download | yuzu-a50133fc5ea87e6ad5aae5e68d5150e852820d1e.tar yuzu-a50133fc5ea87e6ad5aae5e68d5150e852820d1e.tar.gz yuzu-a50133fc5ea87e6ad5aae5e68d5150e852820d1e.tar.bz2 yuzu-a50133fc5ea87e6ad5aae5e68d5150e852820d1e.tar.lz yuzu-a50133fc5ea87e6ad5aae5e68d5150e852820d1e.tar.xz yuzu-a50133fc5ea87e6ad5aae5e68d5150e852820d1e.tar.zst yuzu-a50133fc5ea87e6ad5aae5e68d5150e852820d1e.zip |
-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() { const bool is_amd = vendor == "ATI Technologies Inc."; const bool is_intel = vendor == "Intel"; +#ifdef __linux__ + const bool is_linux = true; +#else + const bool is_linux = false; +#endif + bool disable_fast_buffer_sub_data = false; if (is_nvidia && version == "4.6.0 NVIDIA 443.24") { LOG_WARNING( @@ -249,7 +255,9 @@ Device::Device() { GLAD_GL_NV_gpu_program5 && GLAD_GL_NV_compute_program5 && GLAD_GL_NV_transform_feedback && GLAD_GL_NV_transform_feedback2; - use_asynchronous_shaders = Settings::values.use_asynchronous_shaders.GetValue(); + // Blocks AMD and Intel OpenGL drivers on Windows from using asynchronous shader compilation. + use_asynchronous_shaders = Settings::values.use_asynchronous_shaders.GetValue() && + !(is_amd || (is_intel && !is_linux)); use_driver_cache = is_nvidia; LOG_INFO(Render_OpenGL, "Renderer_VariableAOFFI: {}", has_variable_aoffi); @@ -261,6 +269,10 @@ Device::Device() { if (Settings::values.use_assembly_shaders.GetValue() && !use_assembly_shaders) { LOG_ERROR(Render_OpenGL, "Assembly shaders enabled but not supported"); } + + if (Settings::values.use_asynchronous_shaders.GetValue() && !use_asynchronous_shaders) { + LOG_WARNING(Render_OpenGL, "Asynchronous shader compilation enabled but not supported"); + } } Device::Device(std::nullptr_t) { |