From 328871de7ebee04eb80ed7d64e1c139d79e364df Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Fri, 14 Dec 2018 14:58:36 +0100 Subject: [PATCH] [d3d11] Re-introduce support for dxgi.numBackBuffers option --- src/d3d11/d3d11_swapchain.cpp | 11 +++++++++-- src/d3d11/d3d11_swapchain.h | 3 +++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/d3d11/d3d11_swapchain.cpp b/src/d3d11/d3d11_swapchain.cpp index 5a885f52..f95bc2e8 100644 --- a/src/d3d11/d3d11_swapchain.cpp +++ b/src/d3d11/d3d11_swapchain.cpp @@ -308,7 +308,7 @@ namespace dxvk { void D3D11SwapChain::RecreateSwapChain(BOOL Vsync) { vk::PresenterDesc presenterDesc; presenterDesc.imageExtent = { m_desc.Width, m_desc.Height }; - presenterDesc.imageCount = m_desc.BufferCount; + presenterDesc.imageCount = PickImageCount(m_desc.BufferCount); presenterDesc.numFormats = PickFormats(m_desc.Format, presenterDesc.formats); presenterDesc.numPresentModes = PickPresentModes(Vsync, presenterDesc.presentModes); @@ -329,7 +329,7 @@ namespace dxvk { vk::PresenterDesc presenterDesc; presenterDesc.imageExtent = { m_desc.Width, m_desc.Height }; - presenterDesc.imageCount = m_desc.BufferCount; + presenterDesc.imageCount = PickImageCount(m_desc.BufferCount); presenterDesc.numFormats = PickFormats(m_desc.Format, presenterDesc.formats); presenterDesc.numPresentModes = PickPresentModes(false, presenterDesc.presentModes); @@ -720,4 +720,11 @@ namespace dxvk { return n; } + + uint32_t D3D11SwapChain::PickImageCount( + UINT Preferred) { + int32_t option = m_parent->GetOptions()->numBackBuffers; + return option > 0 ? uint32_t(option) : uint32_t(Preferred); + } + } \ No newline at end of file diff --git a/src/d3d11/d3d11_swapchain.h b/src/d3d11/d3d11_swapchain.h index f8989df3..a5eeb176 100644 --- a/src/d3d11/d3d11_swapchain.h +++ b/src/d3d11/d3d11_swapchain.h @@ -153,6 +153,9 @@ namespace dxvk { BOOL Vsync, VkPresentModeKHR* pDstModes); + uint32_t PickImageCount( + UINT Preferred); + }; } \ No newline at end of file