rebtd7 / FF13Fix

Performance and bug fixes for the PC versions of FF13 and FF13-2
GNU General Public License v3.0
343 stars 24 forks source link

Persistent stuttering with DXVK on RDNA cards and FF13 Fix #42

Open ghost opened 3 years ago

ghost commented 3 years ago

Merged and released a new version. Thanks again @Nucleoprotein!

@vans1belmont I could not reproduce the slowdown in ff13-32.dat, but I only have access to Nvidia cards at the moment. Feel free to open a new issue (as thisPR is merged), but I probably won't be able to help you with this

Originally posted by @rebtd7 in https://github.com/rebtd7/FF13Fix/issues/40#issuecomment-794332091

Thanks for letting me know. I figured out one thing today (no idea if it helps). When that persistent stutter is introduced, one can get rid of it by disabling the minimap.

The steps I took are are as follows:

Opening the menu while the mini-map is off still introduces an FPS cap in the menu however. Crystarium performance still appears abysmal (like in the screenshot I shared previously).

I am clueless as to why this is caused in Windows specifically. DXVK is perfectly stutter-free on Linux with the same hardware configuration.

My hardware configuration (for those who didn't follow the previous conversation):

CPU : Ryzen 3700X GPU: Radeon RX 6800

ghost commented 3 years ago

Dear @Nucleoprotein and @rebtd7, I would like to give you an update on this situation.

I believe the fix is indeed going to help out RDNA users after all. I figured one part of my problem: the stuttering in the field. However, I am still unable to fix the huge performance dip in the menu.

I would like to point out that setting FullScreenRefreshRate to "120" in the configuration did not fix the framepacing, but changing the actual refresh rate of the monitor back to its native value did.

One needs to set DXVK_ASYNC=1 in the environment variables to engage it.

Switching to this branch resulted in much, much better GPU utilization for me. It is even better after disabling the in-game frame limiter (I used IngameFrameRateLimit = -1).

As a result of these changes my card boosted higher and it improved the framerate significantly. However, this did not fix performance tanking in the menu and the crystarium, only in battles.

If one ignores performance issues in the menus, it is now the smoothest it has ever been without crashing!

Nucleoprotein commented 3 years ago

Try this:

PS: PresentationInterval == vsync And i see misbehavior in code there... i need to change this option so -1 will be D3DPRESENT_INTERVAL_IMMEDIATE, 0 not used and 1 or more enabled, because 0 is now set to D3DPRESENT_INTERVAL_DEFAULT which is use default not force off... Here, use PresentationInterval = -1 to force vsync off (D3DPRESENT_INTERVAL_IMMEDIATE)

EDIT: removed old files

Nucleoprotein commented 3 years ago

New file: d3d9.zip @vans1belmont please test

Nucleoprotein commented 3 years ago

i have check that dxvk-async version with those options in dxvk.config: https://github.com/Sporif/dxvk-async/blob/master/dxvk-async.patch#L270 Seems it stutter less at shader compilation