Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add FSR option notes, open for rewording. #38

Merged
merged 3 commits into from
Aug 28, 2021
Merged

add FSR option notes, open for rewording. #38

merged 3 commits into from
Aug 28, 2021

Conversation

arrowgent
Copy link

@arrowgent arrowgent commented Aug 4, 2021

so that these changes are not buried in the release notes, we should add this to the list of options.

notes: ValveSoftware/wine#116
quality relativeness: https://gpuopen.com/fidelityfx-superresolution/

if further releases beyond Proton-6.13-GE-1 are including FSR this is a good note to have on the readme
since FSR is new, expect changes going forward.

edit:

re-reading the documentation:

WINE_FULLSCREEN_FSR_STRENGTH controls the amount of sharpening (not to be confused with amd's quality presets, those are about the input resolution), 0 is the maximum sharpness, higher values mean less sharpening. The default is 5. The default is now 2 because that's AMD's rough recommendation.

vs

The default sharpening of 5 is enough without needing modification, but can be changed with WINE_FULLSCREEN_FSR_STRENGTH=# (0-5) if wanted.

changed wording to reflect this correctly

so that these changes are not buried in the release notes, we should add this to the list of options.

notes: ValveSoftware/wine#116
quality relativeness: https://gpuopen.com/fidelityfx-superresolution/


if further releases beyond Proton-6.13-GE-1 are including FSR this is a good note to have on the readme
since FSR is new, expect changes going forward.
@arrowgent
Copy link
Author

arrowgent commented Aug 12, 2021

ive done some testing with proton-ge-6.14-1 which has amd FSR fullscreen hack
https://github.com/GloriousEggroll/proton-ge-custom/releases/tag/6.14-GE-1
resolutions tested: 1280x720, 1477x831, 1506x847, 1706x960, 1920x1080
monitoring using nvidia-smi and nvtop https://i.imgur.com/r3inDwM.png
comparing steam OSD for fps, and taking a screenshot for comparison between each resolution
i dont use mangohud anymore, it often conflicted with my games,
libstrangle is not working with proton-ge-6.14, games refuse to launch. libstrangle works with other proton versions.
vsync is disabled to allow maximum FPS

without question, 1477x831 as reported at https://gpuopen.com/fidelityfx-superresolution/
is about a 98.5:100 quality comparison to 1920x1080
at 1920x1080: gpu usage is 85-95% idling at the same spot (i only have a 1080p monitor, i cant test 1440p or 4k etc)

  • 1280x720 does not appear to work in this case, the game is noticeably blurry. however the fullscreen is upscaled to 1080p.
  • with 1477x831: gpu usage drops from 85-90% to 50-59%, FPS increases from 100-107 to 140-147
  • similarly 1506x847: i can see the sharpening filter, gpu usage 60-65%, fps less than above
  • finally 1706x960: sharpening filter is noticable over 1920x1080, sometimes it looks much cleaner, less blurry, othertimes appears oversharpened. gpu usage 73-78% roughly. fps is less than above.

alternatively in game FPS doesnt go above 77fps in any situation
but the drop in GPU usage makes a difference because at 1080p using 100% gpu i normally get 50-59fps
1477x831 is the biggest difference here, at 100% gpu the FPS doesnt drop below 72fps

intel i7 3940XM & nvidia 1070 mobile 8gb.
game tested: Grim Dawn
the game must report those resolutions in the selections for this to work, if it doesnt report the resolutions it wont work.
visual: https://imgur.com/a/SW8L5hz

other testing: The Long Dark (proton-ge-6.14-1)
this game is not well suited for upscaling techniques, noticable loss in quality in all resolutions: specifically AA
the first person camera also wobbles around constantly, not good for comparison choices.
all game settings are at Ultra

https://imgur.com/a/Sw67f3M

this game is more CPU bound, using 220-250% cpu while running (out of 800% total)
the GPU does benefit by using less SM% at 720p, 831p, 847p, & 960p
no FPS increases occured in any of the above settings, CPU bound with my GPU
going from 960P to 1080p native, a noticable difference in FPS, less CPU% and higher max 100 GPU%
960P = 166-177FPS
1080P = 149-155FPS -- noting the CPU% dropped to average 210-225% while GPU peaked to 95-100%

i will try to think of other games i have for testing... if anyone wants them, im just creating a screenshot/fsr folder and a text file for my observation

@arrowgent
Copy link
Author

arrowgent commented Aug 13, 2021

other tests:

warfork https://imgur.com/a/N2uAQlP

rust https://imgur.com/a/0YBk8P9
rust https://imgur.com/a/upQY3yR
960 x 540, 1129 x 635, 1280 x 720, 1477 x 831, 1506 x 847, 1706 x 960, & 1920 x 1080

i was also able to fshack 640x480 & 720x400 aspect correct with a fullscreen window of 1920x1080, which is cool.
https://i.imgur.com/hcCoGhj.png

either the FSR isnt working correctly, or the game isnt allowing scaling?
i can see the GPU SM% reduction, but my CPU usage% stays the same
no FPS increases or decreases noticable on these.

while the fullscreen upscale hack works and creates a 1080p window for all these resolutions (not always) it doesnt seem to be doing anything else

@dgmvecuador
Copy link

some games dont support this hack because their "fullscreen" is a borderless window with the game rendered inside with the other resolution ...

Also, AMD said that they recommendation is WINE_FULLSCREEN_FSR_STRENGTH of 2 ...

WINE_FULLSCREEN_FSR_STRENGTH controls the amount of sharpening (not to be confused with amd's quality presets, those are about the input resolution), 0 is the maximum sharpness, higher values mean less sharpening. The default is 5. The default is now 2 because that's AMD's rough recommendation.
@arrowgent
Copy link
Author

yes i just re-read that. and changed my README.md to reflect
if Default is 5 in proton-ge then its not doing as much work?
i will test again using WINE_FULLSCREEN_FSR_STRENGTH=2 to see if that has any effect

0 is the maximum sharpness, higher values mean less sharpening.
@GloriousEggroll
Copy link
Owner

some games dont support this hack because their "fullscreen" is a borderless window with the game rendered inside with the other resolution ...

Also, AMD said that they recommendation is WINE_FULLSCREEN_FSR_STRENGTH of 2 ...

Do you have a source for this? If so I can just change the default in the patch. I'd just like to validate the information before making the change for everyone.

@arrowgent
Copy link
Author

arrowgent commented Aug 16, 2021

thats a difficult one to track down

noted that the PR ValveSoftware/wine#116 states this:
WINE_FULLSCREEN_FSR_STRENGTH controls the amount of sharpening (not to be confused with amd's quality presets, those are about the input resolution), 0 is the maximum sharpness, higher values mean less sharpening. The default is 5. The default is now 2 because that's AMD's rough recommendation.
this might be @DadSchoorse reimplementation for interpretation of RCAS to WINE_FULLSCREEN_FSR_STRENGTH

RCAS sharpening is the only clear document i can find
https://github.com/GPUOpen-Effects/FidelityFX-FSR/blob/a3b53ee03ce1b23280a6d1dd7dacbb0a3f6ed9c1/ffx-fsr/ffx_fsr1.h#L602

noted here by amd's document on page 25
https://github.com/GPUOpen-Effects/FidelityFX-FSR/blob/master/docs/FidelityFX-FSR-Overview-Integration.pdf

supported in your included fshack patch adding FSR
caa92bb

im not even going to pretend to understand sharpening filters like Lanczos, bicubic, etc.
https://wccftech.com/amd-fsr-based-on-modified-lanczos-upscaler-enabled-on-nvidia-gpus-using-control-panel-in-all-games/

/* 2nd pass (rcas) */

    c.fp[0] = exp2f(-swapchain->sharpness);

set by

    int sharpness_int = 2;
    if (is_fsr && sharpness)
    {
        const char *e = getenv("WINE_FULLSCREEN_FSR_STRENGTH");
        if (e)
            sharpness_int = atoi(e);
        *sharpness = (float) sharpness_int / 10.0f;
        TRACE("sharpness: %2.4f\n", *sharpness);
    }

your patch is older
int sharpness_int = 5;
but this should get overwritten as default if WINE_FULLSCREEN_FSR_STRENGTH=2

@dgmvecuador
Copy link

thats a difficult one to track down

noted that the PR ValveSoftware/wine#116 states this:
WINE_FULLSCREEN_FSR_STRENGTH controls the amount of sharpening (not to be confused with amd's quality presets, those are about the input resolution), 0 is the maximum sharpness, higher values mean less sharpening. The default is 5. The default is now 2 because that's AMD's rough recommendation.
this might be @DadSchoorse reimplementation for interpretation of RCAS to WINE_FULLSCREEN_FSR_STRENGTH

RCAS sharpening is the only clear document i can find
https://github.com/GPUOpen-Effects/FidelityFX-FSR/blob/a3b53ee03ce1b23280a6d1dd7dacbb0a3f6ed9c1/ffx-fsr/ffx_fsr1.h#L602

noted here by amd's document on page 25
https://github.com/GPUOpen-Effects/FidelityFX-FSR/blob/master/docs/FidelityFX-FSR-Overview-Integration.pdf

supported in your included fshack patch adding FSR
caa92bb

im not even going to pretend to understand sharpening filters like Lanczos, bicubic, etc.
https://wccftech.com/amd-fsr-based-on-modified-lanczos-upscaler-enabled-on-nvidia-gpus-using-control-panel-in-all-games/

/* 2nd pass (rcas) */

    c.fp[0] = exp2f(-swapchain->sharpness);

set by

    int sharpness_int = 2;
    if (is_fsr && sharpness)
    {
        const char *e = getenv("WINE_FULLSCREEN_FSR_STRENGTH");
        if (e)
            sharpness_int = atoi(e);
        *sharpness = (float) sharpness_int / 10.0f;
        TRACE("sharpness: %2.4f\n", *sharpness);
    }

your patch is older
int sharpness_int = 5;
but this should get overwritten as default if WINE_FULLSCREEN_FSR_STRENGTH=2

Yes, this is why, Im sorry for not answered before

@GloriousEggroll GloriousEggroll merged commit 302fa60 into GloriousEggroll:master Aug 28, 2021
@arrowgent
Copy link
Author

great. i could have added a commit for
int sharpness_int = 2;

but i was waiting for response

hope DadSchoorse gets more testing and workflow fixes for wine

good deal.
thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
3 participants