dxvk icon indicating copy to clipboard operation
dxvk copied to clipboard

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

Open Bitwolfies opened this issue 1 year ago • 7 comments

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.

Bitwolfies avatar Nov 04 '22 20:11 Bitwolfies

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.

mbriar avatar Nov 04 '22 21:11 mbriar

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

Blisto91 avatar Nov 04 '22 21:11 Blisto91

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.

Bitwolfies avatar Nov 04 '22 21:11 Bitwolfies

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.

Bitwolfies avatar Nov 04 '22 21:11 Bitwolfies

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

Joshua-Ashton avatar Nov 05 '22 02:11 Joshua-Ashton

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

Bitwolfies avatar Nov 05 '22 03:11 Bitwolfies

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

Blisto91 avatar Nov 06 '22 09:11 Blisto91