Merge pull request #6095 from lat9nq/async-shader-block
gl_device: Block async shaders on AMD and Intel
This commit is contained in:
		| @@ -210,6 +210,12 @@ Device::Device() { | |||||||
|     const bool is_amd = vendor == "ATI Technologies Inc."; |     const bool is_amd = vendor == "ATI Technologies Inc."; | ||||||
|     const bool is_intel = vendor == "Intel"; |     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; |     bool disable_fast_buffer_sub_data = false; | ||||||
|     if (is_nvidia && version == "4.6.0 NVIDIA 443.24") { |     if (is_nvidia && version == "4.6.0 NVIDIA 443.24") { | ||||||
|         LOG_WARNING( |         LOG_WARNING( | ||||||
| @@ -249,7 +255,9 @@ Device::Device() { | |||||||
|                            GLAD_GL_NV_gpu_program5 && GLAD_GL_NV_compute_program5 && |                            GLAD_GL_NV_gpu_program5 && GLAD_GL_NV_compute_program5 && | ||||||
|                            GLAD_GL_NV_transform_feedback && GLAD_GL_NV_transform_feedback2; |                            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; |     use_driver_cache = is_nvidia; | ||||||
|  |  | ||||||
|     LOG_INFO(Render_OpenGL, "Renderer_VariableAOFFI: {}", has_variable_aoffi); |     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) { |     if (Settings::values.use_assembly_shaders.GetValue() && !use_assembly_shaders) { | ||||||
|         LOG_ERROR(Render_OpenGL, "Assembly shaders enabled but not supported"); |         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) { | Device::Device(std::nullptr_t) { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user