diff --git a/src/d3d9/d3d9_device.cpp b/src/d3d9/d3d9_device.cpp index 689ed4382..f595e909e 100644 --- a/src/d3d9/d3d9_device.cpp +++ b/src/d3d9/d3d9_device.cpp @@ -4163,6 +4163,9 @@ namespace dxvk { if (!m_d3d9Options.allowLockFlagReadonly) Flags &= ~D3DLOCK_READONLY; + if (!m_d3d9Options.allowDiscard) + Flags &= ~D3DLOCK_DISCARD; + auto& desc = *pResource->Desc(); // Ignore DISCARD if NOOVERWRITE is set diff --git a/src/d3d9/d3d9_options.cpp b/src/d3d9/d3d9_options.cpp index 61134880e..1ed1aaff8 100644 --- a/src/d3d9/d3d9_options.cpp +++ b/src/d3d9/d3d9_options.cpp @@ -66,6 +66,7 @@ namespace dxvk { this->forceAspectRatio = config.getOption("d3d9.forceAspectRatio", ""); this->allowDoNotWait = config.getOption ("d3d9.allowDoNotWait", true); + this->allowDiscard = config.getOption ("d3d9.allowDiscard", 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 7ead26d5e..582898b71 100644 --- a/src/d3d9/d3d9_options.h +++ b/src/d3d9/d3d9_options.h @@ -122,6 +122,9 @@ namespace dxvk { /// Allow D3DLOCK_DONOTWAIT bool allowDoNotWait; + + /// Allow D3DLOCK_DISCARD + bool allowDiscard; }; } \ No newline at end of file