diff options
author | ReinUsesLisp <reinuseslisp@airmail.cc> | 2019-04-10 23:03:52 +0200 |
---|---|---|
committer | ReinUsesLisp <reinuseslisp@airmail.cc> | 2019-04-14 10:13:19 +0200 |
commit | f15c59a164a7c4deafb77e9fc698cdf9a08691ce (patch) | |
tree | f232add61779165ba2d03773384b9df86c2f7af0 /src/video_core/renderer_opengl/gl_device.cpp | |
parent | gl_device: Implement interface and add uniform offset alignment (diff) | |
download | yuzu-f15c59a164a7c4deafb77e9fc698cdf9a08691ce.tar yuzu-f15c59a164a7c4deafb77e9fc698cdf9a08691ce.tar.gz yuzu-f15c59a164a7c4deafb77e9fc698cdf9a08691ce.tar.bz2 yuzu-f15c59a164a7c4deafb77e9fc698cdf9a08691ce.tar.lz yuzu-f15c59a164a7c4deafb77e9fc698cdf9a08691ce.tar.xz yuzu-f15c59a164a7c4deafb77e9fc698cdf9a08691ce.tar.zst yuzu-f15c59a164a7c4deafb77e9fc698cdf9a08691ce.zip |
Diffstat (limited to 'src/video_core/renderer_opengl/gl_device.cpp')
-rw-r--r-- | src/video_core/renderer_opengl/gl_device.cpp | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/src/video_core/renderer_opengl/gl_device.cpp b/src/video_core/renderer_opengl/gl_device.cpp index b7ca3dca4..b6d9e0ddb 100644 --- a/src/video_core/renderer_opengl/gl_device.cpp +++ b/src/video_core/renderer_opengl/gl_device.cpp @@ -5,6 +5,7 @@ #include <cstddef> #include <glad/glad.h> +#include "common/logging/log.h" #include "video_core/renderer_opengl/gl_device.h" namespace OpenGL { @@ -18,10 +19,27 @@ T GetInteger(GLenum pname) { } } // Anonymous namespace -Device::Device() = default; - -void Device::Initialize() { +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 |