summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_opengl/gl_device.cpp
diff options
context:
space:
mode:
authorReinUsesLisp <reinuseslisp@airmail.cc>2019-04-10 23:03:52 +0200
committerReinUsesLisp <reinuseslisp@airmail.cc>2019-04-14 10:13:19 +0200
commitf15c59a164a7c4deafb77e9fc698cdf9a08691ce (patch)
treef232add61779165ba2d03773384b9df86c2f7af0 /src/video_core/renderer_opengl/gl_device.cpp
parentgl_device: Implement interface and add uniform offset alignment (diff)
downloadyuzu-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.cpp24
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