// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include "core/frontend/emu_window.h" #include "core/frontend/graphics_context.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 inst; Shader::ObjectPool block; Shader::ObjectPool flow_block; }; struct Context { explicit Context(Core::Frontend::EmuWindow& emu_window) : gl_context{emu_window.CreateSharedContext()}, scoped{*gl_context} {} std::unique_ptr gl_context; Core::Frontend::GraphicsContext::Scoped scoped; ShaderPools pools; }; } // namespace OpenGL::ShaderContext