protonscr

Add dxgi.syncInterval = 0 to Crash Bandicoot N sane trilogy.

dxvkclosed
doitsujin/dxvk#3028 · opened 2022-11-04 by Bitwolfies · updated 2023-04-05 · 8 comments · github
BBitwolfies 2022-11-04 github

Yeah, disabling Vsync outright is a bit extreme, but in this case I feel its necessary due to how the game abuses it.

In borderless and windowed mode, Vsync is enforced regardless of player settings, and is also used to cap the framerate using vsync, the issue here is that, A. The game can run with unlimited fps, but the maximum presented option is 60. and B. If you have a monitor with a refresh rate higher than 60, the game does some awkward math on higher refresh rate monitors, and for instance, if you have a 144hz monitor, only presents options of 24 and 48 for your fps, flat out denying the 60fps option.

In exclusive full screen, its a little different, the game still does use a forced Vsync, but instead uses it to cap the game to 144hz, it then sets your monitors refresh rate to 60 to achieve the same effect as its other window modes. Though changing the monitor refresh rate appears to fail over proton.

Attaching this value to dxvk.conf fixes all of this, allowing unlimited refresh rate in all window modes, at the cost of screen tearing if you lack a VRR implementation.

Overall, I think it would be worth it in this one case to add the config to DXVK by default.

Mmbriar 2022-11-04 github

In exclusive full screen, its a little different, the game still does use a forced Vsync, but instead uses it to cap the game to 144hz, it then sets your monitors refresh rate to 60 to achieve the same effect as its other window modes.

Sounds to me like that's not such a bad outcome, especially since setting the refresh rate on proton does nothing. Breaking vsync by default and introducing tearing seems worse.

BBlisto91 2022-11-04 github

The game can run with unlimited fps, but the maximum presented option is 60. and B. If you have a monitor with a refresh rate higher than 60, the game does some awkward math on higher refresh rate monitors, and for instance, if you have a 144hz monitor, only presents options of 24 and 48 for your fps, flat out denying the 60fps option.

Is this also an issue on Windows without dxvk or with wined3d on Linux?

Edit: mkay i see some long explanation here https://www.pcgamingwiki.com/wiki/Crash_Bandicoot_N._Sane_Trilogy#High_frame_rate

BBitwolfies 2022-11-04 github

The game can run with unlimited fps, but the maximum presented option is 60. and B. If you have a monitor with a refresh rate higher than 60, the game does some awkward math on higher refresh rate monitors, and for instance, if you have a 144hz monitor, only presents options of 24 and 48 for your fps, flat out denying the 60fps option.

Is this also an issue on Windows without dxvk or with wined3d on Linux?

Edit: mkay i see some long explanation here https://www.pcgamingwiki.com/wiki/Crash_Bandicoot_N._Sane_Trilogy#High_frame_rate

It is yes, but since I often see DXVK auto capping games that break above certain frame rates and lack a proper framelimiter on windows, this didn't seem out of the realm for DXVK changing a games behavior by default.

BBitwolfies 2022-11-04 github

In exclusive full screen, its a little different, the game still does use a forced Vsync, but instead uses it to cap the game to 144hz, it then sets your monitors refresh rate to 60 to achieve the same effect as its other window modes.

Sounds to me like that's not such a bad outcome, especially since setting the refresh rate on proton does nothing. Breaking vsync by default and introducing tearing seems worse.

I would disagree slightly, the upsides are now the game runs at an unlimited refresh rate, which it was unable to do before, and in any windowed mode.

Yeah, breaking Vsync by default sucks, but I feel since there are so many ways of forcing Vsync externally (Mangohud, DXVK, SpecialK, Graphics card control panels.) that anyone who really desires it has a few simple methods to get it back.

It also wasn't the worlds greatest implementation of Vsync as seen by the weird math it does at monitors with refresh rates that don't evenly divide into 30.

In my eyes "Oh, Vsync isn't on, guess ill force it" is a much better default than "Oh, I cant get the game to run anything higher than 48 fps in borderless and I can't disable Vsync in Fullscreen, and pcgamingwiki's only listed fix is SpeicalK, something that doesn't quite work right over proton."

Course, I'd love to hear everyone perspectives on the issue.

Mmisyltoad 2022-11-05 github

Probably makes sense to add =1 to force it to be 144 instead of only 48 (2)/24 (3).

BBitwolfies 2022-11-05 github

I guess, though that will prevent the unlimited framerate which is unfortunate.

BBlisto91 2022-11-06 github

fwiw i am not a fan of just disabling Vsync either.

KK0bin maintainer 2023-02-18 github

I'm with Josh on this one. I prefer force enabling vsync with an interval of 1 over force disabling it.

The problem is that this is a personal preference, so I'm not sure if we should do anything at all here. I also haven't played PC games on a 60hz screen for years (aside from the Steam Deck) so I really don't know what the latency of vsync on a 60hz screen is like. It's a non-issue for me at 120+ Hz.

Nothing extracted yet.