diff --git a/src/dxgi/dxgi_options.cpp b/src/dxgi/dxgi_options.cpp index 4d04e5f0..ca412fdd 100644 --- a/src/dxgi/dxgi_options.cpp +++ b/src/dxgi/dxgi_options.cpp @@ -40,6 +40,7 @@ namespace dxvk { this->maxSharedMemory = VkDeviceSize(config.getOption("dxgi.maxSharedMemory", 0)) << 20; this->numBackBuffers = config.getOption("dxgi.numBackBuffers", 0); + this->syncInterval = config.getOption("dxgi.syncInterval", -1); } } \ No newline at end of file diff --git a/src/dxgi/dxgi_options.h b/src/dxgi/dxgi_options.h index c7baa945..d4b9f67c 100644 --- a/src/dxgi/dxgi_options.h +++ b/src/dxgi/dxgi_options.h @@ -41,6 +41,10 @@ namespace dxvk { /// Back buffer count for the Vulkan swap chain. /// Overrides DXGI_SWAP_CHAIN_DESC::BufferCount. int32_t numBackBuffers; + + /// Sync interval. Overrides the value + /// passed to IDXGISwapChain::Present. + int32_t syncInterval; }; } diff --git a/src/dxgi/dxgi_swapchain.cpp b/src/dxgi/dxgi_swapchain.cpp index c84570c9..b35d5965 100644 --- a/src/dxgi/dxgi_swapchain.cpp +++ b/src/dxgi/dxgi_swapchain.cpp @@ -288,6 +288,9 @@ namespace dxvk { // https://msdn.microsoft.com/en-us/library/windows/desktop/bb174576(v=vs.85).aspx SyncInterval = std::min(SyncInterval, 4); + if (options->syncInterval >= 0) + SyncInterval = options->syncInterval; + try { // If in fullscreen mode, apply any updated gamma curve // if it has been changed since the last present call.