-
Notifications
You must be signed in to change notification settings - Fork 39
Passing driver settings
DXVK-NVAPI newer than Commit c13ab33 allows to pass driver settings to an application; when requested by an application. Those driver settings are set with environment variables.
DXVK_NVAPI_DRS_SETTINGS
allows providing custom values for arbitrary driver settings with keys and values of DWORD (u32) types. Format is setting1=value1,setting2=value2,…
where both settingN
and valueN
are unsigned 32-bit integers and can be prefixed with 0x
or 0X
to parse them as hexadecimal numbers. Additionally, several well known settings are supported in their named/text form, for both keys and values. Each supported named setting can also be configured with a dedicated environment variable. The name of said environment variable is case-sensitive, the value is not. If a setting is set via both DXVK_NVAPI_DRS_SETTINGS
and its own dedicated environment variable, the latter takes precedence.
- Key:
NGX_DLAA_OVERRIDE
- Values:
DLAA_DEFAULT
DLAA_ON
DEFAULT
Example 1: DXVK_NVAPI_DRS_SETTINGS=ngx_dlaa_override=dlaa_on
Example 2: DXVK_NVAPI_DRS_NGX_DLAA_OVERRIDE=dlaa_on
- Key:
NGX_DLSSG_MULTI_FRAME_COUNT
- Values:
MIN
MAX
DEFAULT
Example 1: DXVK_NVAPI_DRS_SETTINGS=ngx_dlssg_multi_frame_count=max
Example 2: DXVK_NVAPI_DRS_NGX_DLSSG_MULTI_FRAME_COUNT=max
- Key:
NGX_DLSS_FG_OVERRIDE
- Values:
OFF
ON
DEFAULT
Example 1: DXVK_NVAPI_DRS_SETTINGS=ngx_dlss_fg_override=on
Example 2: DXVK_NVAPI_DRS_NGX_DLSS_FG_OVERRIDE=on
- Key:
NGX_DLSS_RR_MODE
- Values:
PERFORMANCE
BALANCED
QUALITY
SNIPPET_CONTROLLED
DLAA
ULTRA_PERFORMANCE
CUSTOM
DEFAULT
Example 1: DXVK_NVAPI_DRS_SETTINGS=ngx_dlss_rr_mode=dlaa
Example 2: DXVK_NVAPI_DRS_NGX_DLSS_RR_MODE=dlaa
- Key:
NGX_DLSS_OVERRIDE_OPTIMAL_SETTINGS
- Values:
NONE
PERF_TO_9X
DEFAULT
Example 1: DXVK_NVAPI_DRS_SETTINGS=ngx_dlss_override_optimal_settings=none
Example 2: DXVK_NVAPI_DRS_NGX_DLSS_OVERRIDE_OPTIMAL_SETTINGS=none
- Key:
NGX_DLSS_RR_OVERRIDE
- Values:
OFF
ON
DEFAULT
Example 1: DXVK_NVAPI_DRS_SETTINGS=ngx_dlss_rr_override=on
Example 2: DXVK_NVAPI_DRS_NGX_DLSS_RR_OVERRIDE=on
- Key:
NGX_DLSS_RR_OVERRIDE_RENDER_PRESET_SELECTION
- Values:
OFF
RENDER_PRESET_A
RENDER_PRESET_B
RENDER_PRESET_C
RENDER_PRESET_D
RENDER_PRESET_E
RENDER_PRESET_F
RENDER_PRESET_G
RENDER_PRESET_H
RENDER_PRESET_I
RENDER_PRESET_J
RENDER_PRESET_K
RENDER_PRESET_L
RENDER_PRESET_M
RENDER_PRESET_N
RENDER_PRESET_O
RENDER_PRESET_LATEST
DEFAULT
Example 1: DXVK_NVAPI_DRS_SETTINGS=ngx_dlss_rr_override_render_preset_selection=render_preset_latest
Example 2: DXVK_NVAPI_DRS_NGX_DLSS_RR_OVERRIDE_RENDER_PRESET_SELECTION=render_preset_latest
- Key:
NGX_DLSS_SR_MODE
- Values:
PERFORMANCE
BALANCED
QUALITY
SNIPPET_CONTROLLED
DLAA
ULTRA_PERFORMANCE
CUSTOM
DEFAULT
Example 1: DXVK_NVAPI_DRS_SETTINGS=ngx_dlss_sr_mode=dlaa
Example 2: DXVK_NVAPI_DRS_NGX_DLSS_SR_MODE=dlaa
- Key:
NGX_DLSS_SR_OVERRIDE
- Values:
OFF
ON
DEFAULT
Example 1: DXVK_NVAPI_DRS_SETTINGS=ngx_dlss_sr_override=on
Example 2: DXVK_NVAPI_DRS_NGX_DLSS_SR_OVERRIDE=on
- Key:
NGX_DLSS_SR_OVERRIDE_RENDER_PRESET_SELECTION
- Values:
OFF
RENDER_PRESET_A
RENDER_PRESET_B
RENDER_PRESET_C
RENDER_PRESET_D
RENDER_PRESET_E
RENDER_PRESET_F
RENDER_PRESET_G
RENDER_PRESET_H
RENDER_PRESET_I
RENDER_PRESET_J
RENDER_PRESET_K
RENDER_PRESET_L
RENDER_PRESET_M
RENDER_PRESET_N
RENDER_PRESET_O
RENDER_PRESET_LATEST
DEFAULT
Example 1: DXVK_NVAPI_DRS_SETTINGS=ngx_dlss_sr_override_render_preset_selection=render_preset_latest
Example 2: DXVK_NVAPI_DRS_NGX_DLSS_SR_OVERRIDE_RENDER_PRESET_SELECTION=render_preset_latest
Applying driver settings does not override NGX snippets/dlls. Use PROTON_ENABLE_NGX_UPDATER=1
(See ngx.html from the NVIDIA driver documentation) for automatic snippets updates and then add the DRS settings that enable DLSS overrides:
- NGX_DLSS_RR_OVERRIDE=on
- NGX_DLSS_SR_OVERRIDE=on
- NGX_DLSS_FG_OVERRIDE=on
Overriding DLSS snippets for all three mentioned NGX features and force latest preset for DLSS-SR and DLSS-RR looks like this with a one liner suitable for e.g. launch options:
PROTON_ENABLE_NGX_UPDATER=1 DXVK_NVAPI_DRS_SETTINGS=NGX_DLSS_RR_OVERRIDE=on,NGX_DLSS_SR_OVERRIDE=on,NGX_DLSS_FG_OVERRIDE=on,NGX_DLSS_RR_OVERRIDE_RENDER_PRESET_SELECTION=render_preset_latest,NGX_DLSS_SR_OVERRIDE_RENDER_PRESET_SELECTION=render_preset_latest
or like this with separate environment variables:
PROTON_ENABLE_NGX_UPDATER=1
DXVK_NVAPI_DRS_NGX_DLSS_RR_OVERRIDE=on
DXVK_NVAPI_DRS_NGX_DLSS_SR_OVERRIDE=on
DXVK_NVAPI_DRS_NGX_DLSS_FG_OVERRIDE=on
DXVK_NVAPI_DRS_NGX_DLSS_RR_OVERRIDE_RENDER_PRESET_SELECTION=render_preset_latest
DXVK_NVAPI_DRS_NGX_DLSS_SR_OVERRIDE_RENDER_PRESET_SELECTION=render_preset_latest
or like this when putting those options into Proton's user_settings.py:
{
"PROTON_ENABLE_NGX_UPDATER": "1",
"DXVK_NVAPI_DRS_NGX_DLSS_RR_OVERRIDE": "on",
"DXVK_NVAPI_DRS_NGX_DLSS_SR_OVERRIDE": "on",
"DXVK_NVAPI_DRS_NGX_DLSS_FG_OVERRIDE": "on",
"DXVK_NVAPI_DRS_NGX_DLSS_RR_OVERRIDE_RENDER_PRESET_SELECTION": "render_preset_latest",
"DXVK_NVAPI_DRS_NGX_DLSS_SR_OVERRIDE_RENDER_PRESET_SELECTION": "render_preset_latest"
}
Note that PROTON_ENABLE_NGX_UPDATER
had some issues before R570 driver release and there's still some chance that it won't work in all titles. If you start seeing games quietly failing to launch, this variable may be the cause.