util: add a separate file for turnip drirc

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41731>
This commit is contained in:
Samuel Pitoiset 2026-05-21 16:04:03 +02:00 committed by Marge Bot
parent aba4094636
commit 85ac866f5e
3 changed files with 82 additions and 77 deletions

View file

@ -1394,83 +1394,6 @@ TODO: document the other workarounds.
<option name="disable_explicit_sync_heuristic" value="true"/>
</application>
</device>
<device driver="turnip">
<!-- Up to DXVK version 2.3.0 -->
<engine engine_name_match="DXVK" engine_versions="0:8400896">
<!--
See: https://github.com/doitsujin/dxvk/issues/3861
The shader-defined array size is entirely meaningless in D3D.
-->
<option name="tu_allow_oob_indirect_ubo_loads" value="true" />
</engine>
<engine engine_name_match="DXVK|vkd3d">
<!--
DXVK and VKD3D-Proton use customBorderColorWithoutFormat and have most of
D24S8 images with USAGE_SAMPLED, but never sample it with border color.
-->
<option name="tu_enable_fast_border_color_for_undefined_formats" value="true" />
<!--
For sampling, Vulkan requires texture coordinates to be truncated, whereas
D3D requires them to be rounded to nearest even value. The former is used by
default, the latter is used through this option.
-->
<option name="tu_use_tex_coord_round_nearest_even_mode" value="true" />
<!--
The hardware algorithm for alpha-to-coverage seems to
consistently produce bad results compared to other vendors.
Always enabling emulation would potentially regress performance
when it is dynamically enabled and off, but both both DXVK and
vkd3d-proton are known to compile pipelines with
alpha-to-coverage statically disabled.
-->
<option name="tu_emulate_alpha_to_coverage" value="true" />
<!--
DX games almost always tend to prefer SYSMEM over GMEM, so we just hardcode
this for DXVK and VKD3D-Proton.
-->
<option name="tu_autotune_algorithm" value="prefer_sysmem" />
</engine>
<engine engine_name_match="vkd3d">
<option name="tu_enable_softfloat32" value="true" />
</engine>
<engine engine_name_match="ANGLE">
<!--
ANGLE uses customBorderColorWithoutFormat on D24S8 and doesn't check
depthStencilSwizzleOneSupport.
-->
<option name="tu_enable_d24s8_border_color_workaround" value="true" />
</engine>
<application name="Sons Of The Forest" executable="SonsOfTheForest.exe">
<option name="tu_ignore_frag_depth_direction" value="true" />
</application>
<application name="Yooka-Laylee" application_name_match="YookaLaylee.x86_64">
<!--
A vertex shader performs OOB UBO reads causing vertex corruption.
Disable UBO to const lowering to force bounds checking which
fixes the corruption.
-->
<option name="tu_allow_oob_indirect_ubo_loads" value="true" />
</application>
<application name="Creed: Rise to Glory" executable="Creed-Win64-Shipping.exe">
<option name="tu_ignore_frag_depth_direction" value="true" />
</application>
<application name="Half-Life: Alyx" application_name_match="hlvr">
<option name="tu_emulate_alpha_to_coverage" value="true" />
</application>
<application name='No Man&apos;s Sky' application_name_match='No Man&apos;s Sky'>
<!-- A lighting CS reducing 8x8 regions with fmin/fmax does a write once per
subgroup (assuming 64), or collects the results from two subgroups in the
32 subgroup size case. Thus, our 128 subgroup size results in vertical banding
when half the 8x8 regions don't get written.
-->
<option name="tu_restrict_subgroup_size_64" value="true" />
</application>
</device>
<device driver="asahi">
<!-- Override GL renderer for known web browsers since one or more
web security frameworks apparently block clients with "Apple"

View file

@ -0,0 +1,78 @@
<?xml version="1.0"?>
<driconf>
<device driver="turnip">
<!-- Up to DXVK version 2.3.0 -->
<engine engine_name_match="DXVK" engine_versions="0:8400896">
<!--
See: https://github.com/doitsujin/dxvk/issues/3861
The shader-defined array size is entirely meaningless in D3D.
-->
<option name="tu_allow_oob_indirect_ubo_loads" value="true" />
</engine>
<engine engine_name_match="DXVK|vkd3d">
<!--
DXVK and VKD3D-Proton use customBorderColorWithoutFormat and have most of
D24S8 images with USAGE_SAMPLED, but never sample it with border color.
-->
<option name="tu_enable_fast_border_color_for_undefined_formats" value="true" />
<!--
For sampling, Vulkan requires texture coordinates to be truncated, whereas
D3D requires them to be rounded to nearest even value. The former is used by
default, the latter is used through this option.
-->
<option name="tu_use_tex_coord_round_nearest_even_mode" value="true" />
<!--
The hardware algorithm for alpha-to-coverage seems to
consistently produce bad results compared to other vendors.
Always enabling emulation would potentially regress performance
when it is dynamically enabled and off, but both both DXVK and
vkd3d-proton are known to compile pipelines with
alpha-to-coverage statically disabled.
-->
<option name="tu_emulate_alpha_to_coverage" value="true" />
<!--
DX games almost always tend to prefer SYSMEM over GMEM, so we just hardcode
this for DXVK and VKD3D-Proton.
-->
<option name="tu_autotune_algorithm" value="prefer_sysmem" />
</engine>
<engine engine_name_match="vkd3d">
<option name="tu_enable_softfloat32" value="true" />
</engine>
<engine engine_name_match="ANGLE">
<!--
ANGLE uses customBorderColorWithoutFormat on D24S8 and doesn't check
depthStencilSwizzleOneSupport.
-->
<option name="tu_enable_d24s8_border_color_workaround" value="true" />
</engine>
<application name="Sons Of The Forest" executable="SonsOfTheForest.exe">
<option name="tu_ignore_frag_depth_direction" value="true" />
</application>
<application name="Yooka-Laylee" application_name_match="YookaLaylee.x86_64">
<!--
A vertex shader performs OOB UBO reads causing vertex corruption.
Disable UBO to const lowering to force bounds checking which
fixes the corruption.
-->
<option name="tu_allow_oob_indirect_ubo_loads" value="true" />
</application>
<application name="Creed: Rise to Glory" executable="Creed-Win64-Shipping.exe">
<option name="tu_ignore_frag_depth_direction" value="true" />
</application>
<application name="Half-Life: Alyx" application_name_match="hlvr">
<option name="tu_emulate_alpha_to_coverage" value="true" />
</application>
<application name='No Man&apos;s Sky' application_name_match='No Man&apos;s Sky'>
<!-- A lighting CS reducing 8x8 regions with fmin/fmax does a write once per
subgroup (assuming 64), or collects the results from two subgroups in the
32 subgroup size case. Thus, our 128 subgroup size results in vertical banding
when half the 8x8 regions don't get written.
-->
<option name="tu_restrict_subgroup_size_64" value="true" />
</application>
</device>
</driconf>

View file

@ -217,6 +217,10 @@ if with_amd_vk
files_drirc += files('00-radv-defaults.conf')
endif
if with_freedreno_vk
files_drirc += files('00-turnip-defaults.conf')
endif
if with_gallium_radeonsi
files_drirc += files('00-radeonsi-defaults.conf')
endif