tu: Add workaround for D3D11 games accessing UBO out of bounds
Some D3D11 games rely on out-of-bounds indirect UBO loads to return real values from underlying bound descriptor. This workaround would prevent us from lowering indirectly accessed UBOs to consts. Later DXVK would declare dynamically indexed uniforms with upper size bound, to make the accesses spec compliant. But for now we need our own workaround. Known affected games: - Dark Souls 3 - Sekiro: Shadows Die Twice - Final Fantasy Type-0 HD - Ultrakill - Dishonored 2 DXVK discussions: - https://github.com/doitsujin/dxvk/issues/405 - https://github.com/doitsujin/dxvk/issues/3861 Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27727>
This commit is contained in:
committed by
Marge Bot
parent
7a6836611e
commit
f4c40fc89c
@@ -1327,4 +1327,16 @@ TODO: document the other workarounds.
|
||||
<option name="force_gl_vendor" value="Qualcomm"/>
|
||||
</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>
|
||||
</device>
|
||||
</driconf>
|
||||
|
||||
@@ -594,6 +594,10 @@
|
||||
DRI_CONF_OPT_B(tu_dont_reserve_descriptor_set, def, \
|
||||
"Don't internally reserve one of the HW descriptor sets for descriptor set dynamic offset support, this frees up an extra descriptor set at the cost of that feature")
|
||||
|
||||
#define DRI_CONF_TU_ALLOW_OOB_INDIRECT_UBO_LOADS(def) \
|
||||
DRI_CONF_OPT_B(tu_allow_oob_indirect_ubo_loads, def, \
|
||||
"Some D3D11 games rely on out-of-bounds indirect UBO loads to return real values from underlying bound descriptor, this prevents us from lowering indirectly accessed UBOs to consts")
|
||||
|
||||
/**
|
||||
* \brief venus specific configuration options
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user