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