summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar ReinUsesLisp2019-12-11 00:00:30 -0300
committerGravatar ReinUsesLisp2019-12-11 00:00:30 -0300
commitf564eaebedd4dc9e9051faa2e2103056b8db14eb (patch)
tree78a28f0b611c39de14df50f93b421c794f45bae0 /src
parentMerge pull request #3201 from lioncash/dump (diff)
downloadyuzu-f564eaebedd4dc9e9051faa2e2103056b8db14eb.tar.gz
yuzu-f564eaebedd4dc9e9051faa2e2103056b8db14eb.tar.xz
yuzu-f564eaebedd4dc9e9051faa2e2103056b8db14eb.zip
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')
-rw-r--r--src/video_core/renderer_opengl/gl_device.cpp5
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 @@
5#include <algorithm> 5#include <algorithm>
6#include <array> 6#include <array>
7#include <cstddef> 7#include <cstddef>
8#include <cstring>
8#include <optional> 9#include <optional>
9#include <vector> 10#include <vector>
10 11
@@ -134,11 +135,13 @@ std::array<Device::BaseBindings, Tegra::Engines::MaxShaderTypes> BuildBaseBindin
134 135
135Device::Device() : base_bindings{BuildBaseBindings()} { 136Device::Device() : base_bindings{BuildBaseBindings()} {
136 const std::string_view vendor = reinterpret_cast<const char*>(glGetString(GL_VENDOR)); 137 const std::string_view vendor = reinterpret_cast<const char*>(glGetString(GL_VENDOR));
138 const auto renderer = reinterpret_cast<const char*>(glGetString(GL_RENDERER));
137 const std::vector extensions = GetExtensions(); 139 const std::vector extensions = GetExtensions();
138 140
139 const bool is_nvidia = vendor == "NVIDIA Corporation"; 141 const bool is_nvidia = vendor == "NVIDIA Corporation";
140 const bool is_amd = vendor == "ATI Technologies Inc."; 142 const bool is_amd = vendor == "ATI Technologies Inc.";
141 const bool is_intel = vendor == "Intel"; 143 const bool is_intel = vendor == "Intel";
144 const bool is_intel_proprietary = is_intel && std::strstr(renderer, "Mesa") == nullptr;
142 145
143 uniform_buffer_alignment = GetInteger<std::size_t>(GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT); 146 uniform_buffer_alignment = GetInteger<std::size_t>(GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT);
144 shader_storage_alignment = GetInteger<std::size_t>(GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT); 147 shader_storage_alignment = GetInteger<std::size_t>(GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT);
@@ -152,7 +155,7 @@ Device::Device() : base_bindings{BuildBaseBindings()} {
152 has_variable_aoffi = TestVariableAoffi(); 155 has_variable_aoffi = TestVariableAoffi();
153 has_component_indexing_bug = is_amd; 156 has_component_indexing_bug = is_amd;
154 has_precise_bug = TestPreciseBug(); 157 has_precise_bug = TestPreciseBug();
155 has_broken_compute = is_intel; 158 has_broken_compute = is_intel_proprietary;
156 has_fast_buffer_sub_data = is_nvidia; 159 has_fast_buffer_sub_data = is_nvidia;
157 160
158 LOG_INFO(Render_OpenGL, "Renderer_VariableAOFFI: {}", has_variable_aoffi); 161 LOG_INFO(Render_OpenGL, "Renderer_VariableAOFFI: {}", has_variable_aoffi);