<?xml version="1.0" standalone="yes"?>
<!--

============================================
Application bugs worked around in this file:
============================================

* Unigine Heaven 3.0 and older contain too many bugs and can't be supported
  by drivers that want to be compliant.

* Various Unigine products don't use the #version and #extension GLSL
  directives, meaning they only get GLSL 1.10 and no extensions for their
  shaders.
  Enabling all extensions for Unigine fixes most issues, but the GLSL version
  is still 1.10.

* If ARB_sample_shading is supported, Unigine Heaven 4.0 and Valley 1.0 uses
  an #extension directive in the middle of its shaders, which is illegal
  in GLSL.

* Dying Light and Dead Island Definitive Edition redeclare vertex shader
  built-ins (specifically gl_VertexID), which causes the vertex shaders to fail
  to compile.

* Applications that are not suitable for adapative sync are denylisted 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_versions: A version in range format
             (version 1 to 4 : "1:4") -->

   <!ATTLIST engine       engine_name_match CDATA #REQUIRED
                          engine_versions CDATA #IMPLIED>

   <!ELEMENT option       EMPTY>
   <!ATTLIST option       name CDATA #REQUIRED
                          value CDATA #REQUIRED>
]>

<driconf>
    <!-- Please always enable app-specific workarounds for all drivers and
         screens. -->
    <device>
        <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_extension_directive_midshader" value="true" />
            <!-- remove dual_color_blend_by_location if 4.1 ever comes out -->
            <option name="dual_color_blend_by_location" value="true" />
        </application>

        <application name="Unigine Heaven (64-bit)" executable="heaven_x64">
            <option name="allow_glsl_extension_directive_midshader" value="true" />
            <!-- remove dual_color_blend_by_location if 4.1 ever comes out -->
            <option name="dual_color_blend_by_location" value="true" />
        </application>

        <application name="Unigine Valley (32-bit)" executable="valley_x86">
            <option name="allow_glsl_extension_directive_midshader" value="true" />
            <!-- remove dual_color_blend_by_location if 1.1 ever comes out -->
            <option name="dual_color_blend_by_location" value="true" />
        </application>

        <application name="Unigine Valley (64-bit)" executable="valley_x64">
            <option name="allow_glsl_extension_directive_midshader" value="true" />
            <!-- remove dual_color_blend_by_location if 1.1 ever comes out -->
            <option name="dual_color_blend_by_location" value="true" />
        </application>

        <application name="Unigine OilRush (32-bit)" executable="OilRush_x86">
            <option name="disable_blend_func_extended" value="true" />
            <option name="allow_glsl_extension_directive_midshader" value="true" />
        </application>

        <application name="Unigine OilRush (64-bit)" executable="OilRush_x64">
            <option name="disable_blend_func_extended" value="true" />
            <option name="allow_glsl_extension_directive_midshader" value="true" />
        </application>

        <application name="Savage 2" executable="savage2.bin">
            <option name="disable_glsl_line_continuations" value="true" />
        </application>

        <application name="Topogun (32-bit)" executable="topogun32">
            <option name="always_have_depth_buffer" value="true" />
        </application>

        <application name="Topogun (64-bit)" executable="topogun64">
            <option name="always_have_depth_buffer" value="true" />
        </application>

        <application name="Dead Island (incl. Definitive Edition)" executable="DeadIslandGame">
            <option name="allow_glsl_extension_directive_midshader" value="true" />

            <!-- For the Definitive Edition which shares the same executable name -->
            <option name="allow_glsl_builtin_variable_redeclaration" value="true" />
        </application>

        <application name="Dead Island Riptide Definitive Edition" executable="DeadIslandRiptideGame">
            <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="Full Bore" executable="fullbore">
            <option name="allow_glsl_builtin_variable_redeclaration" value="true" />
        </application>

        <application name="RAGE (64-bit)" executable="Rage64.exe">
            <option name="allow_glsl_builtin_variable_redeclaration" value="true" />
        </application>

        <application name="RAGE (32-bit)" executable="Rage.exe">
            <option name="allow_glsl_builtin_variable_redeclaration" value="true" />
        </application>

        <application name="Second Life" executable="do-not-directly-run-secondlife-bin">
            <option name="allow_glsl_extension_directive_midshader" value="true" />
        </application>

        <application name="Warsow (32-bit)" executable="warsow.i386">
            <option name="allow_glsl_extension_directive_midshader" value="true" />
        </application>

        <application name="Warsow (64-bit)" executable="warsow.x86_64">
            <option name="allow_glsl_extension_directive_midshader" value="true" />
        </application>

        <application name="Rust" executable="rust">
            <option name="glsl_zero_init" 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_glsl_extension_directive_midshader" value="true" />
        </application>

        <application name="Worms W.M.D" executable="Worms W.M.Dx64">
            <option name="allow_higher_compat_version" value="true" />
        </application>

        <application name="Crookz - The Big Heist" executable="Crookz">
            <option name="allow_higher_compat_version" value="true" />
        </application>

        <application name="Tropico 5" executable="Tropico5">
            <option name="allow_higher_compat_version" value="true" />
        </application>

	<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="Spec Ops: The Line (32-bit)" executable="specops.i386">
            <option name="force_glsl_abs_sqrt" value="true" />
        </application>

        <application name="Spec Ops: The Line (64-bit)" executable="specops">
            <option name="force_glsl_abs_sqrt" value="true" />
        </application>

        <application name="Kerbal Space Program (32-bit)" executable="KSP.x86">
            <option name="glsl_zero_init" value="true"/>
        </application>

        <application name="Kerbal Space Program (64-bit)" executable="KSP.x86_64">
            <option name="glsl_zero_init" value="true"/>
        </application>

        <application name="Luna Sky" executable="lunasky">
            <option name="force_glsl_version" value="130"/>
            <option name="glsl_ignore_write_to_readonly_var" value="true"/>
        </application>

        <application name="Rocket League" executable="RocketLeague">
            <option name="glsl_correct_derivatives_after_discard" value="true"/>
        </application>

        <application name="The Witcher 2" executable="witcher2">
            <option name="glsl_correct_derivatives_after_discard" value="true"/>
        </application>

        <application name="Unreal 4 Editor" executable="UE4Editor">
            <option name="allow_glsl_cross_stage_interpolation_mismatch" value="true"/>
        </application>

        <application name="Observer" executable="TheObserver-Linux-Shipping">
            <option name="allow_glsl_cross_stage_interpolation_mismatch" value="true"/>
        </application>

        <application name="Steamroll" executable="Steamroll-Linux-Shipping">
            <option name="allow_glsl_cross_stage_interpolation_mismatch" value="true"/>
        </application>

        <application name="Refunct" executable="Refunct-Linux-Shipping">
            <option name="allow_glsl_cross_stage_interpolation_mismatch" value="true"/>
        </application>

        <application name="We Happy Few" executable="GlimpseGame">
            <option name="allow_glsl_cross_stage_interpolation_mismatch" value="true"/>
        </application>

        <application name="Google Earth VR" executable="Earth.exe">
            <option name="allow_glsl_builtin_const_expression" value="true"/>
            <option name="allow_glsl_relaxed_es" value="true"/>
        </application>

        <application name="Champions of Regnum" executable="game">
            <option name="allow_extra_pp_tokens" 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>

        <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" />
            <option name="force_gl_names_reuse" value="true" />
            <!-- This makes it use GL_NVX_gpu_memory_info to query memory info
                 instead of non-existent GLX_AMD_gpu_association. Yes, it checks
                 the vendor string, not the extension list. -->
            <option name="force_gl_vendor" value="NVIDIA Corporation" />
            <!-- creo-02 doesn't enable GL_EXT_shader_image_load_store in GLSL -->
            <option name="force_glsl_extensions_warn" value="true" />
            <!-- Enable draw merging inside display list for snx-03 -->
            <option name="allow_incorrect_primitive_id" value="true" />
            <option name="allow_draw_out_of_order" value="true" />
            <option name="mesa_glthread" value="true" />
            <option name="mesa_no_error" value="true" />
        </application>

        <!-- Workaround for unsynchronized VBO updates on Dead Cells android
             game.  (Possibly also needed for desktop version?)
         -->
        <application name="Dead-Cells" executable="com.playdigious.deadcells.mobile">
            <option name="ignore_map_unsynchronized" value="true" />
        </application>

        <application name="Teardown" executable="teardown.exe">
            <!-- https://gitlab.freedesktop.org/mesa/mesa/-/issues/3714 -->
            <option name="force_integer_tex_nearest" value="true" />
            <option name="allow_glsl_extension_directive_midshader" value="true" />
        </application>

        <application name="Golf With Your Friends" executable="Golf With Your Friends.x86_64">
            <!-- https://gitlab.freedesktop.org/mesa/mesa/-/issues/4547 -->
            <option name="glsl_correct_derivatives_after_discard" value="true" />
        </application>

        <!-- The GL thread allowlist is below, workarounds are above.
             Keep it that way. -->

        <application name="Alien Isolation" executable="AlienIsolation">
            <option name="mesa_glthread" value="true"/>
        </application>

        <application name="BioShock Infinite" executable="bioshock.i386">
            <option name="mesa_glthread" value="true"/>
        </application>

        <application name="Borderlands 2" executable="Borderlands2">
            <option name="mesa_glthread" value="true"/>
        </application>

        <application name="Civilization 5" executable="Civ5XP">
            <option name="mesa_glthread" value="true"/>
        </application>
        <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>

        <application name="Hitman" executable="HitmanPro">
            <option name="mesa_glthread" value="true"/>
        </application>

        <application name="Renowned Explorers: International Society" executable="abbeycore_steam">
            <option name="mesa_glthread" value="true"/>
        </application>

        <application name="Saints Row 2" executable="saintsrow2.i386">
            <option name="mesa_glthread" value="true"/>
        </application>
        <application name="Saints Row: The Third" executable="SaintsRow3.i386">
            <option name="mesa_glthread" value="true"/>
        </application>
        <application name="Saints Row IV" executable="SaintsRow4.i386">
            <option name="mesa_glthread" value="true"/>
        </application>
        <application name="Saints Row: Gat out of Hell" executable="SaintsRow4GooH.i386">
            <option name="mesa_glthread" value="true"/>
        </application>

        <application name="Sid Meier's: Civilization Beyond Earth" executable="CivBE">
            <option name="mesa_glthread" value="true"/>
        </application>

        <application name="The Witcher 2" executable="witcher2">
            <option name="mesa_glthread" value="true"/>
        </application>

        <application name="American Truck Simulator" executable="amtrucks">
            <option name="mesa_glthread" value="true"/>
        </application>
        <application name="Euro Truck Simulator 2" executable="eurotrucks2">
            <option name="mesa_glthread" value="true"/>
        </application>

        <application name="Overlord" executable="overlord.i386">
            <option name="mesa_glthread" value="true"/>
        </application>
        <application name="Overlord 2" executable="overlord2.i386">
            <option name="mesa_glthread" value="true"/>
        </application>

        <application name="Oil Rush" executable="OilRush_x86">
            <option name="mesa_glthread" value="true"/>
        </application>

        <application name="War Thunder" executable="aces">
            <option name="mesa_glthread" value="true"/>
        </application>
        <application name="War Thunder (Wine)" executable="aces.exe">
            <option name="mesa_glthread" value="true"/>
        </application>

        <application name="Outlast" executable="OLGame.x86_64">
            <option name="mesa_glthread" value="true"/>
        </application>

        <application name="Spec Ops: The Line (32-bit)" executable="specops.i386">
            <option name="mesa_glthread" value="true"/>
        </application>
        <application name="Spec Ops: The Line (64-bit)" executable="specops">
            <option name="mesa_glthread" value="true"/>
        </application>
        <application name="Mount and Blade Warband" executable="mb_warband_linux">
            <option name="mesa_glthread" value="true"/>
        </application>

        <application name="Valheim" executable="valheim.x86_64">
            <option name="mesa_glthread" value="true"/>
        </application>

        <!-- around 18% performance increase in min and avg fps, max fps capped at 60fps. -->
        <application name="Medieval II: Total War" executable="Medieval2">
            <option name="mesa_glthread" value="true"/>
        </application>

        <!-- min fps ~21 ===> ~27 while standing still in game, also higher gpu load. -->
        <application name="Carnivores: Dinosaur Hunter Reborn (wine)" executable="Carnivores-master.exe">
            <option name="mesa_glthread" value="true"/>
        </application>

        <!-- around 30% increase in avg fps -->
        <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" />
            <option name="v3d_nonmsaa_texture_size_limit" value="true" />
        </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" />
            <option name="v3d_nonmsaa_texture_size_limit" value="true" />
        </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>

        <application name="Brink" executable="brink.exe">
            <option name="glx_extension_override" value="-GLX_OML_swap_method" />
            <option name="allow_higher_compat_version" value="true" />
        </application>

        <application name="Enter The Gungeon (32 bits)" executable="EtG.x86">
            <option name="glsl_correct_derivatives_after_discard" value="true" />
        </application>

        <application name="Enter The Gungeon (64 bits)" executable="EtG.x86_64">
            <option name="glsl_correct_derivatives_after_discard" value="true" />
        </application>

        <!-- Workaround for STAR WARS: Knights of the Old Republic relying on
             non-specified OpenGL behavior (expecting texture names to be
             small enough to fit in the static array).
          -->
        <application name="SWKOTOR (wine)" executable="swkotor.exe">
            <option name="force_gl_names_reuse" 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>

        <!-- Metro:Exodus crashes at startup on xwayland without this workaround-->
        <application name="Metro: Exodus" application_name_match="metroexodus">
            <option name="vk_x11_strict_image_count" value="true" />
        </application>
    </device>
    <!-- vmwgfx doesn't like full buffer swaps and can't sync to vertical retraces.-->
    <device driver="vmwgfx">
        <application name="gnome-shell" executable="gnome-shell">
            <option name="glx_extension_override" value="-GLX_EXT_buffer_age -GLX_OML_sync_control -GLX_SGI_video_sync" />
        </application>
        <application name="Compiz" executable="Compiz">
            <option name="glx_extension_override" value="-GLX_EXT_buffer_age -GLX_OML_sync_control" />
        </application>
    </device>
    <device driver="radeonsi">
        <application name="Half Life 2" executable="hl2_linux">
            <option name="mesa_glthread" value="true" />
        </application>
        <application name="Black Mesa" executable="bms_linux">
            <option name="mesa_glthread" value="true" />
        </application>
        <application name="Alien Isolation" executable="AlienIsolation">
            <option name="force_gl_vendor" value="X.Org" />
        </application>
        <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="mesa_glthread" value="true" />
            <option name="radeonsi_zerovram" value="true" />
            <option name="radeonsi_clamp_div_by_zero" 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="Nuclear Throne" executable="runner" sha1="84814e8db125e889f5d9d4195a0ca72a871ea1fd">
            <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" />
            <option name="radeonsi_inline_uniforms" value="true" />
            <option name="radeonsi_shader_culling" value="true" />
        </application>
        <application name="Road Redemption" executable="RoadRedemption.x86_64">
            <option name="radeonsi_clamp_div_by_zero" value="true" />
        </application>
        <application name="Wasteland 2" executable="WL2">
            <option name="radeonsi_clamp_div_by_zero" value="true" />
        </application>
        <application name="Teardown" executable="teardown.exe">
            <!-- https://gitlab.freedesktop.org/mesa/mesa/-/issues/3714 -->
            <option name="radeonsi_clamp_div_by_zero" value="true" />
            <option name="radeonsi_no_infinite_interp" value="true" />
        </application>
        <application name="SpaceEngine" executable="SpaceEngine.exe">
            <option name="force_gl_vendor" value="X.Org" />
        </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">
        <!-- Engine workarounds -->
        <engine engine_name_match="vkd3d">
            <option name="radv_zero_vram" value="true" />
        </engine>

        <engine engine_name_match="Quantic Dream Engine">
            <option name="radv_zero_vram" value="true" />
            <option name="radv_lower_discard_to_demote" value="true" />
            <option name="radv_disable_tc_compat_htile_general" value="true" />
        </engine>

        <!-- Game workarounds -->
        <application name="Shadow Of The Tomb Raider (Native)" application_name_match="ShadowOfTheTomb">
            <option name="radv_report_llvm9_version_string" value="true" />
            <option name="radv_invariant_geom" value="true" />
	</application>

        <application name="Shadow Of The Tomb Raider (DX11/DX12)" application_name_match="SOTTR.exe">
            <option name="radv_invariant_geom" 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" />
            <option name="radv_absolute_depth_bias" value="true" />
        </application>
        <application name="Path of Exile (32-bit, Steam)" executable="PathOfExileSteam.exe">
            <option name="radv_no_dynamic_bounds" value="true" />
            <option name="radv_absolute_depth_bias" value="true" />
        </application>
        <application name="Path of Exile (64-bit)" executable="PathOfExile_x64.exe">
            <option name="radv_no_dynamic_bounds" value="true" />
            <option name="radv_absolute_depth_bias" value="true" />
        </application>
        <application name="Path of Exile (32-bit)" executable="PathOfExile.exe">
            <option name="radv_no_dynamic_bounds" value="true" />
            <option name="radv_absolute_depth_bias" value="true" />
        </application>

        <application name="The Surge 2" application_name_match="Fledge">
            <option name="radv_disable_shrink_image_store" value="true" />
            <option name="radv_zero_vram" value="true" />
        </application>

	<application name="World War Z" application_name_match="WWZ">
            <option name="radv_override_uniform_offset_alignment" value="16" />
        </application>

        <application name="DOOM VFR" application_name_match="DOOM_VFR">
            <option name="radv_no_dynamic_bounds" value="true" />
        </application>

        <application name="DOOM Eternal" application_name_match="DOOMEternal">
            <option name="radv_zero_vram" value="true" />
        </application>

        <application name="No Man's Sky" application_name_match="No Man's Sky">
            <option name="radv_lower_discard_to_demote" value="true" />
        </application>

        <application name="Monster Hunter World" application_name_match="MonsterHunterWorld.exe">
            <option name="radv_invariant_geom" value="true" />
        </application>

        <application name="DOOM (2016)" application_name_match="DOOM$">
            <option name="radv_disable_dcc" value="true" />
        </application>

        <application name="Wolfenstein II" application_name_match="Wolfenstein II The New Colossus">
            <option name="radv_disable_dcc" value="true" />
        </application>

        <application name="RDR2" application_name_match="Red Dead Redemption 2">
            <option name="radv_report_apu_as_dgpu" value="true" />
        </application>
    </device>
</driconf>
