diff options
| author | ReinUsesLisp <reinuseslisp@airmail.cc> | 2019-12-11 00:00:30 -0300 | 
|---|---|---|
| committer | ReinUsesLisp <reinuseslisp@airmail.cc> | 2019-12-11 00:00:30 -0300 | 
| commit | f564eaebedd4dc9e9051faa2e2103056b8db14eb (patch) | |
| tree | 78a28f0b611c39de14df50f93b421c794f45bae0 /src/video_core | |
| parent | 34f8881d3e0e4fa99e9bb2838be19abcbc033e4e (diff) | |
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.
Diffstat (limited to 'src/video_core')
| -rw-r--r-- | src/video_core/renderer_opengl/gl_device.cpp | 5 | 
1 files changed, 4 insertions, 1 deletions
| diff --git a/src/video_core/renderer_opengl/gl_device.cpp b/src/video_core/renderer_opengl/gl_device.cpp index 413d8546b..1a2e2a9f7 100644 --- a/src/video_core/renderer_opengl/gl_device.cpp +++ b/src/video_core/renderer_opengl/gl_device.cpp @@ -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); | 
