aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/renderer_opengl
diff options
context:
space:
mode:
authorlizzie <lizzie@eden-emu.dev>2026-01-01 07:02:44 +0100
committercrueter <crueter@eden-emu.dev>2026-01-01 07:02:44 +0100
commit82f9d489e7916318b56dac59fc52efc46fe0df7e (patch)
tree137ca5a232acda25a9ae97a2a654d47def51bfd6 /src/video_core/renderer_opengl
parent9c3f2d2af5305d447df2fda4dcb4781ae18097ea (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.cpp22
-rw-r--r--src/video_core/renderer_opengl/present/layer.h17
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