diff options
| author | lizzie <lizzie@eden-emu.dev> | 2025-12-31 17:00:29 +0100 |
|---|---|---|
| committer | crueter <crueter@eden-emu.dev> | 2025-12-31 17:00:29 +0100 |
| commit | 46b32b76886b5cd0cfc8dfee1a02c3e83fb1e7d7 (patch) | |
| tree | 281a110374e3cdaf60fec43cc043fb3cccc016a1 /src/video_core/renderer_vulkan/present/layer.h | |
| parent | 55646657e17a99a9ddd3da4b552f3d9ac233037b (diff) | |
[vk, ogl/IR, dynarmic/IR] friendlier IR identity pointer chasing, inline AA passes (#2565)
- use std::optional instead of std::unique_ptr for the Antialias (FXAA, etc) passes to avoid the extra deref
- use a pattern for deferencing the IR pointer chasing loop as suggested on the intel optimization manual
- this also removes std::vector<> overhead by using boost::container::small_vector<> (not a silver bullet but in the case of this function reduces access times)
Signed-off-by: lizzie <lizzie@eden-emu.dev>
Co-authored-by: Caio Oliveira <caiooliveirafarias0@gmail.com>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2565
Reviewed-by: Maufeat <sahyno1996@gmail.com>
Reviewed-by: MaranBr <maranbr@eden-emu.dev>
Co-authored-by: lizzie <lizzie@eden-emu.dev>
Co-committed-by: lizzie <lizzie@eden-emu.dev>
Diffstat (limited to 'src/video_core/renderer_vulkan/present/layer.h')
| -rw-r--r-- | src/video_core/renderer_vulkan/present/layer.h | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/video_core/renderer_vulkan/present/layer.h b/src/video_core/renderer_vulkan/present/layer.h index f5effdcd7f..062b7792c4 100644 --- a/src/video_core/renderer_vulkan/present/layer.h +++ b/src/video_core/renderer_vulkan/present/layer.h @@ -1,11 +1,20 @@ +// 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 "common/math_util.h" #include "video_core/host1x/gpu_device_memory_manager.h" #include "video_core/vulkan_common/vulkan_wrapper.h" +#include "video_core/renderer_vulkan/present/fsr.h" +#include "video_core/renderer_vulkan/present/fxaa.h" +#include "video_core/renderer_vulkan/present/smaa.h" namespace Layout { struct FramebufferLayout; @@ -29,7 +38,6 @@ namespace Vulkan { class AntiAliasPass; class Device; -class FSR; class MemoryAllocator; struct PresentPushConstants; class RasterizerVulkan; @@ -54,7 +62,6 @@ private: void CreateDescriptorSets(VkDescriptorSetLayout layout); void CreateStagingBuffer(const Tegra::FramebufferConfig& framebuffer); void CreateRawImages(const Tegra::FramebufferConfig& framebuffer); - void CreateFSR(VkExtent2D output_size); void RefreshResources(const Tegra::FramebufferConfig& framebuffer); void SetAntiAliasPass(); @@ -87,9 +94,8 @@ private: Service::android::PixelFormat pixel_format{}; Settings::AntiAliasing anti_alias_setting{}; - std::unique_ptr<AntiAliasPass> anti_alias{}; - - std::unique_ptr<FSR> fsr{}; + std::variant<std::monostate, FXAA, SMAA> anti_alias{}; + std::optional<FSR> fsr{}; std::vector<u64> resource_ticks{}; }; |
