Home | History | Annotate | Line # | Download | only in util
      1 <?xml version="1.0" standalone="yes"?>
      2 <!--
      3 
      4 ============================================
      5 Application bugs worked around in this file:
      6 ============================================
      7 
      8 * Unigine Heaven 3.0 and older contain too many bugs and can't be supported
      9   by drivers that want to be compliant.
     10 
     11 * Various Unigine products don't use the #version and #extension GLSL
     12   directives, meaning they only get GLSL 1.10 and no extensions for their
     13   shaders.
     14   Enabling all extensions for Unigine fixes most issues, but the GLSL version
     15   is still 1.10.
     16 
     17 * If ARB_sample_shading is supported, Unigine Heaven 4.0 and Valley 1.0 uses
     18   an #extension directive in the middle of its shaders, which is illegal
     19   in GLSL.
     20 
     21 * Dying Light and Dead Island Definitive Edition redeclare vertex shader
     22   built-ins (specifically gl_VertexID), which causes the vertex shaders to fail
     23   to compile.
     24 
     25 * Applications that are not suitable for adapative sync are denylisted here.
     26 
     27 TODO: document the other workarounds.
     28 
     29 -->
     30 
     31 <!DOCTYPE driconf [
     32    <!ELEMENT driconf      (device+)>
     33    <!ELEMENT device       (application | engine)+>
     34    <!ATTLIST device       driver CDATA #IMPLIED
     35                           device CDATA #IMPLIED>
     36    <!ELEMENT application  (option+)>
     37    <!ATTLIST application  name CDATA #REQUIRED
     38                           executable CDATA #IMPLIED
     39                           sha1 CDATA #IMPLIED
     40                           application_name_match CDATA #IMPLIED
     41                           application_versions CDATA #IMPLIED>
     42    <!ELEMENT engine       (option+)>
     43 
     44    <!-- engine_name_match: A regexp matching the engine name -->
     45    <!-- engine_versions: A version in range format
     46              (version 1 to 4 : "1:4") -->
     47 
     48    <!ATTLIST engine       engine_name_match CDATA #REQUIRED
     49                           engine_versions CDATA #IMPLIED>
     50 
     51    <!ELEMENT option       EMPTY>
     52    <!ATTLIST option       name CDATA #REQUIRED
     53                           value CDATA #REQUIRED>
     54 ]>
     55 
     56 <driconf>
     57     <!-- Please always enable app-specific workarounds for all drivers and
     58          screens. -->
     59     <device>
     60         <application name="Unigine Sanctuary" executable="Sanctuary">
     61             <option name="force_glsl_extensions_warn" value="true" />
     62             <option name="disable_blend_func_extended" value="true" />
     63             <option name="disable_arb_gpu_shader5" value="true" />
     64         </application>
     65 
     66         <application name="Unigine Tropics" executable="Tropics">
     67             <option name="force_glsl_extensions_warn" value="true" />
     68             <option name="disable_blend_func_extended" value="true" />
     69             <option name="disable_arb_gpu_shader5" value="true" />
     70         </application>
     71 
     72         <application name="Unigine Heaven (32-bit)" executable="heaven_x86">
     73             <option name="allow_glsl_extension_directive_midshader" value="true" />
     74             <!-- remove dual_color_blend_by_location if 4.1 ever comes out -->
     75             <option name="dual_color_blend_by_location" value="true" />
     76         </application>
     77 
     78         <application name="Unigine Heaven (64-bit)" executable="heaven_x64">
     79             <option name="allow_glsl_extension_directive_midshader" value="true" />
     80             <!-- remove dual_color_blend_by_location if 4.1 ever comes out -->
     81             <option name="dual_color_blend_by_location" value="true" />
     82         </application>
     83 
     84         <application name="Unigine Valley (32-bit)" executable="valley_x86">
     85             <option name="allow_glsl_extension_directive_midshader" value="true" />
     86             <!-- remove dual_color_blend_by_location if 1.1 ever comes out -->
     87             <option name="dual_color_blend_by_location" value="true" />
     88         </application>
     89 
     90         <application name="Unigine Valley (64-bit)" executable="valley_x64">
     91             <option name="allow_glsl_extension_directive_midshader" value="true" />
     92             <!-- remove dual_color_blend_by_location if 1.1 ever comes out -->
     93             <option name="dual_color_blend_by_location" value="true" />
     94         </application>
     95 
     96         <application name="Unigine OilRush (32-bit)" executable="OilRush_x86">
     97             <option name="disable_blend_func_extended" value="true" />
     98             <option name="allow_glsl_extension_directive_midshader" value="true" />
     99         </application>
    100 
    101         <application name="Unigine OilRush (64-bit)" executable="OilRush_x64">
    102             <option name="disable_blend_func_extended" value="true" />
    103             <option name="allow_glsl_extension_directive_midshader" value="true" />
    104         </application>
    105 
    106         <application name="Savage 2" executable="savage2.bin">
    107             <option name="disable_glsl_line_continuations" value="true" />
    108         </application>
    109 
    110         <application name="Topogun (32-bit)" executable="topogun32">
    111             <option name="always_have_depth_buffer" value="true" />
    112         </application>
    113 
    114         <application name="Topogun (64-bit)" executable="topogun64">
    115             <option name="always_have_depth_buffer" value="true" />
    116         </application>
    117 
    118         <application name="Dead Island (incl. Definitive Edition)" executable="DeadIslandGame">
    119             <option name="allow_glsl_extension_directive_midshader" value="true" />
    120 
    121             <!-- For the Definitive Edition which shares the same executable name -->
    122             <option name="allow_glsl_builtin_variable_redeclaration" value="true" />
    123         </application>
    124 
    125         <application name="Dead Island Riptide Definitive Edition" executable="DeadIslandRiptideGame">
    126             <option name="allow_glsl_builtin_variable_redeclaration" value="true" />
    127         </application>
    128 
    129         <application name="Doom 3: BFG" executable="Doom3BFG.exe">
    130             <option name="allow_glsl_builtin_variable_redeclaration" value="true" />
    131             <option name="force_glsl_extensions_warn" value="true" />
    132         </application>
    133 
    134         <application name="Dying Light" executable="DyingLightGame">
    135             <option name="allow_glsl_builtin_variable_redeclaration" value="true" />
    136         </application>
    137 
    138         <application name="Full Bore" executable="fullbore">
    139             <option name="allow_glsl_builtin_variable_redeclaration" value="true" />
    140         </application>
    141 
    142         <application name="RAGE (64-bit)" executable="Rage64.exe">
    143             <option name="allow_glsl_builtin_variable_redeclaration" value="true" />
    144         </application>
    145 
    146         <application name="RAGE (32-bit)" executable="Rage.exe">
    147             <option name="allow_glsl_builtin_variable_redeclaration" value="true" />
    148         </application>
    149 
    150         <application name="Second Life" executable="do-not-directly-run-secondlife-bin">
    151             <option name="allow_glsl_extension_directive_midshader" value="true" />
    152         </application>
    153 
    154         <application name="Warsow (32-bit)" executable="warsow.i386">
    155             <option name="allow_glsl_extension_directive_midshader" value="true" />
    156         </application>
    157 
    158         <application name="Warsow (64-bit)" executable="warsow.x86_64">
    159             <option name="allow_glsl_extension_directive_midshader" value="true" />
    160         </application>
    161 
    162         <application name="Rust" executable="rust">
    163             <option name="glsl_zero_init" value="true"/>
    164         </application>
    165 
    166         <application name="Divinity: Original Sin Enhanced Edition" executable="EoCApp">
    167             <option name="allow_glsl_extension_directive_midshader" value="true" />
    168             <option name="glsl_correct_derivatives_after_discard" value="true" />
    169             <option name="force_gl_vendor" value="ATI Technologies, Inc."/>
    170         </application>
    171 
    172         <application name="Metro 2033 Redux / Metro Last Night Redux" executable="metro">
    173             <option name="allow_glsl_extension_directive_midshader" value="true" />
    174         </application>
    175 
    176         <application name="Worms W.M.D" executable="Worms W.M.Dx64">
    177             <option name="allow_higher_compat_version" value="true" />
    178         </application>
    179 
    180         <application name="Crookz - The Big Heist" executable="Crookz">
    181             <option name="allow_higher_compat_version" value="true" />
    182         </application>
    183 
    184         <application name="Tropico 5" executable="Tropico5">
    185             <option name="allow_higher_compat_version" value="true" />
    186         </application>
    187 
    188         <application name="Faster than Light (32-bit)" executable="FTL.x86">
    189             <option name="allow_higher_compat_version" value="true" />
    190         </application>
    191 
    192         <application name="Faster than Light (64-bit)" executable="FTL.amd64">
    193             <option name="allow_higher_compat_version" value="true" />
    194         </application>
    195 
    196         <application name="Final Fantasy VIII: Remastered" executable="FFVIII.exe">
    197             <option name="allow_higher_compat_version" value="true" />
    198         </application>
    199 
    200         <application name="The Culling" executable="Victory">
    201             <option name="force_glsl_version" value="440" />
    202         </application>
    203 
    204         <application name="Spec Ops: The Line (32-bit)" executable="specops.i386">
    205             <option name="force_glsl_abs_sqrt" value="true" />
    206         </application>
    207 
    208         <application name="Spec Ops: The Line (64-bit)" executable="specops">
    209             <option name="force_glsl_abs_sqrt" value="true" />
    210         </application>
    211 
    212         <application name="Kerbal Space Program (32-bit)" executable="KSP.x86">
    213             <option name="glsl_zero_init" value="true"/>
    214         </application>
    215 
    216         <application name="Kerbal Space Program (64-bit)" executable="KSP.x86_64">
    217             <option name="glsl_zero_init" value="true"/>
    218         </application>
    219 
    220         <application name="Luna Sky" executable="lunasky">
    221             <option name="force_glsl_version" value="130"/>
    222             <option name="glsl_ignore_write_to_readonly_var" value="true"/>
    223         </application>
    224 
    225         <application name="Rocket League" executable="RocketLeague">
    226             <option name="glsl_correct_derivatives_after_discard" value="true"/>
    227         </application>
    228 
    229         <application name="The Witcher 2" executable="witcher2">
    230             <option name="glsl_correct_derivatives_after_discard" value="true"/>
    231         </application>
    232 
    233         <application name="Unreal 4 Editor" executable="UE4Editor">
    234             <option name="allow_glsl_cross_stage_interpolation_mismatch" value="true"/>
    235         </application>
    236 
    237         <application name="Observer" executable="TheObserver-Linux-Shipping">
    238             <option name="allow_glsl_cross_stage_interpolation_mismatch" value="true"/>
    239         </application>
    240 
    241         <application name="Steamroll" executable="Steamroll-Linux-Shipping">
    242             <option name="allow_glsl_cross_stage_interpolation_mismatch" value="true"/>
    243         </application>
    244 
    245         <application name="Refunct" executable="Refunct-Linux-Shipping">
    246             <option name="allow_glsl_cross_stage_interpolation_mismatch" value="true"/>
    247         </application>
    248 
    249         <application name="We Happy Few" executable="GlimpseGame">
    250             <option name="allow_glsl_cross_stage_interpolation_mismatch" value="true"/>
    251         </application>
    252 
    253         <application name="Google Earth VR" executable="Earth.exe">
    254             <option name="allow_glsl_builtin_const_expression" value="true"/>
    255             <option name="allow_glsl_relaxed_es" value="true"/>
    256         </application>
    257 
    258         <application name="Champions of Regnum" executable="game">
    259             <option name="allow_extra_pp_tokens" value="true" />
    260         </application>
    261 
    262         <application name="Wolfenstein The Old Blood" executable="WolfOldBlood_x64.exe">
    263             <option name="force_compat_profile" value="true" />
    264         </application>
    265 
    266         <application name="ARMA 3" executable="arma3.x86_64">
    267             <option name="glsl_correct_derivatives_after_discard" value="true"/>
    268         </application>
    269 
    270         <application name="Epic Games Launcher" executable="EpicGamesLauncher.exe">
    271             <option name="force_compat_profile" value="true" />
    272         </application>
    273 
    274         <application name="GpuTest" executable="GpuTest">
    275             <!-- GiMark benchmark from GpuTest does not initialize .w channel of
    276                  lightDir0 and lightDir1 varyings in the vertex shader while
    277                  uses it in the fragment shader. -->
    278             <option name="glsl_zero_init" value="true"/>
    279         </application>
    280 
    281         <application name="Curse of the Dead Gods" executable="Curse of the Dead Gods.exe">
    282             <!-- https://gitlab.freedesktop.org/mesa/mesa/-/issues/2598 -->
    283             <option name="glsl_zero_init" value="true" />
    284         </application>
    285 
    286         <application name="GRID Autosport" executable="GridAutosport">
    287             <!-- https://gitlab.freedesktop.org/mesa/mesa/-/issues/1258 -->
    288             <option name="force_integer_tex_nearest" value="true" />
    289         </application>
    290 
    291         <application name="DIRT: Showdown" executable="dirt.i386">
    292             <!-- https://gitlab.freedesktop.org/mesa/mesa/-/issues/1258 -->
    293             <option name="force_integer_tex_nearest" value="true" />
    294         </application>
    295 
    296         <application name="DiRT Rally" executable="DirtRally">
    297             <!-- https://gitlab.freedesktop.org/mesa/mesa/-/issues/5648 -->
    298             <option name="vs_position_always_invariant" value="true" />
    299         </application>
    300 
    301         <!-- Workarounds for SPECviewperf relying on invalid / non-conformant
    302              OpenGL behavior. Older SPECviewperf versions might also need this.
    303           -->
    304         <application name="SPECviewperf13" executable="viewperf">
    305             <option name="allow_glsl_extension_directive_midshader" value="true" />
    306             <option name="allow_glsl_120_subset_in_110" value="true" />
    307             <option name="force_gl_names_reuse" value="true" />
    308             <!-- This makes it use GL_NVX_gpu_memory_info to query memory info
    309                  instead of non-existent GLX_AMD_gpu_association. Yes, it checks
    310                  the vendor string, not the extension list. -->
    311             <option name="force_gl_vendor" value="NVIDIA Corporation" />
    312             <!-- creo-02 doesn't enable GL_EXT_shader_image_load_store in GLSL -->
    313             <option name="force_glsl_extensions_warn" value="true" />
    314             <option name="allow_draw_out_of_order" value="true" />
    315             <option name="mesa_glthread" value="true" />
    316             <option name="mesa_no_error" value="true" />
    317             <!-- Creating 10-bit pbuffers fails in the X server and returns BadAlloc. -->
    318             <option name="allow_rgb10_configs" value="false" />
    319         </application>
    320 
    321         <!-- Workaround for unsynchronized VBO updates on Dead Cells android
    322              game.  (Possibly also needed for desktop version?)
    323          -->
    324         <application name="Dead-Cells" executable="com.playdigious.deadcells.mobile">
    325             <option name="ignore_map_unsynchronized" value="true" />
    326         </application>
    327 
    328         <application name="Teardown" executable="teardown.exe">
    329             <!-- https://gitlab.freedesktop.org/mesa/mesa/-/issues/3714 -->
    330             <option name="force_integer_tex_nearest" value="true" />
    331             <option name="allow_glsl_extension_directive_midshader" value="true" />
    332         </application>
    333 
    334         <application name="Golf With Your Friends" executable="Golf With Your Friends.x86_64">
    335             <!-- https://gitlab.freedesktop.org/mesa/mesa/-/issues/4547 -->
    336             <option name="glsl_correct_derivatives_after_discard" value="true" />
    337         </application>
    338 
    339         <!-- The GL thread allowlist is below, workarounds are above.
    340              Keep it that way. -->
    341 
    342         <application name="Alien Isolation" executable="AlienIsolation">
    343             <option name="mesa_glthread" value="true"/>
    344         </application>
    345 
    346         <application name="BioShock Infinite" executable="bioshock.i386">
    347             <option name="mesa_glthread" value="true"/>
    348         </application>
    349 
    350         <application name="Borderlands 2" executable="Borderlands2">
    351             <option name="mesa_glthread" value="true"/>
    352         </application>
    353 
    354         <application name="Civilization 5" executable="Civ5XP">
    355             <option name="mesa_glthread" value="true"/>
    356         </application>
    357         <application name="Civilization 6" executable="Civ6">
    358             <option name="mesa_glthread" value="true"/>
    359         </application>
    360         <application name="Civilization 6" executable="Civ6Sub">
    361             <option name="mesa_glthread" value="true"/>
    362         </application>
    363 
    364         <application name="Dreamfall Chapters" executable="Dreamfall Chapters">
    365             <option name="mesa_glthread" value="true"/>
    366         </application>
    367 
    368         <application name="Hitman" executable="HitmanPro">
    369             <option name="mesa_glthread" value="true"/>
    370         </application>
    371 
    372         <application name="Renowned Explorers: International Society" executable="abbeycore_steam">
    373             <option name="mesa_glthread" value="true"/>
    374         </application>
    375 
    376         <application name="Saints Row 2" executable="saintsrow2.i386">
    377             <option name="mesa_glthread" value="true"/>
    378         </application>
    379         <application name="Saints Row: The Third" executable="SaintsRow3.i386">
    380             <option name="mesa_glthread" value="true"/>
    381         </application>
    382         <application name="Saints Row IV" executable="SaintsRow4.i386">
    383             <option name="mesa_glthread" value="true"/>
    384         </application>
    385         <application name="Saints Row: Gat out of Hell" executable="SaintsRow4GooH.i386">
    386             <option name="mesa_glthread" value="true"/>
    387         </application>
    388 
    389         <application name="Sid Meier's: Civilization Beyond Earth" executable="CivBE">
    390             <option name="mesa_glthread" value="true"/>
    391         </application>
    392 
    393         <application name="The Witcher 2" executable="witcher2">
    394             <option name="mesa_glthread" value="true"/>
    395         </application>
    396 
    397         <application name="American Truck Simulator" executable="amtrucks">
    398             <option name="mesa_glthread" value="true"/>
    399         </application>
    400         <application name="Euro Truck Simulator 2" executable="eurotrucks2">
    401             <option name="mesa_glthread" value="true"/>
    402         </application>
    403 
    404         <application name="Overlord" executable="overlord.i386">
    405             <option name="mesa_glthread" value="true"/>
    406         </application>
    407         <application name="Overlord 2" executable="overlord2.i386">
    408             <option name="mesa_glthread" value="true"/>
    409         </application>
    410 
    411         <application name="Oil Rush" executable="OilRush_x86">
    412             <option name="mesa_glthread" value="true"/>
    413         </application>
    414 
    415         <application name="War Thunder" executable="aces">
    416             <option name="mesa_glthread" value="true"/>
    417         </application>
    418         <application name="War Thunder (Wine)" executable="aces.exe">
    419             <option name="mesa_glthread" value="true"/>
    420         </application>
    421 
    422         <application name="Outlast" executable="OLGame.x86_64">
    423             <option name="mesa_glthread" value="true"/>
    424         </application>
    425 
    426         <application name="Spec Ops: The Line (32-bit)" executable="specops.i386">
    427             <option name="mesa_glthread" value="true"/>
    428         </application>
    429         <application name="Spec Ops: The Line (64-bit)" executable="specops">
    430             <option name="mesa_glthread" value="true"/>
    431         </application>
    432         <application name="Mount and Blade Warband" executable="mb_warband_linux">
    433             <option name="mesa_glthread" value="true"/>
    434         </application>
    435 
    436         <application name="Valheim" executable="valheim.x86_64">
    437             <option name="mesa_glthread" value="true"/>
    438         </application>
    439 
    440         <!-- around 18% performance increase in min and avg fps, max fps capped at 60fps. -->
    441         <application name="Medieval II: Total War" executable="Medieval2">
    442             <option name="mesa_glthread" value="true"/>
    443         </application>
    444 
    445         <!-- min fps ~21 ===> ~27 while standing still in game, also higher gpu load. -->
    446         <application name="Carnivores: Dinosaur Hunter Reborn (wine)" executable="Carnivores-master.exe">
    447             <option name="mesa_glthread" value="true"/>
    448         </application>
    449 
    450         <!-- around 30% increase in avg fps -->
    451         <application name="Far Cry 2 (wine)" executable="farcry2.exe">
    452             <option name="mesa_glthread" value="true"/>
    453         </application>
    454 
    455         <application name="Talos Principle" executable="Talos">
    456             <option name="mesa_glthread" value="true"/>
    457         </application>
    458         <application name="Talos Principle (Unrestricted)" executable="Talos_Unrestricted">
    459             <option name="mesa_glthread" value="true"/>
    460         </application>
    461 
    462         <!-- roughly 30% increase in fps -->
    463         <application name="7 Days To Die (64-bit)" executable="7DaysToDie.x86_64">
    464             <option name="mesa_glthread" value="true"/>
    465         </application>
    466         <application name="7 Days To Die (32-bit)" executable="7DaysToDie.x86">
    467             <option name="mesa_glthread" value="true"/>
    468         </application>
    469 
    470         <!-- Emulator tends to have a high CPU load for GPU emulation, so separating the driver overhead yield an improvement. -->
    471         <application name="Dolphin Emulator" executable="dolphin-emu">
    472             <option name="mesa_glthread" value="true"/>
    473         </application>
    474         <application name="Citra - Nintendo 3DS Emulator" executable="citra-qt">
    475             <option name="mesa_glthread" value="true"/>
    476         </application>
    477         <application name="Yuzu - Nintendo Switch Emulator" executable="yuzu">
    478             <option name="mesa_glthread" value="true"/>
    479         </application>
    480         <application name="RPCS3" executable="rpcs3">
    481             <option name="mesa_glthread" value="true"/>
    482         </application>
    483         <application name="PCSX2" executable="PCSX2">
    484             <option name="mesa_glthread" value="true"/>
    485         </application>
    486 
    487         <application name="From The Depths" executable="From_The_Depths.x86_64">
    488             <option name="mesa_glthread" value="true"/>
    489         </application>
    490 
    491         <!-- #Minimum fps 136 ==> 144 -->
    492         <application name="Plague Inc Evolved (32-bit)" executable="PlagueIncEvolved.x86">
    493             <option name="mesa_glthread" value="true" />
    494         </application>
    495         <application name="Plague Inc Evolved (64-bit)" executable="PlagueIncEvolved.x86_64">
    496             <option name="mesa_glthread" value="true" />
    497         </application>
    498 
    499         <!-- 10% fps increase -->
    500         <application name="Beholder (32-bit)" executable="Beholder.x86">
    501             <option name="mesa_glthread" value="true" />
    502         </application>
    503         <application name="Beholder (64-bit)" executable="Beholder.x86_64">
    504             <option name="mesa_glthread" value="true" />
    505         </application>
    506 
    507         <!-- X3 games: 15% avg fps increase while flying in space -->
    508         <application name="X3 Reunion" executable="X3R_main">
    509             <option name="mesa_glthread" value="true" />
    510         </application>
    511         <application name="X3 Terran Conflict" executable="X3TR_main">
    512             <option name="mesa_glthread" value="true" />
    513         </application>
    514         <application name="X3 Albion Prelude" executable="X3AP_main">
    515             <option name="mesa_glthread" value="true" />
    516         </application>
    517 
    518         <!-- +30% avg fps -->
    519         <application name="Borderlands: The Pre-Sequel" executable="BorderlandsPreSequel">
    520             <option name="mesa_glthread" value="true" />
    521         </application>
    522         <application name="Transport Fever" executable="TransportFever">
    523             <option name="mesa_glthread" value="true" />
    524         </application>
    525 
    526         <!-- Adaptive sync denylist follows below: -->
    527         <application name="gnome-shell" executable="gnome-shell">
    528             <option name="adaptive_sync" value="false" />
    529             <option name="v3d_nonmsaa_texture_size_limit" value="true" />
    530         </application>
    531         <application name="Desktop  Plasma" executable="plasmashell">
    532             <option name="adaptive_sync" value="false" />
    533         </application>
    534         <application name="budgie-wm" executable="budgie-wm">
    535             <option name="adaptive_sync" value="false" />
    536         </application>
    537         <application name="kwin_x11" executable="kwin_x11">
    538             <option name="adaptive_sync" value="false" />
    539         </application>
    540         <application name="ksmserver-logout-greeter" executable="ksmserver-logout-greeter">
    541             <option name="adaptive_sync" value="false" />
    542         </application>
    543         <application name="ksmserver-switchuser-greeter" executable="ksmserver-switchuser-greeter">
    544             <option name="adaptive_sync" value="false" />
    545         </application>
    546         <application name="kscreenlocker_greet" executable="kscreenlocker_greet">
    547             <option name="adaptive_sync" value="false" />
    548         </application>
    549         <application name="startplasma" executable="startplasma">
    550             <option name="adaptive_sync" value="false" />
    551         </application>
    552         <application name="sddm-greeter" executable="sddm-greeter">
    553             <option name="adaptive_sync" value="false" />
    554         </application>
    555         <application name="krunner" executable="krunner">
    556             <option name="adaptive_sync" value="false" />
    557         </application>
    558         <application name="spectacle" executable="spectacle">
    559             <option name="adaptive_sync" value="false" />
    560         </application>
    561         <application name="marco" executable="marco">
    562             <option name="adaptive_sync" value="false" />
    563         </application>
    564         <application name="compton" executable="compton">
    565             <option name="adaptive_sync" value="false" />
    566         </application>
    567         <application name="picom" executable="picom">
    568             <option name="adaptive_sync" value="false" />
    569         </application>
    570         <application name="xfwm4" executable="xfwm4">
    571             <option name="adaptive_sync" value="false" />
    572         </application>
    573         <application name="Enlightenment" executable="enlightenment">
    574             <option name="adaptive_sync" value="false" />
    575         </application>
    576         <application name="mutter" executable="mutter">
    577             <option name="adaptive_sync" value="false" />
    578             <option name="v3d_nonmsaa_texture_size_limit" value="true" />
    579         </application>
    580         <application name="muffin" executable="muffin">
    581             <option name="adaptive_sync" value="false" />
    582         </application>
    583         <application name="compiz" executable="compiz">
    584             <option name="adaptive_sync" value="false" />
    585         </application>
    586         <application name="Firefox" executable="firefox">
    587             <option name="adaptive_sync" value="false" />
    588         </application>
    589         <application name="Firefox ESR" executable="firefox-esr">
    590             <option name="adaptive_sync" value="false" />
    591         </application>
    592         <application name="Chromium" executable="chromium">
    593             <option name="adaptive_sync" value="false" />
    594         </application>
    595         <application name="Google Chrome" executable="chrome">
    596             <option name="adaptive_sync" value="false" />
    597         </application>
    598         <application name="Iceweasel" executable="iceweasel">
    599             <option name="adaptive_sync" value="false" />
    600         </application>
    601         <application name="Epiphany" executable="epiphany">
    602             <option name="adaptive_sync" value="false" />
    603         </application>
    604         <application name="Konqueror" executable="konqueror">
    605             <option name="adaptive_sync" value="false" />
    606         </application>
    607         <application name="Falkon" executable="falkon">
    608             <option name="adaptive_sync" value="false" />
    609         </application>
    610         <application name="Seamonkey" executable="seamonkey">
    611             <option name="adaptive_sync" value="false" />
    612         </application>
    613         <application name="Waterfox" executable="waterfox">
    614             <option name="adaptive_sync" value="false" />
    615         </application>
    616         <application name="VLC Media Player" executable="vlc">
    617             <option name="adaptive_sync" value="false" />
    618         </application>
    619         <application name="Totem" executable="totem">
    620             <option name="adaptive_sync" value="false" />
    621         </application>
    622         <application name="Dragon Player" executable="dragon">
    623             <option name="adaptive_sync" value="false" />
    624         </application>
    625         <application name="mpv" executable="mpv">
    626             <option name="adaptive_sync" value="false" />
    627         </application>
    628         <application name="Xorg" executable="Xorg">
    629             <option name="v3d_nonmsaa_texture_size_limit" value="true" />
    630         </application>
    631 
    632         <application name="gfxbench" executable="testfw_app">
    633             <option name="vk_x11_override_min_image_count" value="2" />
    634             <option name="vk_wsi_force_bgra8_unorm_first" value="true" />
    635         </application>
    636 
    637         <application name="Brink" executable="brink.exe">
    638             <option name="glx_extension_override" value="-GLX_OML_swap_method" />
    639             <option name="allow_higher_compat_version" value="true" />
    640         </application>
    641 
    642         <application name="Enter The Gungeon (32 bits)" executable="EtG.x86">
    643             <option name="glsl_correct_derivatives_after_discard" value="true" />
    644         </application>
    645 
    646         <application name="Enter The Gungeon (64 bits)" executable="EtG.x86_64">
    647             <option name="glsl_correct_derivatives_after_discard" value="true" />
    648         </application>
    649 
    650         <!-- Workaround for STAR WARS: Knights of the Old Republic relying on
    651              non-specified OpenGL behavior (expecting texture names to be
    652              small enough to fit in the static array).
    653           -->
    654         <application name="SWKOTOR (wine)" executable="swkotor.exe">
    655             <option name="force_gl_names_reuse" value="true"/>
    656         </application>
    657 
    658         <application name="Assault Android Cactus (32-bit)" executable="cactus_demo.x86">
    659             <option name="vs_position_always_precise" value="true" />
    660         </application>
    661         <application name="Assault Android Cactus (64-bit)" executable="cactus_demo.x86_64">
    662             <option name="vs_position_always_precise" value="true" />
    663         </application>
    664         <application name="Assault Android Cactus (32-bit)" executable="cactus.x86">
    665             <option name="vs_position_always_precise" value="true" />
    666         </application>
    667         <application name="Assault Android Cactus (64-bit)" executable="cactus.x86_64">
    668             <option name="vs_position_always_precise" value="true" />
    669         </application>
    670 
    671         <!-- Vulkan workarounds: -->
    672 
    673         <!-- Works around the game not starting (does not deal with
    674              the implementation returning more images than the minimum
    675              specified by the application. -->
    676         <engine engine_name_match="UnrealEngine4.*" engine_versions="0:23">
    677             <option name="vk_x11_strict_image_count" value="true" />
    678         </engine>
    679 
    680         <!-- DOOM crashes at startup without this workaround if the adaptative sync mode is enabled. -->
    681         <application name="DOOM" executable="DOOMx64vk.exe">
    682             <option name="vk_x11_strict_image_count" value="true" />
    683         </application>
    684 
    685         <!-- DOOM Doom Eternal happily creates a swapchain with 2 images for
    686              IMMEDIATE. This fixes a 10% performance issue with RADV. -->
    687         <application name="DOOMEternal" executable="DOOMEternalx64vk.exe">
    688             <option name="vk_x11_ensure_min_image_count" value="true" />
    689         </application>
    690 
    691         <!-- Wolfenstein: Youngblood crashes at startup on xwayland without this workaround. -->
    692         <application name="Wolfenstein: Youngblood(x64vk)" executable="Youngblood_x64vk.exe">
    693             <option name="vk_x11_strict_image_count" value="true" />
    694         </application>
    695 
    696         <!-- Metro:Exodus crashes at startup on xwayland without this workaround. -->
    697         <application name="Metro: Exodus" application_name_match="metroexodus">
    698             <option name="vk_x11_strict_image_count" value="true" />
    699         </application>
    700     </device>
    701     <!-- vmwgfx doesn't like full buffer swaps and can't sync to vertical retraces.-->
    702     <device driver="vmwgfx">
    703         <application name="gnome-shell" executable="gnome-shell">
    704             <option name="glx_extension_override" value="-GLX_EXT_buffer_age -GLX_OML_sync_control -GLX_SGI_video_sync" />
    705         </application>
    706         <application name="Compiz" executable="Compiz">
    707             <option name="glx_extension_override" value="-GLX_EXT_buffer_age -GLX_OML_sync_control" />
    708         </application>
    709     </device>
    710     <device driver="radeonsi">
    711         <application name="Half Life 2" executable="hl2_linux">
    712             <option name="mesa_glthread" value="true" />
    713         </application>
    714         <application name="Black Mesa" executable="bms_linux">
    715             <option name="mesa_glthread" value="true" />
    716         </application>
    717         <application name="Alien Isolation" executable="AlienIsolation">
    718             <option name="force_gl_vendor" value="X.Org" />
    719         </application>
    720         <application name="American Truck Simulator" executable="amtrucks">
    721             <option name="radeonsi_zerovram" value="true" />
    722         </application>
    723         <application name="Counter-Strike Global Offensive" executable="csgo_linux64">
    724             <option name="mesa_glthread" value="true" />
    725             <option name="radeonsi_zerovram" value="true" />
    726             <option name="radeonsi_clamp_div_by_zero" value="true" />
    727         </application>
    728         <application name="Rocket League" executable="RocketLeague">
    729             <option name="radeonsi_zerovram" value="true" />
    730         </application>
    731         <application name="DiRT Rally" executable="DirtRally">
    732             <option name="radeonsi_prim_restart_tri_strips_only" value="true"/>
    733         </application>
    734         <application name="Gfx Bench" executable="gfxbench_gl">
    735             <!-- Helps offscreen tests -->
    736             <option name="mesa_glthread" value="true"/>
    737         </application>
    738         <!-- YoYo game engine workarounds -->
    739         <application name="Monolith demo5" executable="runner" sha1="0c40d509a74e357f0280cb1bd882e9cd94b91bdf">
    740             <option name="radeonsi_sync_compile" value="true" />
    741             <option name="radeonsi_zerovram" value="true" />
    742         </application>
    743         <!-- Note: The following fix works for both Memoranda and Riptale as they have the same sha -->
    744         <application name="Memoranda / Riptale" executable="runner" sha1="aa13dec6af63c88f308ebb487693896434a4db56">
    745             <option name="radeonsi_sync_compile" value="true" />
    746         </application>
    747         <application name="Nuclear Throne" executable="runner" sha1="84814e8db125e889f5d9d4195a0ca72a871ea1fd">
    748             <option name="radeonsi_sync_compile" value="true" />
    749         </application>
    750         <application name="Undertale" executable="runner" sha1="dfa302e7ec78641d0696dbbc1a06fc29f34ff1ff">
    751             <option name="radeonsi_sync_compile" value="true" />
    752         </application>
    753         <application name="Turmoil" executable="runner" sha1="cbbf757aaab289859f8dae191a7d63afc30643d9">
    754             <option name="radeonsi_sync_compile" value="true" />
    755         </application>
    756         <application name="Peace, Death!" executable="runner" sha1="5b909f3d21799773370adf084f649848f098234e">
    757             <option name="radeonsi_sync_compile" value="true" />
    758         </application>
    759         <!-- https://gitlab.freedesktop.org/mesa/mesa/-/issues/2647 -->
    760         <application name="Kerbal Space Program" executable="KSP.x86_64">
    761             <option name="radeonsi_no_infinite_interp" value="true" />
    762         </application>
    763         <!-- https://gitlab.freedesktop.org/mesa/mesa/-/issues/2686 -->
    764         <application name="7 Days to Die" executable="7DaysToDie.x86_64">
    765             <option name="radeonsi_zerovram" value="true" />
    766         </application>
    767         <application name="7 Days to Die" executable="7DaysToDie.x86">
    768             <option name="radeonsi_zerovram" value="true" />
    769         </application>
    770         <application name="SPECviewperf13" executable="viewperf">
    771             <option name="radeonsi_sync_compile" value="true" />
    772             <option name="radeonsi_clamp_div_by_zero" value="true" />
    773             <option name="radeonsi_inline_uniforms" value="true" />
    774             <option name="radeonsi_shader_culling" value="true" />
    775         </application>
    776         <application name="Road Redemption" executable="RoadRedemption.x86_64">
    777             <option name="radeonsi_clamp_div_by_zero" value="true" />
    778         </application>
    779         <application name="Wasteland 2" executable="WL2">
    780             <option name="radeonsi_clamp_div_by_zero" value="true" />
    781         </application>
    782         <application name="Teardown" executable="teardown.exe">
    783             <!-- https://gitlab.freedesktop.org/mesa/mesa/-/issues/3714 -->
    784             <option name="radeonsi_clamp_div_by_zero" value="true" />
    785             <option name="radeonsi_no_infinite_interp" value="true" />
    786         </application>
    787         <application name="SpaceEngine" executable="SpaceEngine.exe">
    788             <option name="force_gl_vendor" value="X.Org" />
    789         </application>
    790     </device>
    791     <device driver="i965">
    792         <application name="Middle Earth: Shadow of Mordor" executable="ShadowOfMordor">
    793             <option name="vs_position_always_invariant" value="true" />
    794         </application>
    795     </device>
    796     <device driver="iris">
    797         <application name="Middle Earth: Shadow of Mordor" executable="ShadowOfMordor">
    798             <option name="vs_position_always_invariant" value="true" />
    799         </application>
    800     </device>
    801     <device driver="radv">
    802         <!-- Engine workarounds -->
    803         <engine engine_name_match="vkd3d">
    804             <option name="radv_zero_vram" value="true" />
    805         </engine>
    806 
    807         <engine engine_name_match="Quantic Dream Engine">
    808             <option name="radv_zero_vram" value="true" />
    809             <option name="radv_lower_discard_to_demote" value="true" />
    810             <option name="radv_disable_tc_compat_htile_general" value="true" />
    811         </engine>
    812 
    813         <!-- Game workarounds -->
    814         <application name="Shadow Of The Tomb Raider (Native)" application_name_match="ShadowOfTheTomb">
    815             <option name="radv_report_llvm9_version_string" value="true" />
    816             <option name="radv_invariant_geom" value="true" />
    817         </application>
    818 
    819         <application name="Shadow Of The Tomb Raider (DX11/DX12)" application_name_match="SOTTR.exe">
    820             <option name="radv_invariant_geom" value="true" />
    821         </application>
    822 
    823         <application name="RAGE 2" executable="RAGE2.exe">
    824             <option name="radv_enable_mrt_output_nan_fixup" value="true" />
    825         </application>
    826 
    827         <application name="Path of Exile (64-bit, Steam)" executable="PathOfExile_x64Steam.exe">
    828             <option name="radv_no_dynamic_bounds" value="true" />
    829             <option name="radv_absolute_depth_bias" value="true" />
    830         </application>
    831         <application name="Path of Exile (32-bit, Steam)" executable="PathOfExileSteam.exe">
    832             <option name="radv_no_dynamic_bounds" value="true" />
    833             <option name="radv_absolute_depth_bias" value="true" />
    834         </application>
    835         <application name="Path of Exile (64-bit)" executable="PathOfExile_x64.exe">
    836             <option name="radv_no_dynamic_bounds" value="true" />
    837             <option name="radv_absolute_depth_bias" value="true" />
    838         </application>
    839         <application name="Path of Exile (32-bit)" executable="PathOfExile.exe">
    840             <option name="radv_no_dynamic_bounds" value="true" />
    841             <option name="radv_absolute_depth_bias" value="true" />
    842         </application>
    843 
    844         <application name="The Surge 2" application_name_match="Fledge">
    845             <option name="radv_disable_shrink_image_store" value="true" />
    846             <option name="radv_zero_vram" value="true" />
    847         </application>
    848 
    849         <application name="World War Z (and World War Z: Aftermath)" application_name_match="WWZ|wwz">
    850             <option name="radv_override_uniform_offset_alignment" value="16" />
    851             <option name="radv_disable_shrink_image_store" value="true" />
    852             <option name="radv_invariant_geom" value="true" />
    853         </application>
    854 
    855         <application name="DOOM VFR" application_name_match="DOOM_VFR">
    856             <option name="radv_no_dynamic_bounds" value="true" />
    857         </application>
    858 
    859         <application name="DOOM Eternal" application_name_match="DOOMEternal">
    860             <option name="radv_zero_vram" value="true" />
    861         </application>
    862 
    863         <application name="No Man's Sky" application_name_match="No Man's Sky">
    864             <option name="radv_lower_discard_to_demote" value="true" />
    865         </application>
    866 
    867         <application name="Monster Hunter World" application_name_match="MonsterHunterWorld.exe">
    868             <option name="radv_invariant_geom" value="true" />
    869         </application>
    870 
    871         <application name="DOOM (2016)" application_name_match="DOOM$">
    872             <option name="radv_disable_dcc" value="true" />
    873         </application>
    874 
    875         <application name="Wolfenstein II" application_name_match="Wolfenstein II The New Colossus">
    876             <option name="radv_disable_dcc" value="true" />
    877         </application>
    878 
    879         <application name="RDR2" application_name_match="Red Dead Redemption 2">
    880             <option name="radv_report_apu_as_dgpu" value="true" />
    881         </application>
    882 
    883         <application name="Resident Evil Village" application_name_match="re8.exe">
    884             <option name="radv_invariant_geom" value="true" />
    885         </application>
    886 
    887         <application name="F1 2021" application_name_match="F1_2021_dx12.exe">
    888             <option name="radv_disable_htile_layers" value="true" />
    889         </application>
    890     </device>
    891     <!--
    892          The android game hall of shame:
    893 
    894          Workarounds for android games that are not aware of open source drivers.
    895          These can be removed as games have their allowlists updated.
    896      -->
    897     <device driver="msm" device="FD618">
    898         <application name="Call of Duty Mobile" executable="com.activision.callofduty.shooter">
    899             <option name="force_gl_renderer" value="Adreno (TM) 618"/>
    900             <option name="force_gl_vendor" value="Qualcomm"/>
    901         </application>
    902         <application name="Asphalt 8" executable="com.gameloft.android.ANMP.GloftA8HM">
    903             <!-- Note: asphalt8's allowlist seems to not have been updated recently
    904                  enough to be aware of "Adreno (TM) 618", but we seem to otherwise
    905                  have enough headroom to opt into the higher settings.  (Conversely
    906                  the allowlist seems to allow G72-MP3 into the higher tier, despite
    907                  not being able to maintain fps.. possibly it is not properly
    908                  differentiating between various core MPn configurations.  So I'm
    909                  going to use that to justify claiming to be a618's *slightly*
    910                  bigger brother)
    911              -->
    912             <option name="force_gl_renderer" value="Adreno (TM) 630"/>
    913             <option name="force_gl_vendor" value="Qualcomm"/>
    914         </application>
    915         <application name="Asphalt 9" executable="com.gameloft.android.ANMP.GloftA9HM">
    916             <option name="force_gl_renderer" value="Adreno (TM) 618"/>
    917             <option name="force_gl_vendor" value="Qualcomm"/>
    918         </application>
    919         <application name="PUBG Mobile" executable="com.tencent.ig">
    920             <!-- Note: Maxed out a630 settings still limits max framerate, yet GPU
    921                  is below 45% utilization (mostly closer to 40%).  If I claim to
    922                  be a640, that unlocks "Extreme" framerate (and "Ultra HD" graphics).
    923                  With "Extreme" + "HDR" we are comfortably at 60fps with plenty of
    924                  headroom.  "Extreme" + "Ultra HD" (max settings for a640) we are
    925                  starting to approach the limit.  I'll stick with a630 to be
    926                  conservative, but argueably we could go higher.  (This flagship
    927                  gaming phone thing is a scam!)
    928              -->
    929             <option name="force_gl_renderer" value="Adreno (TM) 630"/>
    930             <option name="force_gl_vendor" value="Qualcomm"/>
    931         </application>
    932     </device>
    933 </driconf>
    934