main: FSR sharpness setting.

This commit is contained in:
Georg Lehmann 2022-01-26 17:16:29 +01:00 committed by Joshie
parent 96acb9de7e
commit a9dac11f15
4 changed files with 15 additions and 1 deletions

View file

@ -38,6 +38,7 @@ const struct option *gamescope_options = (struct option[]){
{ "output-height", required_argument, nullptr, 'H' }, { "output-height", required_argument, nullptr, 'H' },
{ "nearest-neighbor-filter", no_argument, nullptr, 'n' }, { "nearest-neighbor-filter", no_argument, nullptr, 'n' },
{ "fsr-upscaling", no_argument, nullptr, 'U' }, { "fsr-upscaling", no_argument, nullptr, 'U' },
{ "fsr-sharpness", required_argument, nullptr, 0 },
// nested mode options // nested mode options
{ "nested-unfocused-refresh", required_argument, nullptr, 'o' }, { "nested-unfocused-refresh", required_argument, nullptr, 'o' },
@ -87,6 +88,7 @@ const char usage[] =
" -H, --output-height output height\n" " -H, --output-height output height\n"
" -n, --nearest-neighbor-filter use nearest neighbor filtering\n" " -n, --nearest-neighbor-filter use nearest neighbor filtering\n"
" -U --fsr-upscaling use AMD FidelityFX™ Super Resolution 1.0 for upscaling" " -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" " --cursor path to default cursor image\n"
" -R, --ready-fd notify FD when ready\n" " -R, --ready-fd notify FD when ready\n"
" -T, --stats-path write statistics to path\n" " -T, --stats-path write statistics to path\n"
@ -119,6 +121,8 @@ const char usage[] =
" Super + F toggle fullscreen\n" " Super + F toggle fullscreen\n"
" Super + N toggle nearest neighbour filtering\n" " Super + N toggle nearest neighbour filtering\n"
" Super + U toggle FSR upscaling\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" " Super + S take a screenshot\n"
""; "";
@ -139,6 +143,7 @@ bool g_bIsNested = false;
bool g_bFilterGameWindow = true; bool g_bFilterGameWindow = true;
bool g_fsrUpscale = false; bool g_fsrUpscale = false;
int g_fsrSharpness = 2;
bool g_bBorderlessOutputWindow = false; bool g_bBorderlessOutputWindow = false;
@ -278,6 +283,8 @@ int main(int argc, char **argv)
g_nTouchClickMode = g_nDefaultTouchClickMode; g_nTouchClickMode = g_nDefaultTouchClickMode;
} else if (strcmp(opt_name, "generate-drm-mode") == 0) { } else if (strcmp(opt_name, "generate-drm-mode") == 0) {
g_drmModeGeneration = parse_drm_mode_generation( optarg ); g_drmModeGeneration = parse_drm_mode_generation( optarg );
} else if (strcmp(opt_name, "fsr-sharpness") == 0) {
g_fsrSharpness = atoi( optarg );
} }
break; break;
case '?': case '?':

View file

@ -23,6 +23,7 @@ extern bool g_bFullscreen;
extern bool g_bFilterGameWindow; extern bool g_bFilterGameWindow;
extern bool g_fsrUpscale; extern bool g_fsrUpscale;
extern int g_fsrSharpness;
extern bool g_bBorderlessOutputWindow; extern bool g_bBorderlessOutputWindow;

View file

@ -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); vkCmdBindDescriptorSets(curCommandBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, pipelineLayout, 0, 1, &descriptorSet, 0, 0);
uvec4_t tmp; 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.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_layer0Offset.y = uint32_t(int32_t(fsrpComposite.data.vOffset[0].y));
rcasConstants.u_opacity[0] = fsrpComposite.data.flOpacity[0]; rcasConstants.u_opacity[0] = fsrpComposite.data.flOpacity[0];

View file

@ -155,6 +155,12 @@ void inputSDLThreadRun( void )
case KEY_U: case KEY_U:
g_fsrUpscale = !g_fsrUpscale; g_fsrUpscale = !g_fsrUpscale;
break; 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: case KEY_S:
take_screenshot(); take_screenshot();
break; break;