diff options
| author | lizzie <lizzie@eden-emu.dev> | 2026-01-01 07:02:44 +0100 |
|---|---|---|
| committer | crueter <crueter@eden-emu.dev> | 2026-01-01 07:02:44 +0100 |
| commit | 82f9d489e7916318b56dac59fc52efc46fe0df7e (patch) | |
| tree | 137ca5a232acda25a9ae97a2a654d47def51bfd6 /src/video_core/renderer_opengl | |
| parent | 9c3f2d2af5305d447df2fda4dcb4781ae18097ea (diff) | |
Revert "[vk, ogl/IR, dynarmic/IR] friendlier IR identity pointer chasing, inline AA passes (#2565)" (#3249)
FUCK. Fixes crash on Linux and SteamDeck
.
This reverts commit 46b32b76886b5cd0cfc8dfee1a02c3e83fb1e7d7.
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3249
Reviewed-by: DraVee <dravee@eden-emu.dev>
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com>
Co-authored-by: lizzie <lizzie@eden-emu.dev>
Co-committed-by: lizzie <lizzie@eden-emu.dev>
Diffstat (limited to 'src/video_core/renderer_opengl')
| -rw-r--r-- | src/video_core/renderer_opengl/present/layer.cpp | 22 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/present/layer.h | 17 |
2 files changed, 18 insertions, 21 deletions
diff --git a/src/video_core/renderer_opengl/present/layer.cpp b/src/video_core/renderer_opengl/present/layer.cpp index f18600e692..6c7092d229 100644 --- a/src/video_core/renderer_opengl/present/layer.cpp +++ b/src/video_core/renderer_opengl/present/layer.cpp @@ -1,6 +1,3 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project -// SPDX-License-Identifier: GPL-3.0-or-later - // SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later @@ -57,12 +54,12 @@ GLuint Layer::ConfigureDraw(std::array<GLfloat, 3 * 2>& out_matrix, switch (anti_aliasing) { case Settings::AntiAliasing::Fxaa: CreateFXAA(); - texture = std::get<FXAA>(anti_alias).Draw(program_manager, info.display_texture); + texture = fxaa->Draw(program_manager, info.display_texture); break; case Settings::AntiAliasing::Smaa: default: CreateSMAA(); - texture = std::get<SMAA>(anti_alias).Draw(program_manager, info.display_texture); + texture = smaa->Draw(program_manager, info.display_texture); break; } } @@ -71,7 +68,7 @@ GLuint Layer::ConfigureDraw(std::array<GLfloat, 3 * 2>& out_matrix, if (filters.get_scaling_filter() == Settings::ScalingFilter::Fsr) { if (!fsr || fsr->NeedsRecreation(layout.screen)) { - fsr.emplace(layout.screen.GetWidth(), layout.screen.GetHeight()); + fsr = std::make_unique<FSR>(layout.screen.GetWidth(), layout.screen.GetHeight()); } texture = fsr->Draw(program_manager, texture, info.scaled_width, info.scaled_height, crop); @@ -202,20 +199,23 @@ void Layer::ConfigureFramebufferTexture(const Tegra::FramebufferConfig& framebuf glTextureStorage2D(framebuffer_texture.resource.handle, 1, internal_format, framebuffer_texture.width, framebuffer_texture.height); - anti_alias.emplace<std::monostate>(); + fxaa.reset(); + smaa.reset(); } void Layer::CreateFXAA() { - if (!std::holds_alternative<FXAA>(anti_alias)) { - anti_alias.emplace<FXAA>( + smaa.reset(); + if (!fxaa) { + fxaa = std::make_unique<FXAA>( Settings::values.resolution_info.ScaleUp(framebuffer_texture.width), Settings::values.resolution_info.ScaleUp(framebuffer_texture.height)); } } void Layer::CreateSMAA() { - if (!std::holds_alternative<SMAA>(anti_alias)) { - anti_alias.emplace<SMAA>( + fxaa.reset(); + if (!smaa) { + smaa = std::make_unique<SMAA>( Settings::values.resolution_info.ScaleUp(framebuffer_texture.width), Settings::values.resolution_info.ScaleUp(framebuffer_texture.height)); } diff --git a/src/video_core/renderer_opengl/present/layer.h b/src/video_core/renderer_opengl/present/layer.h index e09fd6f696..5b15b730fc 100644 --- a/src/video_core/renderer_opengl/present/layer.h +++ b/src/video_core/renderer_opengl/present/layer.h @@ -1,20 +1,13 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project -// SPDX-License-Identifier: GPL-3.0-or-later - // SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once -#include <optional> -#include <variant> +#include <memory> #include <vector> #include "video_core/host1x/gpu_device_memory_manager.h" #include "video_core/renderer_opengl/gl_resource_manager.h" -#include "video_core/renderer_opengl/present/smaa.h" -#include "video_core/renderer_opengl/present/fxaa.h" -#include "video_core/renderer_opengl/present/fsr.h" namespace Layout { struct FramebufferLayout; @@ -33,8 +26,11 @@ struct FramebufferConfig; namespace OpenGL { struct FramebufferTextureInfo; +class FSR; +class FXAA; class ProgramManager; class RasterizerOpenGL; +class SMAA; /// Structure used for storing information about the textures for the Switch screen struct TextureInfo { @@ -80,8 +76,9 @@ private: /// Display information for Switch screen TextureInfo framebuffer_texture; - std::optional<FSR> fsr; - std::variant<std::monostate, FXAA, SMAA> anti_alias; + std::unique_ptr<FSR> fsr; + std::unique_ptr<FXAA> fxaa; + std::unique_ptr<SMAA> smaa; }; } // namespace OpenGL |
