Fix DXGI implicit backbuffer index tracking

* When DXGI_PRESENT_TEST flag is present, the backbuffer index doesn't
  increment.
* Resizing the buffers resets the index back to 0.
This commit is contained in:
baldurk
2019-09-19 18:01:40 +01:00
parent 1f67022280
commit ee3e4bf150
+14 -4
View File
@@ -352,6 +352,8 @@ HRESULT WrappedIDXGISwapChain4::ResizeBuffers(
WrapBuffersAfterResize();
m_LastPresentedBuffer = -1;
return ret;
}
@@ -386,6 +388,8 @@ HRESULT WrappedIDXGISwapChain4::ResizeBuffers1(_In_ UINT BufferCount, _In_ UINT
WrapBuffersAfterResize();
m_LastPresentedBuffer = -1;
return ret;
}
@@ -534,8 +538,11 @@ HRESULT WrappedIDXGISwapChain4::Present(
SyncInterval = 0;
}
TickLastPresentedBuffer();
m_pDevice->Present(this, SyncInterval, Flags);
if((Flags & DXGI_PRESENT_TEST) == 0)
{
TickLastPresentedBuffer();
m_pDevice->Present(this, SyncInterval, Flags);
}
return m_pReal->Present(SyncInterval, Flags);
}
@@ -548,8 +555,11 @@ HRESULT WrappedIDXGISwapChain4::Present1(UINT SyncInterval, UINT Flags,
SyncInterval = 0;
}
TickLastPresentedBuffer();
m_pDevice->Present(this, SyncInterval, Flags);
if((Flags & DXGI_PRESENT_TEST) == 0)
{
TickLastPresentedBuffer();
m_pDevice->Present(this, SyncInterval, Flags);
}
return m_pReal1->Present1(SyncInterval, Flags, pPresentParameters);
}