+<?xml version="1.0" standalone="yes"?>
<!--
============================================
built-ins (specifically gl_VertexID), which causes the vertex shaders to fail
to compile.
+* Applications that are not suitable for adapative sync are blacklisted here.
+
TODO: document the other workarounds.
-->
+<!DOCTYPE driconf [
+ <!ELEMENT driconf (device+)>
+ <!ELEMENT device (application | engine)+>
+ <!ATTLIST device driver CDATA #IMPLIED>
+ <!ELEMENT application (option+)>
+ <!ATTLIST application name CDATA #REQUIRED
+ executable CDATA #IMPLIED
+ sha1 CDATA #IMPLIED
+ application_name_match CDATA #IMPLIED
+ application_versions CDATA #IMPLIED>
+ <!ELEMENT engine (option+)>
+
+ <!-- engine_name_match: A regexp matching the engine name -->
+ <!-- engine_version: A list of version in range format
+ (version 1 to 4 and version 7 to 8 : "1:4,7:8") -->
+
+ <!ATTLIST engine engine_name_match CDATA #REQUIRED
+ engine_versions CDATA #REQUIRED>
+
+ <!ELEMENT option EMPTY>
+ <!ATTLIST option name CDATA #REQUIRED
+ value CDATA #REQUIRED>
+]>
+
<driconf>
<!-- Please always enable app-specific workarounds for all drivers and
screens. -->
<application name="Unigine Sanctuary" executable="Sanctuary">
<option name="force_glsl_extensions_warn" value="true" />
<option name="disable_blend_func_extended" value="true" />
+ <option name="disable_arb_gpu_shader5" value="true" />
</application>
<application name="Unigine Tropics" executable="Tropics">
<option name="force_glsl_extensions_warn" value="true" />
<option name="disable_blend_func_extended" value="true" />
+ <option name="disable_arb_gpu_shader5" value="true" />
</application>
<application name="Unigine Heaven (32-bit)" executable="heaven_x86">
<option name="allow_glsl_builtin_variable_redeclaration" value="true" />
</application>
+ <application name="Doom 3: BFG" executable="Doom3BFG.exe">
+ <option name="allow_glsl_builtin_variable_redeclaration" value="true" />
+ <option name="force_glsl_extensions_warn" value="true" />
+ </application>
+
<application name="Dying Light" executable="DyingLightGame">
<option name="allow_glsl_builtin_variable_redeclaration" value="true" />
</application>
<application name="Divinity: Original Sin Enhanced Edition" executable="EoCApp">
<option name="allow_glsl_extension_directive_midshader" value="true" />
+ <option name="glsl_correct_derivatives_after_discard" value="true" />
+ <option name="force_gl_vendor" value="ATI Technologies, Inc."/>
</application>
<application name="Metro 2033 Redux / Metro Last Night Redux" executable="metro">
<option name="allow_higher_compat_version" value="true" />
</application>
- <application name="The Culling" executable="Victory">
+ <application name="Faster than Light (32-bit)" executable="FTL.x86">
+ <option name="allow_higher_compat_version" value="true" />
+ </application>
+
+ <application name="Faster than Light (64-bit)" executable="FTL.amd64">
+ <option name="allow_higher_compat_version" value="true" />
+ </application>
+
+ <application name="Final Fantasy VIII: Remastered" executable="FFVIII.exe">
+ <option name="allow_higher_compat_version" value="true" />
+ </application>
+
+ <application name="The Culling" executable="Victory">
<option name="force_glsl_version" value="440" />
</application>
<application name="No Mans Sky" executable="NMS.exe">
<option name="force_glsl_extensions_warn" value="true" />
+ <option name="allow_glsl_layout_qualifier_on_function_parameters" value="true" />
+ </application>
+
+ <application name="Wolfenstein The Old Blood" executable="WolfOldBlood_x64.exe">
+ <option name="force_compat_profile" value="true" />
+ </application>
+
+ <application name="ARMA 3" executable="arma3.x86_64">
+ <option name="glsl_correct_derivatives_after_discard" value="true"/>
</application>
- <!-- The GL thread whitelist is below, workarounds are above.
+ <application name="Epic Games Launcher" executable="EpicGamesLauncher.exe">
+ <option name="force_compat_profile" value="true" />
+ </application>
+
+ <application name="GpuTest" executable="GpuTest">
+ <!-- GiMark benchmark from GpuTest does not initialize .w channel of
+ lightDir0 and lightDir1 varyings in the vertex shader while
+ uses it in the fragment shader. -->
+ <option name="glsl_zero_init" value="true"/>
+ </application>
+
+ <application name="Curse of the Dead Gods" executable="Curse of the Dead Gods.exe">
+ <!-- https://gitlab.freedesktop.org/mesa/mesa/-/issues/2598 -->
+ <option name="glsl_zero_init" value="true" />
+ </application>
+
+ <application name="GRID Autosport" executable="GridAutosport">
+ <!-- https://gitlab.freedesktop.org/mesa/mesa/-/issues/1258 -->
+ <option name="force_integer_tex_nearest" value="true" />
+ </application>
+
+ <application name="DIRT: Showdown" executable="dirt.i386">
+ <!-- https://gitlab.freedesktop.org/mesa/mesa/-/issues/1258 -->
+ <option name="force_integer_tex_nearest" value="true" />
+ </application>
+
+ <!-- Workarounds for SPECviewperf relying on invalid / non-conformant
+ OpenGL behavior. Older SPECviewperf versions might also need this.
+ -->
+ <application name="SPECviewperf13" executable="viewperf">
+ <option name="allow_glsl_extension_directive_midshader" value="true" />
+ <option name="allow_glsl_120_subset_in_110" value="true" />
+ </application>
+
+ <!-- The GL thread allowlist is below, workarounds are above.
Keep it that way. -->
<application name="Alien Isolation" executable="AlienIsolation">
<application name="Civilization 6" executable="Civ6">
<option name="mesa_glthread" value="true"/>
</application>
+ <application name="Civilization 6" executable="Civ6Sub">
+ <option name="mesa_glthread" value="true"/>
+ </application>
<application name="Dreamfall Chapters" executable="Dreamfall Chapters">
<option name="mesa_glthread" value="true"/>
<application name="Far Cry 2 (wine)" executable="farcry2.exe">
<option name="mesa_glthread" value="true"/>
</application>
+
+ <application name="Talos Principle" executable="Talos">
+ <option name="mesa_glthread" value="true"/>
+ </application>
+ <application name="Talos Principle (Unrestricted)" executable="Talos_Unrestricted">
+ <option name="mesa_glthread" value="true"/>
+ </application>
+
+ <!-- roughly 30% increase in fps -->
+ <application name="7 Days To Die (64-bit)" executable="7DaysToDie.x86_64">
+ <option name="mesa_glthread" value="true"/>
+ </application>
+ <application name="7 Days To Die (32-bit)" executable="7DaysToDie.x86">
+ <option name="mesa_glthread" value="true"/>
+ </application>
+
+ <!-- Emulator tends to have a high CPU load for GPU emulation, so separating the driver overhead yield an improvement. -->
+ <application name="Dolphin Emulator" executable="dolphin-emu">
+ <option name="mesa_glthread" value="true"/>
+ </application>
+ <application name="Citra - Nintendo 3DS Emulator" executable="citra-qt">
+ <option name="mesa_glthread" value="true"/>
+ </application>
+ <application name="Yuzu - Nintendo Switch Emulator" executable="yuzu">
+ <option name="mesa_glthread" value="true"/>
+ </application>
+ <application name="RPCS3" executable="rpcs3">
+ <option name="mesa_glthread" value="true"/>
+ </application>
+ <application name="PCSX2" executable="PCSX2">
+ <option name="mesa_glthread" value="true"/>
+ </application>
+
+ <application name="From The Depths" executable="From_The_Depths.x86_64">
+ <option name="mesa_glthread" value="true"/>
+ </application>
+
+ <!-- #Minimum fps 136 ==> 144 -->
+ <application name="Plague Inc Evolved (32-bit)" executable="PlagueIncEvolved.x86">
+ <option name="mesa_glthread" value="true" />
+ </application>
+ <application name="Plague Inc Evolved (64-bit)" executable="PlagueIncEvolved.x86_64">
+ <option name="mesa_glthread" value="true" />
+ </application>
+
+ <!-- 10% fps increase -->
+ <application name="Beholder (32-bit)" executable="Beholder.x86">
+ <option name="mesa_glthread" value="true" />
+ </application>
+ <application name="Beholder (64-bit)" executable="Beholder.x86_64">
+ <option name="mesa_glthread" value="true" />
+ </application>
+
+ <!-- X3 games: 15% avg fps increase while flying in space -->
+ <application name="X3 Reunion" executable="X3R_main">
+ <option name="mesa_glthread" value="true" />
+ </application>
+ <application name="X3 Terran Conflict" executable="X3TR_main">
+ <option name="mesa_glthread" value="true" />
+ </application>
+ <application name="X3 Albion Prelude" executable="X3AP_main">
+ <option name="mesa_glthread" value="true" />
+ </application>
+
+ <!-- +30% avg fps -->
+ <application name="Borderlands: The Pre-Sequel" executable="BorderlandsPreSequel">
+ <option name="mesa_glthread" value="true" />
+ </application>
+ <application name="Transport Fever" executable="TransportFever">
+ <option name="mesa_glthread" value="true" />
+ </application>
+
+ <!-- Adaptive sync denylist follows below: -->
+ <application name="gnome-shell" executable="gnome-shell">
+ <option name="adaptive_sync" value="false" />
+ </application>
+ <application name="Desktop — Plasma" executable="plasmashell">
+ <option name="adaptive_sync" value="false" />
+ </application>
+ <application name="budgie-wm" executable="budgie-wm">
+ <option name="adaptive_sync" value="false" />
+ </application>
+ <application name="kwin_x11" executable="kwin_x11">
+ <option name="adaptive_sync" value="false" />
+ </application>
+ <application name="ksmserver-logout-greeter" executable="ksmserver-logout-greeter">
+ <option name="adaptive_sync" value="false" />
+ </application>
+ <application name="ksmserver-switchuser-greeter" executable="ksmserver-switchuser-greeter">
+ <option name="adaptive_sync" value="false" />
+ </application>
+ <application name="kscreenlocker_greet" executable="kscreenlocker_greet">
+ <option name="adaptive_sync" value="false" />
+ </application>
+ <application name="startplasma" executable="startplasma">
+ <option name="adaptive_sync" value="false" />
+ </application>
+ <application name="sddm-greeter" executable="sddm-greeter">
+ <option name="adaptive_sync" value="false" />
+ </application>
+ <application name="krunner" executable="krunner">
+ <option name="adaptive_sync" value="false" />
+ </application>
+ <application name="spectacle" executable="spectacle">
+ <option name="adaptive_sync" value="false" />
+ </application>
+ <application name="marco" executable="marco">
+ <option name="adaptive_sync" value="false" />
+ </application>
+ <application name="compton" executable="compton">
+ <option name="adaptive_sync" value="false" />
+ </application>
+ <application name="picom" executable="picom">
+ <option name="adaptive_sync" value="false" />
+ </application>
+ <application name="xfwm4" executable="xfwm4">
+ <option name="adaptive_sync" value="false" />
+ </application>
+ <application name="Enlightenment" executable="enlightenment">
+ <option name="adaptive_sync" value="false" />
+ </application>
+ <application name="mutter" executable="mutter">
+ <option name="adaptive_sync" value="false" />
+ </application>
+ <application name="muffin" executable="muffin">
+ <option name="adaptive_sync" value="false" />
+ </application>
+ <application name="compiz" executable="compiz">
+ <option name="adaptive_sync" value="false" />
+ </application>
+ <application name="Firefox" executable="firefox">
+ <option name="adaptive_sync" value="false" />
+ </application>
+ <application name="Firefox ESR" executable="firefox-esr">
+ <option name="adaptive_sync" value="false" />
+ </application>
+ <application name="Chromium" executable="chromium">
+ <option name="adaptive_sync" value="false" />
+ </application>
+ <application name="Google Chrome" executable="chrome">
+ <option name="adaptive_sync" value="false" />
+ </application>
+ <application name="Iceweasel" executable="iceweasel">
+ <option name="adaptive_sync" value="false" />
+ </application>
+ <application name="Epiphany" executable="epiphany">
+ <option name="adaptive_sync" value="false" />
+ </application>
+ <application name="Konqueror" executable="konqueror">
+ <option name="adaptive_sync" value="false" />
+ </application>
+ <application name="Falkon" executable="falkon">
+ <option name="adaptive_sync" value="false" />
+ </application>
+ <application name="Seamonkey" executable="seamonkey">
+ <option name="adaptive_sync" value="false" />
+ </application>
+ <application name="Waterfox" executable="waterfox">
+ <option name="adaptive_sync" value="false" />
+ </application>
+ <application name="VLC Media Player" executable="vlc">
+ <option name="adaptive_sync" value="false" />
+ </application>
+ <application name="Totem" executable="totem">
+ <option name="adaptive_sync" value="false" />
+ </application>
+ <application name="Dragon Player" executable="dragon">
+ <option name="adaptive_sync" value="false" />
+ </application>
+ <application name="mpv" executable="mpv">
+ <option name="adaptive_sync" value="false" />
+ </application>
+ <application name="Xorg" executable="Xorg">
+ <option name="v3d_nonmsaa_texture_size_limit" value="true" />
+ </application>
+
+ <application name="gfxbench" executable="testfw_app">
+ <option name="vk_x11_override_min_image_count" value="2" />
+ <option name="vk_wsi_force_bgra8_unorm_first" value="true" />
+ </application>
+
+ <!-- Gallium Nine workarounds: -->
+ <application name="Rayman Legends" executable="Rayman Legends.exe">
+ <option name="dynamic_texture_workaround" value="true" />
+ </application>
+
+ <!-- Vulkan workarounds: -->
+
+ <!-- Works around the game not starting (does not deal with
+ the implementation returning more images than the minimum
+ specified by the application. -->
+ <engine engine_name_match="UnrealEngine4.*" engine_versions="0:23">
+ <option name="vk_x11_strict_image_count" value="true" />
+ </engine>
+
+ <!-- DOOM crashes at startup without this workaround if the adaptative sync mode is enabled. -->
+ <application name="DOOM" executable="DOOMx64vk.exe">
+ <option name="vk_x11_strict_image_count" value="true" />
+ </application>
+
+ <!-- DOOM Doom Eternal happily creates a swapchain with 2 images for
+ IMMEDIATE. This fixes a 10% performance issue with RADV. -->
+ <application name="DOOMEternal" executable="DOOMEternalx64vk.exe">
+ <option name="vk_x11_ensure_min_image_count" value="true" />
+ </application>
</device>
<!-- vmwgfx doesn't like full buffer swaps and can't sync to vertical retraces.-->
<device driver="vmwgfx">
</application>
</device>
<device driver="radeonsi">
- <application name="ARK: Survival Evolved (and unintentionally the UE4 demo template)" executable="ShooterGame">
- <option name="radeonsi_clear_db_cache_before_clear" value="true" />
+ <application name="American Truck Simulator" executable="amtrucks">
+ <option name="radeonsi_zerovram" value="true" />
+ </application>
+ <application name="Counter-Strike Global Offensive" executable="csgo_linux64">
+ <option name="radeonsi_zerovram" value="true" />
</application>
<application name="No Mans Sky" executable="NMS.exe">
<option name="radeonsi_zerovram" value="true" />
</application>
+ <application name="Rocket League" executable="RocketLeague">
+ <option name="radeonsi_zerovram" value="true" />
+ </application>
+ <application name="DiRT Rally" executable="DirtRally">
+ <option name="radeonsi_prim_restart_tri_strips_only" value="true"/>
+ </application>
+ <application name="Gfx Bench" executable="gfxbench_gl">
+ <!-- Helps offscreen tests -->
+ <option name="mesa_glthread" value="true"/>
+ </application>
+ <!-- YoYo game engine workarounds -->
+ <application name="Monolith demo5" executable="runner" sha1="0c40d509a74e357f0280cb1bd882e9cd94b91bdf">
+ <option name="radeonsi_sync_compile" value="true" />
+ <option name="radeonsi_zerovram" value="true" />
+ </application>
+ <application name="Memoranda" executable="runner" sha1="aa13dec6af63c88f308ebb487693896434a4db56">
+ <option name="radeonsi_sync_compile" value="true" />
+ </application>
+ <application name="Undertale" executable="runner" sha1="dfa302e7ec78641d0696dbbc1a06fc29f34ff1ff">
+ <option name="radeonsi_sync_compile" value="true" />
+ </application>
+ <application name="Turmoil" executable="runner" sha1="cbbf757aaab289859f8dae191a7d63afc30643d9">
+ <option name="radeonsi_sync_compile" value="true" />
+ </application>
+ <application name="Peace, Death!" executable="runner" sha1="5b909f3d21799773370adf084f649848f098234e">
+ <option name="radeonsi_sync_compile" value="true" />
+ </application>
+ <!-- https://gitlab.freedesktop.org/mesa/mesa/-/issues/2647 -->
+ <application name="Kerbal Space Program" executable="KSP.x86_64">
+ <option name="radeonsi_no_infinite_interp" value="true" />
+ </application>
+ <!-- https://gitlab.freedesktop.org/mesa/mesa/-/issues/2686 -->
+ <application name="7 Days to Die" executable="7DaysToDie.x86_64">
+ <option name="radeonsi_zerovram" value="true" />
+ </application>
+ <application name="7 Days to Die" executable="7DaysToDie.x86">
+ <option name="radeonsi_zerovram" value="true" />
+ </application>
+ <application name="SPECviewperf13" executable="viewperf">
+ <option name="radeonsi_sync_compile" value="true" />
+ <option name="radeonsi_clamp_div_by_zero" value="true" />
+ </application>
+ <application name="Road Redemption" executable="RoadRedemption.x86_64">
+ <option name="radeonsi_clamp_div_by_zero" value="true" />
+ </application>
+ </device>
+ <device driver="virtio_gpu">
+ <!-- Some Valve games do a final blit to a BRGA_sRGB surface. On a GLES
+ host this format is not supported and the blit will go to BGRA_UNORM
+ resulting in an unintended linearization and the final output being
+ too dark. -->
+ <application name="Half Life 2" executable="hl2_linux">
+ <option name="gles_emulate_bgra" value="true" />
+ <option name="gles_apply_bgra_dest_swizzle" value="true"/>
+ </application>
+ <application name="Portal" executable="hl2_linux">
+ <option name="gles_emulate_bgra" value="true" />
+ <option name="gles_apply_bgra_dest_swizzle" value="true"/>
+ </application>
+ <application name="Portal 2" executable="hl2_linux">
+ <option name="gles_emulate_bgra" value="true" />
+ <option name="gles_apply_bgra_dest_swizzle" value="true"/>
+ </application>
+ <application name="Left 4 Dead 2" executable="hl2_linux">
+ <option name="gles_emulate_bgra" value="true" />
+ <option name="gles_apply_bgra_dest_swizzle" value="true"/>
+ </application>
+ <application name="Dota 2" executable="dota2">
+ <option name="gles_emulate_bgra" value="true" />
+ </application>
+ <!-- The Raven Remastered expects a BGRA_sRGB surface and a BGRA_sRGB
+ surface that is capable to do texture views, since on GLES the BGRA
+ format provided by EXT_texture_BGRA8888 has no sRGB counterpart and
+ is not in the list of suppoerted TextureView formats we need to
+ emulate this -->
+ <application name="The Raven Remastered" executable="Raven">
+ <option name="gles_emulate_bgra" value="true" />
+ </application>
+ </device>
+ <device driver="i965">
+ <application name="Middle Earth: Shadow of Mordor" executable="ShadowOfMordor">
+ <option name="vs_position_always_invariant" value="true" />
+ </application>
+ </device>
+ <device driver="iris">
+ <application name="Middle Earth: Shadow of Mordor" executable="ShadowOfMordor">
+ <option name="vs_position_always_invariant" value="true" />
+ </application>
+ </device>
+ <device driver="radv">
+ <application name="Shadow Of The Tomb Raider" executable="ShadowOfTheTombRaider">
+ <option name="radv_report_llvm9_version_string" value="true" />
+ </application>
+
+ <application name="RAGE 2" executable="RAGE2.exe">
+ <option name="radv_enable_mrt_output_nan_fixup" value="true" />
+ </application>
+
+ <application name="Path of Exile (64-bit, Steam)" executable="PathOfExile_x64Steam.exe">
+ <option name="radv_no_dynamic_bounds" value="true" />
+ </application>
+ <application name="Path of Exile (32-bit, Steam)" executable="PathOfExileSteam.exe">
+ <option name="radv_no_dynamic_bounds" value="true" />
+ </application>
+ <application name="Path of Exile (64-bit)" executable="PathOfExile_x64.exe">
+ <option name="radv_no_dynamic_bounds" value="true" />
+ </application>
+ <application name="Path of Exile (32-bit)" executable="PathOfExile.exe">
+ <option name="radv_no_dynamic_bounds" value="true" />
+ </application>
+
+ <application name="World War Z" application_name_match="WWZ">
+ <option name="radv_override_uniform_offset_alignment" value="16" />
+ </application>
</device>
</driconf>