From d23a8007ea86817af2c893a546853e2f477b3dee Mon Sep 17 00:00:00 2001 From: Luke <17146677+LukeFZ@users.noreply.github.com> Date: Sun, 17 Dec 2023 02:55:10 +0100 Subject: [PATCH] Fix ResizeBuffers not handling buffer count 0 properly Calling ResizeBuffers with BufferCount = 0 means that we should preserve the original buffer count. Until now this did actually set the game buffer count to zero, causing crashes on subsequent GetBuffer calls. --- .../FrameInterpolationSwapchainDX12.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/sdk/src/backends/dx12/FrameInterpolationSwapchain/FrameInterpolationSwapchainDX12.cpp b/sdk/src/backends/dx12/FrameInterpolationSwapchain/FrameInterpolationSwapchainDX12.cpp index 580c8674..865e49c7 100644 --- a/sdk/src/backends/dx12/FrameInterpolationSwapchain/FrameInterpolationSwapchainDX12.cpp +++ b/sdk/src/backends/dx12/FrameInterpolationSwapchain/FrameInterpolationSwapchainDX12.cpp @@ -1307,7 +1307,11 @@ HRESULT STDMETHODCALLTYPE FrameInterpolationSwapChainDX12::ResizeBuffers(UINT Bu const UINT fiAdjustedFlags = getInterpolationEnabledSwapChainFlags(SwapChainFlags); // update params expected by the application - gameBufferCount_ = BufferCount; + // a buffer count of zero means we need to preserve the original count + if (BufferCount != 0) + { + gameBufferCount_ = BufferCount; + } gameFlags_ = SwapChainFlags; HRESULT hr = real()->ResizeBuffers(0 /* preserve count */, Width, Height, NewFormat, fiAdjustedFlags);