summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_opengl/gl_shader_context.h
diff options
context:
space:
mode:
authorameerj <52414509+ameerj@users.noreply.github.com>2021-06-15 03:06:29 +0200
committerameerj <52414509+ameerj@users.noreply.github.com>2021-07-23 03:51:38 +0200
commit74f683787eeba7b6e8f5868134f445240733f8fd (patch)
tree880306114a423a5854172bc9e4b66e20be1932e6 /src/video_core/renderer_opengl/gl_shader_context.h
parentglsl: Add Shader_GLSL logging (diff)
downloadyuzu-74f683787eeba7b6e8f5868134f445240733f8fd.tar
yuzu-74f683787eeba7b6e8f5868134f445240733f8fd.tar.gz
yuzu-74f683787eeba7b6e8f5868134f445240733f8fd.tar.bz2
yuzu-74f683787eeba7b6e8f5868134f445240733f8fd.tar.lz
yuzu-74f683787eeba7b6e8f5868134f445240733f8fd.tar.xz
yuzu-74f683787eeba7b6e8f5868134f445240733f8fd.tar.zst
yuzu-74f683787eeba7b6e8f5868134f445240733f8fd.zip
Diffstat (limited to '')
-rw-r--r--src/video_core/renderer_opengl/gl_shader_context.h33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/video_core/renderer_opengl/gl_shader_context.h b/src/video_core/renderer_opengl/gl_shader_context.h
new file mode 100644
index 000000000..6ff34e5d6
--- /dev/null
+++ b/src/video_core/renderer_opengl/gl_shader_context.h
@@ -0,0 +1,33 @@
+// Copyright 2021 yuzu Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include "core/frontend/emu_window.h"
+#include "shader_recompiler/frontend/ir/basic_block.h"
+#include "shader_recompiler/frontend/maxwell/control_flow.h"
+
+namespace OpenGL::ShaderContext {
+struct ShaderPools {
+ void ReleaseContents() {
+ flow_block.ReleaseContents();
+ block.ReleaseContents();
+ inst.ReleaseContents();
+ }
+
+ Shader::ObjectPool<Shader::IR::Inst> inst;
+ Shader::ObjectPool<Shader::IR::Block> block;
+ Shader::ObjectPool<Shader::Maxwell::Flow::Block> flow_block;
+};
+
+struct Context {
+ explicit Context(Core::Frontend::EmuWindow& emu_window)
+ : gl_context{emu_window.CreateSharedContext()}, scoped{*gl_context} {}
+
+ std::unique_ptr<Core::Frontend::GraphicsContext> gl_context;
+ Core::Frontend::GraphicsContext::Scoped scoped;
+ ShaderPools pools;
+};
+
+} // namespace OpenGL::ShaderContext