aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/renderer_vulkan/present/layer.cpp
diff options
context:
space:
mode:
authorlizzie <lizzie@eden-emu.dev>2026-05-24 01:38:19 +0200
committercrueter <crueter@eden-emu.dev>2026-05-24 01:38:19 +0200
commit0c74a495f534078487ae5413a17d53ba84e70b8c (patch)
treef22e17c74d70281b2badb3c336aa96f5d6dd296e /src/video_core/renderer_vulkan/present/layer.cpp
parentc6afeb2bf83d026a3a84557789842bdfddae816b (diff)
[video_core/host_shaders] add Snapdragon GSRv1 fragment shaders (#3307)
Signed-off-by: lizzie <lizzie@eden-emu.dev> Co-authored-by: CamilleLaVey <camillelavey99@gmail.com> Co-authored-by: xbzk <xbzk@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3307 Reviewed-by: MaranBr <maranbr@eden-emu.dev> Reviewed-by: CamilleLaVey <camillelavey99@gmail.com>
Diffstat (limited to 'src/video_core/renderer_vulkan/present/layer.cpp')
-rw-r--r--src/video_core/renderer_vulkan/present/layer.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/video_core/renderer_vulkan/present/layer.cpp b/src/video_core/renderer_vulkan/present/layer.cpp
index b462c672cc..e20473d2af 100644
--- a/src/video_core/renderer_vulkan/present/layer.cpp
+++ b/src/video_core/renderer_vulkan/present/layer.cpp
@@ -15,6 +15,7 @@
#include "common/settings.h"
#include "video_core/framebuffer_config.h"
#include "video_core/renderer_vulkan/present/fsr.h"
+#include "video_core/renderer_vulkan/present/sgsr.h"
#include "video_core/renderer_vulkan/present/fxaa.h"
#include "video_core/renderer_vulkan/present/layer.h"
#include "video_core/renderer_vulkan/present/present_push_constants.h"
@@ -63,7 +64,11 @@ Layer::Layer(const Device& device_, MemoryAllocator& memory_allocator_, Schedule
CreateDescriptorPool();
CreateDescriptorSets(layout);
if (filters.get_scaling_filter() == Settings::ScalingFilter::Fsr) {
- fsr.emplace(device, memory_allocator, image_count, output_size);
+ sr_filter.emplace<FSR>(device, memory_allocator, image_count, output_size);
+ } else if (filters.get_scaling_filter() == Settings::ScalingFilter::Sgsr) {
+ sr_filter.emplace<SGSR>(device, memory_allocator, image_count, output_size, false);
+ } else if (filters.get_scaling_filter() == Settings::ScalingFilter::SgsrEdge) {
+ sr_filter.emplace<SGSR>(device, memory_allocator, image_count, output_size, true);
}
}
@@ -114,9 +119,12 @@ void Layer::ConfigureDraw(PresentPushConstants* out_push_constants,
.height = scaled_height,
};
- if (fsr) {
+ if (auto* fsr = std::get_if<FSR>(&sr_filter)) {
source_image_view = fsr->Draw(scheduler, image_index, source_image, source_image_view, render_extent, crop_rect);
crop_rect = {0, 0, 1, 1};
+ } else if (auto* sgsr = std::get_if<SGSR>(&sr_filter)) {
+ source_image_view = sgsr->Draw(scheduler, image_index, source_image, source_image_view, render_extent, crop_rect);
+ crop_rect = {0, 0, 1, 1};
}
SetMatrixData(*out_push_constants, layout);