====== TODOs ======
* https://github.com/Winetricks/winetricks/blob/master/files/verbs/all.txt
===== Vulkan =====
* Might not work for OpenGL apps
winetricks renderer=vulkan
===== Wayland =====
* https://gitlab.winehq.org/wine/wine/-/releases/wine-9.0
* https://forum.winehq.org/viewtopic.php?p=142727#p142727
* https://www.collabora.com/news-and-blog/news-and-events/wine-on-wayland-a-year-in-review-and-a-look-ahead.html
* https://gitlab.winehq.org/wine/wine/-/merge_requests/5177
* 2024/09/26: WoW 3.3.5 and D2 work but with no visible benefits
DISPLAY=
====== Environment Variables ======
* Mesa: https://docs.mesa3d.org/envvars.html
* VKD3D: https://github.com/HansKristian-Work/vkd3d-proton#environment-variables
* NVIDIA: https://download.nvidia.com/XFree86/Linux-x86_64/560.35.03/README/openglenvvariables.html
* ''vblank_mode'' values: https://github.com/intel/external-mesa/blob/master/src/util/xmlpool/t_options.h#L213 ((if this becomes unavailable, it seems to be a source file for a DRI Conf tool))
====== Global ======
* Last updated: 2024/09/26
sudo -e '/etc/profile.d/99-wine-tweaks.sh'
# Large Address Aware
export WINE_LARGE_ADDRESS_AWARE='1'
# Logging
export DXVK_LOG_LEVEL='none'
export WINEDEBUG='-all'
export VKD3D_DEBUG='none'
export VKD3D_SHADER_DEBUG='none'
# End
====== Tweaks ======
* :!: 2024/08/26: Esync or Staging tweaks are suspected to have caused FPS issues and a crash with [[games;linux;wine;titan_quest_anniversary|Titan Quest AE DX11]]
* 2024/09/26: Unused and untested (basically everything below this line)
# Staging
export STAGING_RT_PRIORITY_SERVER='90'
export STAGING_RT_PRIORITY_BASE='90'
export STAGING_SHARED_MEMORY='1'
export STAGING_WRITECOPY='1'
# Large Address Aware
export PROTON_FORCE_LARGE_ADDRESS_AWARE='1'
# Esync and Fsync
export WINEESYNC='1'
export WINEFSYNC='1'
export WINEFSYNC_FUTEX2='1'
# VKD3D
export VKD3D_CONFIG='dxr'
# Proton-GE
export DXVK_ASYNC='1'
====== NVIDIA ======
* :!: Hasn't been researched since 2022
# NVIDIA
export __GL_ALLOW_UNOFFICIAL_PROTOCOL='1'
export __GL_SHADER_DISK_CACHE='1'
export __GL_SHADER_DISK_CACHE_SKIP_CLEANUP='1'
export __GL_IGNORE_GLSL_EXT_REQS='1'
export __NV_SIGNED_LOAD_CHECK='none'
export __GL_THREADED_OPTIMIZATIONS='1'
# NVAPI
export DXVK_ENABLE_NVAPI='1'
export PROTON_ENABLE_NVAPI='1'
===== Other =====
__GL_YIELD='USLEEP'
__GL_SYNC_TO_VBLANK='0'
__GL_LOG_MAX_ANISO='4'
__GL_MaxFramesAllowed='1'
====== Permissions ======
* For Wine to be able to use the ''STAGING_RT_PRIORITY_SERVER'' environment variable
* Allows ''rtprio'' up to ''94'' and ''nice'' up to ''10''
* May also allow Realtime priorities to be used with other applications
* :!: TODO: Apparently you can use a username instead of a group?
* :!: This hasn't been researched since 2019
* 2024/09/26: Unused and untested
===== RT Priority Permissions =====
* :!: This makes the assumption that the current user is also part of a group with the same name ((2023: This is the case for Fedora 39, openSUSE TW, and Ubuntu 23.10))
* Verify groups with the ''groups'' command
* Last tested: 2024/08/25 on [[linux;distros;fedora_workstation_gnome|Fedora 40]]
groups
sudo mkdir -p '/etc/security/limits.d' && echo -e "@CHANGEME - rtprio 94\n@CHANGEME - nice -10" | sudo tee '/etc/security/limits.d/99-realtime.conf' > '/dev/null' && sudo sed -i 's/'CHANGEME'/'$USER'/g' '/etc/security/limits.d/99-realtime.conf' && cat '/etc/security/limits.d/99-realtime.conf'
==== Verify ====
* Default: ''0''
* Ideal: ''94''
ulimit -r
===== Increase Open Files Limit =====
* For Wine to be able to use the ''WINEESYNC'' environment variable optimally
* Last tested: 2024/08/25 on [[linux;distros;fedora_workstation_gnome|Fedora 40]]
sudo mkdir -p '/etc/systemd/system.conf.d' '/etc/systemd/user.conf.d' && echo -e "[Manager]\nDefaultLimitNOFILE=1048576" | sudo tee '/etc/systemd/system.conf.d/nofile.conf' > '/dev/null' && echo -e "[Manager]\nDefaultLimitNOFILE=1048576" | sudo tee '/etc/systemd/user.conf.d/nofile.conf' > '/dev/null' && cat '/etc/systemd/system.conf.d/nofile.conf' '/etc/systemd/user.conf.d/nofile.conf'
==== Verify ====
* Default: ''524288''
* Ideal: ''1048576''
ulimit -Hn
====== DXVK ======
* 2024/09/26: Unused and untested
sudo -e '/etc/profile.d/wine-tweaks.sh'
#export mesa_glthread=true
export MESA_NO_ERROR=1
export DXVK_LOG_LEVEL=none
export DXVK_ASYNC=1
export DXVK_CONFIG_FILE=~/.config/dxvk/dxvk.conf
mkdir -p ~/'.config/dxvk' && nano ~/'.config/dxvk/dxvk.conf'
#dxvk.hud = full
dxvk.enableAsync = true
#d3d9.numBackBuffers = 3
#dxgi.numBackBuffers = 3
#d3d11.samplerAnisotropy = 16
#d3d9.samplerAnisotropy = 16
#dxgi.maxFrameLatency = 1
#d3d9.maxFrameLatency = 1
dxgi.nvapiHack = false