diff options
| author | bunnei <bunneidev@gmail.com> | 2019-04-22 22:14:02 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-04-22 22:14:02 -0400 |
| commit | 4fad91ca4501af51822a35d5f251c6cf486f5041 (patch) | |
| tree | add83242d7d748f3ca0eb7136470c762218fdf74 /src/video_core/renderer_opengl/gl_device.cpp | |
| parent | 9cab042674369c7a410e93a243a9b8ceea575252 (diff) | |
| parent | f15c59a164a7c4deafb77e9fc698cdf9a08691ce (diff) | |
Merge pull request #2383 from ReinUsesLisp/aoffi-test
gl_shader_decompiler: Disable variable AOFFI on unsupported devices
Diffstat (limited to 'src/video_core/renderer_opengl/gl_device.cpp')
| -rw-r--r-- | src/video_core/renderer_opengl/gl_device.cpp | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/video_core/renderer_opengl/gl_device.cpp b/src/video_core/renderer_opengl/gl_device.cpp new file mode 100644 index 000000000..b6d9e0ddb --- /dev/null +++ b/src/video_core/renderer_opengl/gl_device.cpp @@ -0,0 +1,45 @@ +// Copyright 2019 yuzu Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#include <cstddef> +#include <glad/glad.h> + +#include "common/logging/log.h" +#include "video_core/renderer_opengl/gl_device.h" + +namespace OpenGL { + +namespace { +template <typename T> +T GetInteger(GLenum pname) { + GLint temporary; + glGetIntegerv(pname, &temporary); + return static_cast<T>(temporary); +} +} // Anonymous namespace + +Device::Device() { + uniform_buffer_alignment = GetInteger<std::size_t>(GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT); + has_variable_aoffi = TestVariableAoffi(); +} + +bool Device::TestVariableAoffi() { + const GLchar* AOFFI_TEST = R"(#version 430 core +uniform sampler2D tex; +uniform ivec2 variable_offset; +void main() { + gl_Position = textureOffset(tex, vec2(0), variable_offset); +} +)"; + const GLuint shader{glCreateShaderProgramv(GL_VERTEX_SHADER, 1, &AOFFI_TEST)}; + GLint link_status{}; + glGetProgramiv(shader, GL_LINK_STATUS, &link_status); + glDeleteProgram(shader); + + const bool supported{link_status == GL_TRUE}; + LOG_INFO(Render_OpenGL, "Renderer_VariableAOFFI: {}", supported); + return supported; +} + +} // namespace OpenGL |
