<?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
                          device CDATA #IMPLIED>
   <!ELEMENT application  (option+)>
   <!ATTLIST application  name CDATA #REQUIRED
                          executable CDATA #IMPLIED
                          executable_regexp 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="Akka Arrh" executable="Project-A.exe">
            <option name="allow_glsl_extension_directive_midshader" value="true" />
        </application>

        <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 Heaven (Windows)" executable="heaven.exe">
            <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 Valley (Windows)" executable="valley.exe">
            <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>

        <!-- For issues with the legacy OpenGL version of TF2 -->
        <application name="Team Fortress 2" executable="tf_linux64">
            <option name="disable_uniform_array_resize" 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="Dune: Spice Wars" executable="D4X.exe">
            <option name="disable_uniform_array_resize" value="true" />
        </application>

        <application name="The Chronicles of Riddick: Assault on Dark Athena" executable="DarkAthena.exe">
	        <option name="disable_uniform_array_resize" value="true" />
            <option name="alias_shader_extension" value="GL_ATI_shader_texture_lod:GL_ARB_shader_texture_lod" />
            <option name="allow_vertex_texture_bias" value="true" />
        </application>

        <application name="Cursemark" executable="Cursemark.exe">
            <option name="glsl_zero_init" value="true"/>
        </application>

        <application name="Dying Light" executable="DyingLightGame">
            <option name="allow_glsl_builtin_variable_redeclaration" value="true" />
            <option name="dual_color_blend_by_location" value="true" />
        </application>

        <application name="Exanima" executable="Exanima.exe">
            <option name="glsl_zero_init" 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" />
            <option name="force_gl_map_buffer_synchronized" value="true" />
        </application>

        <application name="RAGE (32-bit)" executable="Rage.exe">
            <option name="allow_glsl_builtin_variable_redeclaration" value="true" />
            <option name="force_gl_map_buffer_synchronized" 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="TombRaider 4-5-6 Remastered" executable="tomb456.exe">
            <option name="force_gl_depth_component_type_int" 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="Lethis - Path Of Progress" executable="Lethis-Path_Of_Progress.exe">
            <option name="force_explicit_uniform_loc_zero" value="fQualityFactor" />
            <option name="force_compat_profile" value="true" />
        </application>

        <application name="SNK HEROINES Tag Team Frenzy" executable="SNKHEROINES.exe">
            <option name="force_compat_shaders" value="true" />
        </application>

        <application name="Metal Slug XX" executable="MSXX_main.exe">
            <option name="force_compat_shaders" 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="Interstellar Rift" executable="IR.exe">
            <option name="force_compat_shaders" value="true" />
            <option name="glx_clear_context_reset_isolation_bit" value="true" />
        </application>

        <application name="Jamestown+" executable="JamestownPlus.exe">
            <option name="force_compat_profile" 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="MDK2 HD" executable="mdk2hd.exe">
            <option name="allow_glsl_embedded_structure_declarations" 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>

        <!-- Pixel Game Maker MV workarounds. Games include: YuuYuu Jiteki no Yuukarin, Elfin Force, Eden Gamma, etc -->
        <application name="Pixel Game Maker MV" executable="player.exe">
            <option name="allow_glsl_120_subset_in_110" value="true" />
        </application>
        <application name="Eden Gamma" executable="EdenGammaGame-0.3.0.2.exe">
            <option name="allow_glsl_120_subset_in_110" 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>

        <application name="DiRT Rally" executable="DirtRally">
            <!-- https://gitlab.freedesktop.org/mesa/mesa/-/issues/5648 -->
            <option name="vs_position_always_invariant" value="true" />
        </application>

        <application name="Foundation" executable="foundation.exe">
            <!-- https://gitlab.freedesktop.org/mesa/mesa/-/issues/12882 -->
            <option name="force_integer_tex_nearest" value="true" />
        </application>

        <application name="Homerun Clash" executable="com.haegin.homerunclash">
            <!-- https://gitlab.freedesktop.org/mesa/mesa/-/issues/7199 -->
            <option name="lower_depth_range_rate" value="0.8" />
        </application>

        <application name="The Spirit and The Mouse" executable="TheSpiritAndTheMouse.exe">
            <!-- https://gitlab.freedesktop.org/mesa/mesa/-/issues/9738 -->
            <option name="lower_depth_range_rate" value="0.8" />
        </application>

        <application name="Penumbra: Overture (Windows)" executable="Penumbra.exe">
            <!-- https://gitlab.freedesktop.org/mesa/mesa/-/issues/8425 -->
            <option name="allow_multisampled_copyteximage" value="true" />
            <option name="vertex_program_default_out" value="true" />
        </application>

        <application name="Penumbra: Overture" executable="penumbra.bin">
            <!-- https://gitlab.freedesktop.org/mesa/mesa/-/issues/8425 -->
            <option name="allow_multisampled_copyteximage" value="true" />
            <option name="vertex_program_default_out" 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="vblank_mode" value="0" />
            <option name="glthread_nop_check_framebuffer_status" value="true" />
            <option name="allow_glsl_extension_directive_midshader" value="true" />
            <option name="allow_glsl_120_subset_in_110" 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" />
            <option name="mesa_no_error" value="true" />
            <!-- Creating 10-bit pbuffers fails in the X server and returns BadAlloc. -->
            <option name="allow_rgb10_configs" value="false" />
            <option name="allow_invalid_glx_destroy_window" value="true" />
            <!-- 16-bit configs cause issues with viewset maya_06. -->
            <option name="allow_rgb16_configs" value="false" />
        </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>

        <application name="Cossacks 3" executable="cossacks.exe">
            <option name="allow_glsl_120_subset_in_110" value="true" />
        </application>

        <application name="Kaiju-A-Gogo" executable="kaiju.exe">
            <option name="allow_glsl_120_subset_in_110" value="true" />
        </application>

        <application name="Captain Lycop: Invasion of the Heters (Wine)" executable="lycop.exe">
            <option name="allow_glsl_120_subset_in_110" value="true" />
        </application>

        <application name="Captain Lycop: Invasion of the Heters" executable="lycop">
            <option name="allow_glsl_120_subset_in_110" value="true" />
        </application>

        <application name="Joe Danger (Wine)" executable="JoeDanger.exe">
            <option name="allow_glsl_120_subset_in_110" value="true" />
        </application>
        <application name="Joe Danger 2 (Wine)" executable="JoeDanger2.exe">
            <option name="allow_glsl_120_subset_in_110" value="true" />
        </application>

        <application name="Investigation Stories : gunsound (Wine)" executable="gunsound.exe">
            <option name="allow_glsl_120_subset_in_110" value="true" />
        </application>

        <application name="BETA CAE Systems - GL detect tool" executable="detect_opengl_tool">
            <option name="mesa_extension_override" value="-GL_MESA_pack_invert -GL_MESA_framebuffer_flip_y -GL_MESA_window_pos" />
        </application>
        <application name="BETA CAE Systems - ANSA" executable="ansa_linux_x86_64">
            <option name="mesa_extension_override" value="-GL_MESA_pack_invert -GL_MESA_framebuffer_flip_y -GL_MESA_window_pos" />
            <option name="do_dce_before_clip_cull_analysis" value="true" />
        </application>
        <application name="BETA CAE Systems - META" executable="meta_post_x86_64">
            <option name="mesa_extension_override" value="-GL_MESA_pack_invert -GL_MESA_framebuffer_flip_y -GL_MESA_window_pos" />
        </application>

        <!-- Workaround for Mari with executable name like Mari4.5v2, Mari4.7v4 -->
        <application name="Mari" executable_regexp="Mari[0-9]+[.][0-9]+v[0-9]+">
            <!-- Need ARB_gpu_shader5 for non-const sampler array index support -->
            <option name="force_glsl_extensions_warn" value="true" />
        </application>

        <application name="Discovery Studio 2020" executable="DiscoveryStudio2020-bin">
            <option name="force_direct_glx_context" value="true" />
        </application>

        <application name="Abaqus" executable="ABQcaeK">
            <option name="keep_native_window_glx_drawable" value="true" />
            <option name="allow_rgb10_configs" value="false" />
        </application>

        <application name="Maya" executable="maya.bin">
            <!-- Needed otherwise the app doesn't try to use OpenCL -->
            <option name="force_gl_vendor" value="ATI Technologies Inc." />
        </application>

        <application name="SD Gundam G Generation Cross Rays" executable="togg.exe">
            <option name="force_compat_shaders" value="true" />
        </application>

        <application name="FINAL FANTASY XI" executable="pol.exe">
            <!-- Causes invisible textures. -->
            <!-- https://gitlab.freedesktop.org/mesa/mesa/-/issues/7562 -->
            <option name="mesa_glthread_app_profile" value="0"/>
        </application>

        <application name="Talos Principle" executable="Talos">
            <option name="vk_wsi_force_swapchain_to_current_extent" value="true"/>
            <option name="vk_x11_ignore_suboptimal" value="true"/>
        </application>
        <application name="Talos Principle (Unrestricted)" executable="Talos_Unrestricted">
            <option name="vk_wsi_force_swapchain_to_current_extent" value="true"/>
            <option name="vk_x11_ignore_suboptimal" value="true"/>
        </application>

        <application name="Talos Principle VR" executable="Talos_VR">
            <option name="vk_wsi_force_swapchain_to_current_extent" value="true"/>
            <option name="vk_x11_ignore_suboptimal" value="true"/>
        </application>
        <application name="Talos Principle VR (Unrestricted)" executable="Talos_Unrestricted_VR">
            <option name="vk_wsi_force_swapchain_to_current_extent" value="true"/>
            <option name="vk_x11_ignore_suboptimal" value="true"/>
        </application>

        <application name="Serious Sam Fusion" executable="Sam2017">
            <option name="vk_wsi_force_swapchain_to_current_extent" value="true"/>
            <option name="vk_x11_ignore_suboptimal" value="true"/>
        </application>
        <application name="Serious Sam Fusion (Unrestricted)" executable="Sam2017_Unrestricted">
            <option name="vk_wsi_force_swapchain_to_current_extent" value="true"/>
            <option name="vk_x11_ignore_suboptimal" value="true"/>
        </application>

        <application name="DeusExMD" executable="DeusExMD">
            <option name="mesa_glthread_app_profile" value="0"/>
        </application>
        <application name="F1 2015" executable="F12015">
            <option name="mesa_glthread_app_profile" value="0"/>
        </application>
        <application name="KWin Wayland" executable="kwin_wayland">
            <!-- This works around a cursor issue with glthread.
                 See: https://gitlab.freedesktop.org/mesa/mesa/-/issues/7351#note_1581105 -->
            <option name="mesa_glthread_app_profile" value="0"/>
        </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="cinnamon" executable="cinnamon">
            <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="Xorg" executable="Xorg">
            <option name="v3d_nonmsaa_texture_size_limit" value="true" />
        </application>

        <application name="gfxbench" executable="testfw_app">
            <option name="mesa_glthread_app_profile" value="0" />
            <option name="vk_x11_override_min_image_count" value="2" />
            <option name="vk_wsi_force_bgra8_unorm_first" value="true" />
        </application>

        <application name="Rainbow Six Siege (Vulkan)" executable="RainbowSix_Vulkan.exe">
            <option name="vk_x11_override_min_image_count" value="2" />
            <option name="vk_x11_strict_image_count" value="true" />
        </application>

        <application name="Rainbow Six Extraction (Wine)" executable="R6-Extraction.exe">
            <option name="vk_x11_override_min_image_count" value="2" />
            <option name="vk_x11_strict_image_count" value="true" />
        </application>

        <!-- Workaround for Hades: Vulkan backend of the game is not starting
             if the implementation returns more than 3 swapchain images. -->
        <application name="Hades" executable="Hades.exe">
            <option name="vk_x11_override_min_image_count" value="3" />
            <option name="vk_x11_strict_image_count" 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>

        <application name="Assault Android Cactus (32-bit)" executable="cactus_demo.x86">
            <option name="vs_position_always_precise" value="true" />
        </application>
        <application name="Assault Android Cactus (64-bit)" executable="cactus_demo.x86_64">
            <option name="vs_position_always_precise" value="true" />
        </application>
        <application name="Assault Android Cactus (32-bit)" executable="cactus.x86">
            <option name="vs_position_always_precise" value="true" />
        </application>
        <application name="Assault Android Cactus (64-bit)" executable="cactus.x86_64">
            <option name="vs_position_always_precise" value="true" />
        </application>

        <application name="Limbo" executable="limbo">
            <!-- issue 7976 -->
            <option name="glsl_zero_init" value="true"/>
        </application>

        <application name="Genshin Impact" executable="com.miHoYo.GenshinImpact">
            <option name="ignore_discard_framebuffer" 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>

        <application name="Path of Exile" executable="PathOfExile_x64Steam.exe">
            <option name="vk_zero_vram" value="true" />
        </application>

        <application name="Path of Exile" executable="PathOfExileSteam.exe">
            <option name="vk_zero_vram" value="true" />
        </application>

        <application name="X4 Foundations" executable="X4">
            <option name="vk_zero_vram" value="true" />
        </application>

        <!-- Wolfenstein: Youngblood crashes at startup on xwayland without this workaround. -->
        <application name="Wolfenstein: Youngblood(x64vk)" executable="Youngblood_x64vk.exe">
            <option name="vk_x11_strict_image_count" value="true" />
        </application>

        <!-- Wolfenstein II: The New Colossus crashes with vsync turned off on xwayland without this workaround. -->
        <application name="Wolfenstein II: The New Colossus" executable="NewColossus_x64vk.exe">
            <option name="vk_x11_strict_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>

        <application name="Forsaken Remastered" executable="ForsakenEx">
            <!-- https://gitlab.freedesktop.org/mesa/mesa/-/issues/5437 -->
            <option name="vk_dont_care_as_load" value="true" />
        </application>

        <application name="Spilled!" executable="Spilled!.exe">
            <!-- Required for Turnip's GMEM mode running under Unity's Vulkan backend. -->
            <option name="vk_dont_care_as_load" value="true" />
        </application>

        <!-- Atlas Fallen Vulkan crashes with vsync turned off on xwayland without this workaround. -->
        <application name="Atlas Fallen" executable="AtlasFallen (VK).exe">
            <option name="vk_x11_strict_image_count" value="true" />
        </application>

        <!-- Disable fp16 support for browsers, since there is too much
             broken WebGL out there that uses the wrong precision.
             Bonus workaround for Firefox bug #1845309. -->
        <application name="Firefox" executable="firefox">
            <option name="no_fp16" value="true" />
        </application>
        <application name="Firefox ESR" executable="firefox-esr">
            <option name="no_fp16" value="true" />
        </application>
        <application name="Chromium" executable="chromium">
            <option name="no_fp16" value="true" />
        </application>
        <application name="Google Chrome" executable="chrome">
            <option name="no_fp16" value="true" />
        </application>
        <application name="Iceweasel" executable="iceweasel">
            <option name="no_fp16" value="true" />
        </application>
        <application name="Epiphany" executable="epiphany">
            <option name="no_fp16" value="true" />
        </application>
        <application name="Konqueror" executable="konqueror">
            <option name="no_fp16" value="true" />
        </application>
        <application name="Falkon" executable="falkon">
            <option name="no_fp16" value="true" />
        </application>
        <application name="Seamonkey" executable="seamonkey">
            <option name="no_fp16" value="true" />
        </application>
        <application name="Waterfox" executable="waterfox">
            <option name="no_fp16" value="true" />
        </application>
        <!-- Game does not consider larger image count in non-vsynced modes. -->
        <application name="Detroit Become Human" application_name_match="DetroitBecomeHuman">
            <option name="vk_x11_strict_image_count" value="true" />
        </application>

        <!-- Application exits with an error if contents do not show up to GDI -->
        <application name="文香白板" executable="WxBoardMain.exe">
            <option name="wgl_require_gdi_compat" 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_OML_sync_control -GLX_SGI_video_sync" />
        </application>
        <application name="cinnamon" executable="cinnamon">
            <option name="glx_extension_override" value="-GLX_OML_sync_control -GLX_SGI_video_sync" />
        </application>
        <application name="Compiz" executable="Compiz">
            <option name="glx_extension_override" value="-GLX_OML_sync_control" />
        </application>
    </device>
    <device driver="radeonsi">
        <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="radeonsi_zerovram" value="true" />
            <option name="radeonsi_clamp_div_by_zero" value="true" />
        </application>
        <application name="Exanima" executable="Exanima.exe">
            <option name="radeonsi_zerovram" value="true"/>
        </application>
        <application name="Nowhere Patrol" executable="NowherePatrol.exe">
            <option name="radeonsi_zerovram" value="true" />
        </application>
        <application name="Rocket League" executable="RocketLeague">
            <option name="radeonsi_zerovram" value="true" />
        </application>

        <!-- This applies to all apps having "runner" as their executable, but that's OK.
            Apps where this workaround is needed:
            - Monolith demo5
            - Memoranda
            - Nuclear Throne
            - Peace, Death!
            - Riptale
            - Turmoil
            - Undertale
        -->
        <!-- YoYo game engine workarounds -->
        <application name="any runner executable" executable="runner">
            <option name="radeonsi_sync_compile" value="true" />
            <option name="radeonsi_zerovram" value="true" />
        </application>
        <application name="Gun Godz" executable="GUNGODZ">
            <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" />
        </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>
        <application name="BETA CAE Systems - GL detect tool" executable="detect_opengl_tool">
            <option name="force_gl_vendor" value="ATI Technologies Inc." />
        </application>
        <application name="BETA CAE Systems - ANSA" executable="ansa_linux_x86_64">
            <option name="force_gl_vendor" value="ATI Technologies Inc." />
        </application>
        <application name="BETA CAE Systems - META" executable="meta_post_x86_64">
            <option name="force_gl_vendor" value="ATI Technologies Inc." />
            <option name="radeonsi_force_use_fma32" value="true" />
        </application>
        <application name="Black Geyser: Couriers of Darkness" executable="BlackGeyser.x86_64">
            <option name="radeonsi_zerovram" value="true" />
        </application>
    </device>
    <device driver="zink">
        <application name="Hyperdimension Neptunia Re;Birth1" executable="NeptuniaReBirth1.exe">
            <!-- glthread uploads need too much vram and exceed 32bit VA limit -->
            <!-- https://gitlab.freedesktop.org/mesa/mesa/-/issues/8333 -->
            <option name="mesa_glthread_app_profile" value="0"/>
        </application>

        <application name="Borderlands 2 (Native, OpenGL, 32bit)" executable="Borderlands2">
            <!-- https://gitlab.freedesktop.org/mesa/mesa/-/issues/9205 -->
            <option name="glsl_correct_derivatives_after_discard" value="true" />
        </application>
        <application name="SPECviewperf13" executable="viewperf">
            <option name="mesa_extension_override" value="+GL_EXT_shader_image_load_store" />
        </application>
        <!-- GL_POINT_SMOOTH is used in Quake II to render particles -->
        <application name="Quake II" executable="quake2-engine">
            <option name="zink_emulate_point_smooth" value="true"/>
        </application>
        <application name="Quake II (yamagi)" executable="yamagi-quake2">
            <option name="zink_emulate_point_smooth" value="true"/>
        </application>
        <application name="Quake II (wine)" executable="quake2.exe">
            <option name="zink_emulate_point_smooth" value="true"/>
        </application>
        <application name="Tomb Raider 2013" executable="TombRaider">
            <option name="zink_shader_object_enable" 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>
        <application name="glmark2" executable="glmark2">
            <option name="limit_trig_input_range" value="true" />
        </application>
        <application name="Counter-Strike: Global Offensive" executable="csgo_linux64">
            <option name="force_gl_vendor" value="X.Org" />
        </application>
        <application name="Insurgency" executable="insurgency_linux">
            <option name="force_gl_vendor" value="X.Org" />
        </application>
        <application name="Amnesia Bunker" executable="AmnesiaTheBunker.exe">
            <option name="intel_disable_threaded_context" value="true" />
        </application>
        <application name="Amnesia Bunker" executable="AmnesiaTheBunker_NoSteam.exe">
            <option name="intel_disable_threaded_context" value="true" />
        </application>
        <application name="SPECviewperf13" executable="viewperf">
            <!-- creo-03 needs this to compile shaders; we don't support some corner cases -->
            <option name="mesa_extension_override" value="+GL_EXT_shader_image_load_store" />
        </application>
    </device>
    <device driver="crocus">
        <application name="glmark2" executable="glmark2">
            <option name="limit_trig_input_range" value="true" />
        </application>
        <application name="Counter-Strike: Global Offensive" executable="csgo_linux64">
            <option name="force_gl_vendor" value="X.Org" />
        </application>
        <application name="Insurgency" executable="insurgency_linux">
            <option name="force_gl_vendor" value="X.Org" />
        </application>
    </device>
    <device driver="anv">
        <application name="Aperture Desk Job" executable="deskjob">
            <option name="anv_assume_full_subgroups" value="32" />
        </application>
        <application name="A Plague Tale : Requiem" executable="APlagueTaleRequiem_x64.exe">
            <option name="intel_storage_cache_policy_wt" value="true" />
        </application>
        <application name="Breaking Limit" executable="GPUScoreVulkan">
            <option name="anv_assume_full_subgroups_with_barrier" value="true" />
        </application>
        <application name="Brawlhalla" executable="BrawlhallaGame.exe">
            <option name="hasvk_report_vk_1_3_version" value="true" />
        </application>
        <application name="Detroit: Become Human" executable="DetroitBecomeHuman.exe">
            <option name="anv_assume_full_subgroups" value="32" />
        </application>
        <application name="DOOMEternal" executable="DOOMEternalx64vk.exe">
            <option name="anv_assume_full_subgroups" value="32" />
            <option name="fp64_workaround_enabled" value="true" />
        </application>
        <application name="Drive Beyond Horizons" executable="DriveBeyondHorizons.exe">
            <option name="force_vk_vendor" value="-1" />
        </application>
        <application name="Farming Simulator 2022" executable="FarmingSimulator2022Game.exe">
            <option name="limit_trig_input_range" value="true" />
        </application>
        <application name="The Last Of Us Part I" executable="tlou-i.exe">
            <option name="anv_large_workgroup_non_coherent_image_workaround" value="true" />
        </application>
        <application name="The Last Of Us Part II Remastered" executable="tlou-ii.exe">
            <option name="anv_large_workgroup_non_coherent_image_workaround" value="true" />
        </application>
        <application name="RESIDENT EVIL 2" executable="re2.exe">
            <option name="anv_assume_full_subgroups_with_shared_memory" value="true" />
        </application>
        <application name="Wolfenstein: Youngblood(x64vk)" executable="Youngblood_x64vk.exe">
            <option name="limit_trig_input_range" value="true" />
        </application>
        <application name="Batman™: Arkham Knight" executable="BatmanAK.exe">
            <option name="anv_sample_mask_out_opengl_behaviour" value="true"/>
        </application>
        <application name="Company of Heroes 3" executable="RelicCoH3.exe">
            <option name="limit_trig_input_range" value="true"/>
        </application>
        <application name="Rise of the Tomb Raider" executable="RiseOfTheTombRaider">
            <option name="limit_trig_input_range" value="true" />
        </application>
        <application name="Rise of the Tomb Raider" executable="ROTTR.exe">
            <option name="limit_trig_input_range" value="true" />
        </application>
        <application name="Sky: Children of the Light" executable="Sky.exe">
          <option name="vk_lower_terminate_to_discard" value="true" />
        </application>
        <application name="Monster Hunter Wilds" executable="MonsterHunterWilds.exe">
            <option name="anv_disable_link_time_optimization" value="true" />
        </application>
        <application name="NieR Replicant ver.1.22474487139" executable="NieR Replicant ver.1.22474487139.exe">
            <option name="limit_trig_input_range" value="true" />
        </application>
        <application name="NieR:Automata" executable="NieRAutomata.exe">
            <option name="limit_trig_input_range" value="true" />
        </application>
        <application name="Valheim" executable="valheim.x86_64">
            <option name="limit_trig_input_range" value="true" />
        </application>
        <application name="Cyberpunk 2077" executable="Cyberpunk2077.exe">
            <!--
            Cyberpunk 2077 uses a watchdog thread to terminate
            the process in case the render thread hasn't responded within 2 minutes.
            This option speeds up shader compilation.
            See: https://gitlab.freedesktop.org/mesa/mesa/-/issues/9241
            -->
            <option name="shader_spilling_rate" value="15" />
        </application>
        <application name="Elden Ring" executable="eldenring.exe">
            <option name="fake_sparse" value="true" />
        </application>
        <application name="Armored Core 6" executable="armoredcore6.exe">
            <option name="fake_sparse" value="true" />
        </application>
        <engine engine_name_match="vkd3d|DXVK">
            <option name="anv_force_filter_addr_rounding" value="true" />
        </engine>
        <!-- Needed to avoid XeSS code paths. -->
        <application name="Marvel's Spider-Man Remastered" executable="Spider-Man.exe">
            <option name="force_vk_vendor" value="-1" />
            <option name="shader_spilling_rate" value="0" />
        </application>
        <application name="Hitman 2" executable="hitman2.exe">
            <!-- Problematic shader: [CS babe8839dd50cb56 "main"] -->
            <option name="anv_slm_robust_vectorization" value="true"/>
        </application>
        <application name="Hitman 3" executable="hitman3.exe">
            <option name="force_vk_vendor" value="-1"/>
        </application>
        <application name="Hogwarts Legacy" executable="HogwartsLegacy.exe">
            <option name="force_vk_vendor" value="-1" />
            <option name="intel_storage_cache_policy_wt" value="true" />
        </application>
        <application name="DEATH STRANDING" executable="ds.exe">
            <option name="force_vk_vendor" value="-1" />
        </application>
        <application name="Diablo IV" executable="Diablo IV.exe">
            <option name="force_vk_vendor" value="-1" />
        </application>
        <application name="Faaast Penguin" executable="FaaastPenguinClient.exe">
            <option name="force_vk_vendor" value="-1" />
        </application>
        <application name="Satisfactory Steam" executable="FactoryGameSteam-Win64-Shipping.exe">
          <option name="force_vk_vendor" value="-1" />
        </application>
        <application name="Satisfactory EGS" executable="FactoryGameEGS-Win64-Shipping.exe">
          <option name="force_vk_vendor" value="-1" />
        </application>
        <application name="Space Engineers 2" executable="SpaceEngineers2.exe">
            <option name="intel_storage_cache_policy_wt" value="true" />
        </application>
       <application name="Dying Light 2" executable="DyingLightGame_x64_rwdi.exe">
            <option name="force_vk_vendor" value="-1" />
        </application>
        <application name="Witcher3" executable="witcher3.exe">
            <option name="force_vk_vendor" value="-1" />
            <option name="anv_write_lookup_maps_unconditionally" value="true" />
        </application>
        <application name="Baldur's Gate 3" executable="bg3.exe">
            <option name="anv_disable_fcv" value="true" />
        </application>
        <application name="Baldur's Gate 3" executable="bg3">
            <option name="anv_brw_disable_subgroup_size_control" value="true" />
        </application>
        <application name="The Finals" executable="Discovery.exe">
            <option name="force_vk_vendor" value="-1" />
        </application>
        <application name="Palworld2" executable="Palworld-Win64-Shipping.exe">
            <option name="force_vk_vendor" value="-1" />
        </application>
        <application name="Red Dead Redemption 2" executable="RDR2.exe">
            <option name="force_vk_vendor" value="-1" />
        </application>
        <application name="Shadow of the Tomb Raider" executable="SOTTR.exe">
            <option name="force_vk_vendor" value="-1" />
        </application>
        <application name="Silent Hill 2" executable="SHProto-Win64-Shipping.exe">
            <option name="force_vk_vendor" value="-1" />
        </application>
        <application name="Marvel Rivals" executable="Marvel-Win64-Shipping.exe">
            <option name="force_vk_vendor" value="-1" />
        </application>
        <application name="Bellwright" executable="BellwrightGame-Win64-Shipping.exe">
            <option name="force_vk_vendor" value="-1" />
        </application>
        <application name="A Game About Digging A Hole" executable="DiggingGame.exe">
            <option name="force_vk_vendor" value="-1" />
        </application>
        <application name="Jusant" executable="ASC-Win64-Shipping.exe">
            <option name="force_vk_vendor" value="-1"/>
        </application>
        <application name="DIRT 5" executable="DIRT5.exe">
            <option name="fp64_workaround_enabled" value="true" />
        </application>
        <application name="X4 Foundations" executable="X4">
            <option name="anv_upper_bound_descriptor_pool_sampler" value="true" />
        </application>
        <application name="Total War: WARHAMMER III" executable="TotalWarhammer3">
            <option name="anv_fake_nonlocal_memory" value="true" />
            <option name="anv_enable_opt_divergent_atomics" value="1" />
        </application>
        <application name="Total War: WARHAMMER III" executable="Warhammer3.exe">
            <option name="anv_enable_opt_divergent_atomics" value="1" />
        </application>
        <application name="The Elder Scrolls IV: Oblivion Remastered" executable="OblivionRemastered-Win.exe">
            <option name="anv_enable_opt_divergent_atomics" value="1" />
        </application>
        <application name="Call of Duty: Black Ops III" executable="BlackOps3.exe">
            <option name="anv_enable_opt_divergent_atomics" value="1" />
        </application>
        <application name="Horizon Forbidden West" executable="HorizonForbiddenWest.exe">
            <!-- Missing barrier between clear/init shader & write
                 shader.
            -->
            <option name="anv_barrier_post_untyped_clear_shader" value="true" />
        </application>
        <!-- Source2 games seem confused by the CCS-only memory type being
             restricted to images, so allow it for buffers. More details on
             the issue:
             https://gitlab.freedesktop.org/mesa/mesa/-/issues/11520 -->
        <engine engine_name_match="Source2">
            <option name="anv_enable_buffer_comp" value="true" />
        </engine>
        <!-- Many DX12 games get a speedup by enabling buffer compression. -->
        <engine engine_name_match="vkd3d">
            <option name="anv_enable_buffer_comp" value="true" />
        </engine>
        <engine engine_name_match="GTK">
            <option name="anv_disable_drm_ccs_modifiers" value="true" />
        </engine>
        <engine engine_name_match="GTK" engine_versions="16777216:16859138">
            <option name="vk_wsi_disable_unordered_submits" value="true" />
        </engine>
        <!--
        Disable 16-bit feature on zink and angle so that GLES mediump doesn't
        lower to our inefficent 16-bit shader support.  No need to do so for
        ANGLE, since it uses RelaxedPrecision decorations, which the intel
        compiler ignores.
        -->
        <engine engine_name_match="mesa zink">
            <option name="no_16bit" value="true" />
        </engine>
        <!-- Disable FCV optimization for Unreal Engine 5.1 workloads. -->
        <engine engine_name_match="UnrealEngine5.1">
            <option name="anv_disable_fcv" value="true" />
            <option name="anv_assume_full_subgroups" value="16" />
        </engine>
        <!-- We trust vkd3d to not disable compression all the time. -->
        <engine engine_name_match="vkd3d">
            <option name="compression_control_enabled" value="true" />
        </engine>
        <engine engine_name_match="ANGLE">
            <option name="custom_border_colors_without_format" value="true" />
        </engine>
        <!-- Only use binding table entries for render targets. -->
        <engine engine_name_match="vkd3d">
            <option name="anv_state_cache_perf_fix" value="true" />
        </engine>
    </device>
    <device driver="dzn">
        <application name="DOOMEternal" executable="DOOMEternalx64vk.exe">
            <option name="dzn_enable_8bit_loads_stores" value="true" />
            <option name="dzn_claim_wide_lines" value="true" />
        </application>
        <application name="No Man's Sky" executable="NMS.exe">
            <option name="dzn_claim_wide_lines" value="true" />
        </application>
        <!-- RDR2 will default to Vulkan despite having a D3D path. Ideally
             dzn would be "just as efficient" as the native path, but in practice
             it's currently broken. Just disable dzn and let the app use native. -->
        <application name="Red Dead Redemption 2" executable="RDR2.exe">
            <option name="dzn_disable" value="true" />
        </application>
        <!-- Similar to RDR2, but selects dzn instead of native drivers. -->
        <application name="Baldur's Gate 3" executable="bg3.exe">
            <option name="dzn_disable" value="true" />
        </application>
    </device>
    <device driver="d3d12">
        <application name="Blender" executable="blender.exe">
            <!-- Blender needs GL4.3, but that requires a D3D feature that not all in-market
                 drivers support. Turns out they're fine with just the parts of this extension
                 that don't need the D3D feature, so we're good to just flip it on. -->
            <option name="mesa_extension_override" value="+GL_ARB_texture_view" />
        </application>
    </device>
    <device driver="nvk">
        <application name="Artifact Classic" executable="dcg">
            <option name="force_vk_vendor" value="-1" />
        </application>
        <application name="Deep Rock Galactic" executable="FSD.exe">
            <!-- Tries to use NvAPI_D3D11_CreateCubinComputeShaderWithName otherwise -->
            <option name="force_vk_vendor" value="-1" />
        </application>
        <application name="Metro Exodus (Linux native)" application_name_match="metroexodus">
            <option name="nvk_app_layer" value="metroexodus" />
        </application>
        <application name="No Man's Sky" executable="NMS.exe">
            <option name="force_vk_vendor" value="-1" />
        </application>
        <application name="X4 Foundations" executable="X4">
            <option name="force_vk_vendor" value="-1" />
        </application>
    </device>
    <device driver="r300">
        <!-- Only one app can use Hyperz at a time. -->
        <application name="X server" executable="X">
            <option name="r300_nohiz" value="true" />
            <option name="r300_nozmask" value="true" />
        </application>
        <application name="X server" executable="Xorg">
            <option name="r300_nohiz" value="true" />
            <option name="r300_nozmask" value="true" />
        </application>
        <application name="Compiz" executable="check_gl_texture_size">
            <option name="r300_nohiz" value="true" />
            <option name="r300_nozmask" value="true" />
        </application>
        <application name="Compiz" executable="Compiz">
            <option name="r300_nohiz" value="true" />
            <option name="r300_nozmask" value="true" />
        </application>
        <application name="GNOME Shell" executable="gnome-session-check-accelerated-helper">
            <option name="r300_nohiz" value="true" />
            <option name="r300_nozmask" value="true" />
        </application>
        <application name="GNOME Shell" executable="gnome-shell">
            <option name="r300_nohiz" value="true" />
            <option name="r300_nozmask" value="true" />
        </application>
        <application name="KWin" executable="kwin_opengl_test">
            <option name="r300_nohiz" value="true" />
            <option name="r300_nozmask" value="true" />
        </application>
        <application name="KWin" executable="kwin">
            <option name="r300_nohiz" value="true" />
            <option name="r300_nozmask" value="true" />
        </application>
        <application name="Unigine Tropics" executable="Tropics">
            <option name="r300_ffmath" value="true" />
        </application>
        <application name="Oilrush" executable="Oilrush_x86">
            <option name="r300_ffmath" value="true" />
        </application>
    </device>
    <device driver="r600">
        <application name="Tomb Raider 2013" executable="TombRaider">
            <option name="mesa_extension_override" value="-GL_ARB_shader_image_load_store" />
        </application>
    </device>

    <device driver="virtio_gpu">
        <application name="Counter-Strike Global Offensive" executable="csgo_linux64">
            <option name="format_l8_srgb_enable_readback" value="true" />
        </application>
    </device>
    <!--
         The android game hall of shame:

         Workarounds for android games that are not aware of open source drivers.
         These can be removed as games have their allowlists updated.
     -->
    <device driver="msm" device="FD618">
        <application name="Call of Duty Mobile" executable="com.activision.callofduty.shooter">
            <option name="force_gl_renderer" value="Adreno (TM) 618"/>
            <option name="force_gl_vendor" value="Qualcomm"/>
        </application>
        <application name="Asphalt 8" executable="com.gameloft.android.ANMP.GloftA8HM">
            <!-- Note: asphalt8's allowlist seems to not have been updated recently
                 enough to be aware of "Adreno (TM) 618", but we seem to otherwise
                 have enough headroom to opt into the higher settings.  (Conversely
                 the allowlist seems to allow G72-MP3 into the higher tier, despite
                 not being able to maintain fps.. possibly it is not properly
                 differentiating between various core MPn configurations.  So I'm
                 going to use that to justify claiming to be a618's *slightly*
                 bigger brother)
             -->
            <option name="force_gl_renderer" value="Adreno (TM) 630"/>
            <option name="force_gl_vendor" value="Qualcomm"/>
        </application>
        <application name="Asphalt 9" executable="com.gameloft.android.ANMP.GloftA9HM">
            <option name="force_gl_renderer" value="Adreno (TM) 618"/>
            <option name="force_gl_vendor" value="Qualcomm"/>
        </application>
        <application name="PUBG Mobile" executable="com.tencent.ig">
            <!-- Note: Maxed out a630 settings still limits max framerate, yet GPU
                 is below 45% utilization (mostly closer to 40%).  If I claim to
                 be a640, that unlocks "Extreme" framerate (and "Ultra HD" graphics).
                 With "Extreme" + "HDR" we are comfortably at 60fps with plenty of
                 headroom.  "Extreme" + "Ultra HD" (max settings for a640) we are
                 starting to approach the limit.  I'll stick with a630 to be
                 conservative, but argueably we could go higher.  (This flagship
                 gaming phone thing is a scam!)
             -->
            <option name="force_gl_renderer" value="Adreno (TM) 630"/>
            <option name="force_gl_vendor" value="Qualcomm"/>
        </application>
    </device>

    <device driver="msm">
        <!--
            ANGLE is catastrophically broken, see:

               https://issues.angleproject.org/u/1/issues/431097618

            This broken codepath is exposed when skia detects vendor
            freedreno (as well as closed mali/img/adreno drivers.. maybe
            the issue will actually get fixed when a new enough skia+
            ANGLE hits the closed drivers on android).

            Workaround the issue by spoofing the vendor string so
            skia doesn't pick the broken ANGLE codepath.  Other
            electron apps will have the same problem, and should be
            listed here as well.
         -->
        <application name="Chromium" executable="chromium">
            <option name="force_gl_vendor" value="angleisbroken"/>
        </application>
        <application name="Chromium" executable="chromium-browser">
            <option name="force_gl_vendor" value="angleisbroken"/>
        </application>
        <application name="Chromium" executable="chrome">
            <option name="force_gl_vendor" value="angleisbroken"/>
        </application>
        <application name="VS Code" executable="code">
            <option name="force_gl_vendor" value="angleisbroken"/>
        </application>
        <application name="element-desktop" executable="element-desktop">
            <option name="force_gl_vendor" value="angleisbroken"/>
        </application>
        <application name="vivaldi-bin" executable="vivaldi-bin">
            <option name="force_gl_vendor" value="angleisbroken"/>
        </application>
        <application name="code" executable="vivaldi-bin">
            <option name="force_gl_vendor" value="angleisbroken"/>
        </application>
        <!--
            Xwayland mixes implicit and explicit sync, depending on the
            client app.  This trips up the heuristic that switches to
            explicit sync once it sees that the "app" is using explicit
            sync, causing flickering for implicit sync clients
         -->
        <application name="Xwayland" executable="Xwayland">
            <option name="disable_explicit_sync_heuristic" value="true"/>
        </application>
    </device>

    <device driver="turnip">
        <!-- Up to DXVK version 2.3.0 -->
        <engine engine_name_match="DXVK" engine_versions="0:8400896">
            <!--
                See: https://github.com/doitsujin/dxvk/issues/3861

                The shader-defined array size is entirely meaningless in D3D.
            -->
            <option name="tu_allow_oob_indirect_ubo_loads" value="true" />
        </engine>
        <engine engine_name_match="DXVK|vkd3d">
            <!--
                DXVK and VKD3D-Proton use customBorderColorWithoutFormat and have most of
                D24S8 images with USAGE_SAMPLED, in such case we disable UBWC for correctness.
                However, games don't use border color for depth-stencil images. So we elect
                to ignore this edge case and force UBWC to be enabled.
            -->
            <option name="tu_disable_d24s8_border_color_workaround" value="true" />
            <!--
                For sampling, Vulkan requires texture coordinates to be truncated, whereas
                D3D requires them to be rounded to nearest even value. The former is used by
                default, the latter is used through this option.
            -->
            <option name="tu_use_tex_coord_round_nearest_even_mode" value="true" />

            <!--
                The hardware algorithm for alpha-to-coverage seems to
                consistently produce bad results compared to other vendors.
                Always enabling emulation would potentially regress performance
                when it is dynamically enabled and off, but both both DXVK and
                vkd3d-proton are known to compile pipelines with
                alpha-to-coverage statically disabled.
            -->
            <option name="tu_emulate_alpha_to_coverage" value="true" />

            <!--
                DX games almost always tend to prefer SYSMEM over GMEM, so we just hardcode
                this for DXVK and VKD3D-Proton.
            -->
            <option name="tu_autotune_algorithm" value="prefer_sysmem" />
        </engine>
	<engine engine_name_match="vkd3d">
	    <option name="tu_enable_softfloat32" value="true" />
	</engine>
        <application name="Sons Of The Forest" executable="SonsOfTheForest.exe">
            <option name="tu_ignore_frag_depth_direction" value="true" />
        </application>
        <application name="Yooka-Laylee" application_name_match="YookaLaylee.x86_64">
            <!--
                A vertex shader performs OOB UBO reads causing vertex corruption.
                Disable UBO to const lowering to force bounds checking which
                fixes the corruption.
            -->
            <option name="tu_allow_oob_indirect_ubo_loads" value="true" />
        </application>
        <application name="Creed: Rise to Glory" executable="Creed-Win64-Shipping.exe">
            <option name="tu_ignore_frag_depth_direction" value="true" />
        </application>
        <application name="Half-Life: Alyx" application_name_match="hlvr">
            <option name="tu_emulate_alpha_to_coverage" value="true" />
        </application>
        <application name='No Man&apos;s Sky' application_name_match='No Man&apos;s Sky'>
            <!-- A lighting CS reducing 8x8 regions with fmin/fmax does a write once per
            subgroup (assuming 64), or collects the results from two subgroups in the
            32 subgroup size case.  Thus, our 128 subgroup size results in vertical banding
            when half the 8x8 regions don't get written.
            -->
            <option name="tu_restrict_subgroup_size_64" value="true" />
        </application>
    </device>

    <device driver="asahi">
        <!-- Override GL renderer for known web browsers since one or more
             web security frameworks apparently block clients with "Apple"
             in the the renderer string if the OS is not one of Apple's.
             Affected web sites include paypal.com, etsy.com and wsj.com.
             Reported as web-compat bug in
             https://github.com/webcompat/web-bugs/issues/189524
        -->
        <application name="Firefox" executable="firefox">
            <option name="force_gl_renderer" value="AGX G13/G14"/>
        </application>
        <application name="Firefox ESR" executable="firefox-esr">
            <option name="force_gl_renderer" value="AGX G13/G14"/>
        </application>
        <application name="Chromium" executable="chromium">
            <option name="force_gl_renderer" value="AGX G13/G14"/>
        </application>
        <application name="Chromium" executable="chromium-browser">
            <option name="force_gl_renderer" value="AGX G13/G14"/>
        </application>
        <application name="Google Chrome" executable="chrome">
            <option name="force_gl_renderer" value="AGX G13/G14"/>
        </application>
        <application name="vivaldi-bin" executable="vivaldi-bin">
            <option name="force_gl_renderer" value="AGX G13/G14"/>
        </application>
        <application name="Iceweasel" executable="iceweasel">
            <option name="force_gl_renderer" value="AGX G13/G14"/>
        </application>
        <application name="Epiphany" executable="epiphany">
            <option name="force_gl_renderer" value="AGX G13/G14"/>
        </application>
        <application name="Konqueror" executable="konqueror">
            <option name="force_gl_renderer" value="AGX G13/G14"/>
        </application>
        <application name="Falkon" executable="falkon">
            <option name="force_gl_renderer" value="AGX G13/G14"/>
        </application>
        <application name="Seamonkey" executable="seamonkey">
            <option name="force_gl_renderer" value="AGX G13/G14"/>
        </application>
        <application name="Waterfox" executable="waterfox">
            <option name="force_gl_renderer" value="AGX G13/G14"/>
        </application>
    </device>
    <device driver="hk">
        <engine engine_name_match="DXVK|vkd3d">
           <!--
              The amount of bug reports we get about Honeykrisp being slow
           outweighs the number of games that need custom border emulation.
           I'm tired.
           -->
           <option name="hk_disable_border_emulation" value="true" />
           <!--
            Needed for FL11_1. While nominally conformant, CTS hits piles
            of timeouts (== flakes & fails & other fun times), especially on
            min-spec M1. Therefore the feature is hidden. I don't expect native
            apps to use this.
            -->
           <option name="hk_enable_vertex_pipeline_stores_atomics" value="true" />
        </engine>

        <engine engine_name_match="vkd3d">
            <!--
               Apple hardware lacks min/max filtering, but this is required for
               FL12_0. Fortunately, this is an obscure feature and we support
               the rest of FL12_0, so we prefer to fake support and fail D3D
               conformance rather than be limited to FL11.
               -->
            <option name="hk_fake_minmax" value="true" />

            <!---
               We need this for FL12_0, but we only implement it for vkd3d
               because it's not the speediest thing.
               -->
            <option name="hk_image_view_min_lod" value="true" />
        </engine>
    </device>
    <device driver="panvk">
        <engine engine_name_match="ANGLE">
            <!--
               ANGLE requires VK_EXT_transform_feedback or vertexPipelineStoresAndAtomics
               to enable OpenGL 3.1 support. As we currently don't support this extension,
               we enable support for vertexPipelineStoresAndAtomics to allow XFB emulation
               on hardware without speculative behaviors around vertices.
               -->
            <option name="pan_enable_vertex_pipeline_stores_atomics" value="true" />
        </engine>
    </device>
    <device driver="panfrost">
        <application name="all-default">
            <option name="allow_rgb16_configs" value="false"/>
        </application>
    </device>
</driconf>
