gl_device: Enable compute shaders for Intel Mesa drivers
Previously we naively checked for "Intel" in GL_VENDOR, but this includes both Intel's proprietary driver and the mesa driver. Re-enable compute shaders for mesa.
This commit is contained in:
		| @@ -5,6 +5,7 @@ | ||||
| #include <algorithm> | ||||
| #include <array> | ||||
| #include <cstddef> | ||||
| #include <cstring> | ||||
| #include <optional> | ||||
| #include <vector> | ||||
|  | ||||
| @@ -134,11 +135,13 @@ std::array<Device::BaseBindings, Tegra::Engines::MaxShaderTypes> BuildBaseBindin | ||||
|  | ||||
| Device::Device() : 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::vector extensions = GetExtensions(); | ||||
|  | ||||
|     const bool is_nvidia = vendor == "NVIDIA Corporation"; | ||||
|     const bool is_amd = vendor == "ATI Technologies Inc."; | ||||
|     const bool is_intel = vendor == "Intel"; | ||||
|     const bool is_intel_proprietary = is_intel && std::strstr(renderer, "Mesa") == nullptr; | ||||
|  | ||||
|     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); | ||||
| @@ -152,7 +155,7 @@ Device::Device() : base_bindings{BuildBaseBindings()} { | ||||
|     has_variable_aoffi = TestVariableAoffi(); | ||||
|     has_component_indexing_bug = is_amd; | ||||
|     has_precise_bug = TestPreciseBug(); | ||||
|     has_broken_compute = is_intel; | ||||
|     has_broken_compute = is_intel_proprietary; | ||||
|     has_fast_buffer_sub_data = is_nvidia; | ||||
|  | ||||
|     LOG_INFO(Render_OpenGL, "Renderer_VariableAOFFI: {}", has_variable_aoffi); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 ReinUsesLisp
					ReinUsesLisp