From 0990dc8f40a760c18bc92af8156b2e4a6c4e7971 Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Sun, 19 Jan 2025 02:26:17 +0100 Subject: [PATCH] [dxvk] Add option to disable VK_NV_low_latency2 --- dxvk.conf | 9 +++++++++ src/dxvk/dxvk_adapter.cpp | 4 ++++ src/dxvk/dxvk_options.cpp | 1 + src/dxvk/dxvk_options.h | 3 +++ 4 files changed, 17 insertions(+) diff --git a/dxvk.conf b/dxvk.conf index 55cc232f3..054505f82 100644 --- a/dxvk.conf +++ b/dxvk.conf @@ -106,6 +106,15 @@ # dxvk.latencyTolerance = 1000 +# Disables the use of VK_NV_low_latency2. This will make Reflex unavailable +# in games, and if dxvk.latencySleep is set to True, a custom algorithm will +# be used for latency control. +# +# Supported values: True, False + +# dxvk.disableNvLowLatency2 = False + + # Override PCI vendor and device IDs reported to the application. Can # cause the app to adjust behaviour depending on the selected values. # diff --git a/src/dxvk/dxvk_adapter.cpp b/src/dxvk/dxvk_adapter.cpp index 28f629059..021358557 100644 --- a/src/dxvk/dxvk_adapter.cpp +++ b/src/dxvk/dxvk_adapter.cpp @@ -293,6 +293,10 @@ namespace dxvk { enabledFeatures.vk12.bufferDeviceAddress = VK_TRUE; } + // Disable NV_low_latency2 if allowed via config + if (instance->options().disableNvLowLatency2) + devExtensions.nvLowLatency2.setMode(DxvkExtMode::Disabled); + // If we don't have pageable device memory support, at least use // the legacy AMD extension to ensure we can oversubscribe VRAM if (!m_deviceExtensions.supports(devExtensions.extPageableDeviceLocalMemory.name())) diff --git a/src/dxvk/dxvk_options.cpp b/src/dxvk/dxvk_options.cpp index 8fbf20bb6..8a066a7f7 100644 --- a/src/dxvk/dxvk_options.cpp +++ b/src/dxvk/dxvk_options.cpp @@ -14,6 +14,7 @@ namespace dxvk { tearFree = config.getOption("dxvk.tearFree", Tristate::Auto); latencySleep = config.getOption("dxvk.latencySleep", Tristate::Auto); latencyTolerance = config.getOption ("dxvk.latencyTolerance", 1000); + disableNvLowLatency2 = config.getOption ("dxvk.disableNvLowLatency2", false); hideIntegratedGraphics = config.getOption ("dxvk.hideIntegratedGraphics", false); zeroMappedMemory = config.getOption ("dxvk.zeroMappedMemory", false); allowFse = config.getOption ("dxvk.allowFse", false); diff --git a/src/dxvk/dxvk_options.h b/src/dxvk/dxvk_options.h index dcbd52230..6044e35be 100644 --- a/src/dxvk/dxvk_options.h +++ b/src/dxvk/dxvk_options.h @@ -43,6 +43,9 @@ namespace dxvk { /// Latency tolerance, in microseconds int32_t latencyTolerance = 0u; + /// Disable VK_NV_low_latency2 + bool disableNvLowLatency2 = false; + // Hides integrated GPUs if dedicated GPUs are // present. May be necessary for some games that // incorrectly assume monitor layouts.