From a9dac11f159ffaecc7cd9a7bb12c988f6f4a76a1 Mon Sep 17 00:00:00 2001 From: Georg Lehmann Date: Wed, 26 Jan 2022 17:16:29 +0100 Subject: [PATCH] main: FSR sharpness setting. --- src/main.cpp | 7 +++++++ src/main.hpp | 1 + src/rendervulkan.cpp | 2 +- src/sdlwindow.cpp | 6 ++++++ 4 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/main.cpp b/src/main.cpp index 6fde02e..4e9e290 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -38,6 +38,7 @@ const struct option *gamescope_options = (struct option[]){ { "output-height", required_argument, nullptr, 'H' }, { "nearest-neighbor-filter", no_argument, nullptr, 'n' }, { "fsr-upscaling", no_argument, nullptr, 'U' }, + { "fsr-sharpness", required_argument, nullptr, 0 }, // nested mode options { "nested-unfocused-refresh", required_argument, nullptr, 'o' }, @@ -87,6 +88,7 @@ const char usage[] = " -H, --output-height output height\n" " -n, --nearest-neighbor-filter use nearest neighbor filtering\n" " -U --fsr-upscaling use AMD FidelityFX™ Super Resolution 1.0 for upscaling" + " --fsr-sharpness FSR sharpness from 0 (max) to 20 (min)\n" " --cursor path to default cursor image\n" " -R, --ready-fd notify FD when ready\n" " -T, --stats-path write statistics to path\n" @@ -119,6 +121,8 @@ const char usage[] = " Super + F toggle fullscreen\n" " Super + N toggle nearest neighbour filtering\n" " Super + U toggle FSR upscaling\n" + " Super + I increase FSR sharpness by 1\n" + " Super + O decrease FSR sharpness by 1\n" " Super + S take a screenshot\n" ""; @@ -139,6 +143,7 @@ bool g_bIsNested = false; bool g_bFilterGameWindow = true; bool g_fsrUpscale = false; +int g_fsrSharpness = 2; bool g_bBorderlessOutputWindow = false; @@ -278,6 +283,8 @@ int main(int argc, char **argv) g_nTouchClickMode = g_nDefaultTouchClickMode; } else if (strcmp(opt_name, "generate-drm-mode") == 0) { g_drmModeGeneration = parse_drm_mode_generation( optarg ); + } else if (strcmp(opt_name, "fsr-sharpness") == 0) { + g_fsrSharpness = atoi( optarg ); } break; case '?': diff --git a/src/main.hpp b/src/main.hpp index 9900669..24967cd 100644 --- a/src/main.hpp +++ b/src/main.hpp @@ -23,6 +23,7 @@ extern bool g_bFullscreen; extern bool g_bFilterGameWindow; extern bool g_fsrUpscale; +extern int g_fsrSharpness; extern bool g_bBorderlessOutputWindow; diff --git a/src/rendervulkan.cpp b/src/rendervulkan.cpp index 5904f9e..e99ddf1 100644 --- a/src/rendervulkan.cpp +++ b/src/rendervulkan.cpp @@ -2513,7 +2513,7 @@ bool vulkan_composite( struct Composite_t *pComposite, struct VulkanPipeline_t * vkCmdBindDescriptorSets(curCommandBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, pipelineLayout, 0, 1, &descriptorSet, 0, 0); uvec4_t tmp; - FsrRcasCon(&tmp.x, 0.2f); + FsrRcasCon(&tmp.x, g_fsrSharpness / 10.0f); rcasConstants.u_layer0Offset.x = uint32_t(int32_t(fsrpComposite.data.vOffset[0].x)); rcasConstants.u_layer0Offset.y = uint32_t(int32_t(fsrpComposite.data.vOffset[0].y)); rcasConstants.u_opacity[0] = fsrpComposite.data.flOpacity[0]; diff --git a/src/sdlwindow.cpp b/src/sdlwindow.cpp index 37dc6ac..505ce05 100644 --- a/src/sdlwindow.cpp +++ b/src/sdlwindow.cpp @@ -155,6 +155,12 @@ void inputSDLThreadRun( void ) case KEY_U: g_fsrUpscale = !g_fsrUpscale; break; + case KEY_I: + g_fsrSharpness = std::min(20, g_fsrSharpness + 1); + break; + case KEY_O: + g_fsrSharpness = std::max(0, g_fsrSharpness - 1); + break; case KEY_S: take_screenshot(); break;