Performance Tweaks

Zeioth edited this page Nov 14, 2018 · 39 revisions

Performance Tweaks

Test for yourself!! Some installers use some of the tweaks. You should always test what works best for your own system.

Changing Windows version

Sometimes games work different if they see a different Wine version set. Change it with "Wine Configuration".

DXVK

DX11 translated into Vulkan, see How to: DXVK.

Wine-PBA for DX with OpenGL

This optimization has no effect with Vulkan games. A big performance gain for any other game is Wine-PBA. Lutris has Wine-PBA enabled Wine included in the "esync" builds. PBA should work out of the box, but it has some 2 variables that can increase / decrease certain heap sizes if you have enough memory for them.

  • __PBA_GEO_HEAP (default: 512)
  • __PBA_CB_HEAP (default: 128 - not needed on DX9) If you have more gpu memory, you could increase them. It can fix some issues in some games, and can make some games faster. On laptops with low VRAM, you might need to lower it.

If you have rendering issues with PBA, you could switch to default staging to see if it works there. And then tweak the PBA env vars to see if you can fix it. Also, if PBA_DISABLE=1 is set, means PBA is disabled, to enable PBA, set it to 0. (From esync-3.16 builds, we reverse this logic, and use PBA_ENABLE=1 to turn it on).

Enable Game Mode

Game Mode set your CPU gobernor to max performance while you are playing, and can improve FPS in some cases. It's automatically enabled for all your games when you have game mode installed on your system. The only thing to have in consideration is that you must install gamemode, and and lib32-gamemode. If you can't install this libraries, make sure your operative system has multiarch (ubuntu) or multilib (arch linux) enabled. You need Lutris 0.4.23 or upper. More information available here.

Frametimes optimization

If your game uses DXVK, you can tweak it to make it run smoother. You only need to set DXVK_HUD=frametimes. The next time you run your game you will see a frametimes graph. Now you can change the settings of your game until:

  • The difference between "MIN frametime" and "MAX frametime" is as small as possible. Ideally, the graph should look almost flat.
  • You get the same amount of FPS as your screen refresh rate + 5 (65FPS). Having more FPS than that has no effect at all.

This optimization solve most stuttering problems in any game. The most important options to tweak inside of the game are "Limit FPS" and "V-Sync".

NVIDIA GPU only optimization

For NVidia users. Environment variables can be set per game in Configure > System Options > Environment variabables. Latest driver for NVidia helps. Right now 396.54.06 (Vulkan Beta). Though latest driver could freeze if you get too much fps, and you have flipping enabled without vsync.

__GL_THREADED_OPTIMIZATION

This optimization has no effect with Vulkan games. Allow the NVidia driver to work multi threaded. This speeds up when the drivers has a lot to do, but when your CPU is filled to the max, it can lower fps. It is standard on when the driver thinks it can improve performance. You can set it to 1 to force it on, or 0 to turn it off.

__GL_SHADER_CACHE

Shaders have to be created on the fly on Linux, this gives stuttering. These shaders are stored in a cache. The NVidia cache has a maximum of 128mb shared across all games if you do not set anything. It is better to use a cache per game. Use __GL_SHADER_DISK_CACHE= 0 or 1 to disable / enable, and __GL_SHADER_DISK_CACHE_PATH=/path/to/location to set the location. This last option automatically enables the previous one.

__GL_SHADER_DISK_CACHE_SKIP_CLEANUP

Unlocks the limit of 128MB shader cache size. The game will use as much cache as it needs. Use __GL_SHADER_DISK_CACHE_SKIP_CLEANUP= 0 or 1 to disable / enable.

AMD GPU only optimization

mesa_glthread

Similar to nvidia, set to "true" or "false", see: Performance impact of Mesa_glthread

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.