diff --git a/src/d3d9/d3d9_device.cpp b/src/d3d9/d3d9_device.cpp index 03d460c0..3914eb17 100644 --- a/src/d3d9/d3d9_device.cpp +++ b/src/d3d9/d3d9_device.cpp @@ -3781,6 +3781,9 @@ namespace dxvk { if (unlikely(!m_d3d9Options.allowLockFlagReadonly)) Flags &= ~D3DLOCK_READONLY; + if (unlikely(!m_d3d9Options.allowDoNotWait)) + Flags &= ~D3DLOCK_DONOTWAIT; + if (unlikely((Flags & (D3DLOCK_DISCARD | D3DLOCK_NOOVERWRITE)) == (D3DLOCK_DISCARD | D3DLOCK_NOOVERWRITE))) Flags &= ~D3DLOCK_DISCARD; diff --git a/src/d3d9/d3d9_options.cpp b/src/d3d9/d3d9_options.cpp index a3c5c698..61134880 100644 --- a/src/d3d9/d3d9_options.cpp +++ b/src/d3d9/d3d9_options.cpp @@ -65,6 +65,7 @@ namespace dxvk { this->forceSwapchainMSAA = config.getOption ("d3d9.forceSwapchainMSAA", -1); this->forceAspectRatio = config.getOption("d3d9.forceAspectRatio", ""); + this->allowDoNotWait = config.getOption ("d3d9.allowDoNotWait", true); // If we are not Nvidia, enable general hazards. this->generalHazards = adapter == nullptr || !adapter->matchesDriver(DxvkGpuVendor::Nvidia, VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR, 0, 0); diff --git a/src/d3d9/d3d9_options.h b/src/d3d9/d3d9_options.h index e82441e1..7ead26d5 100644 --- a/src/d3d9/d3d9_options.h +++ b/src/d3d9/d3d9_options.h @@ -119,6 +119,9 @@ namespace dxvk { /// Forces an MSAA level on the swapchain int32_t forceSwapchainMSAA; + + /// Allow D3DLOCK_DONOTWAIT + bool allowDoNotWait; }; } \ No newline at end of file