mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-07-15 03:57:08 +00:00
Fix a crash with D3D11 SWAP_EFFECT_FLIP_DISCARD swapchains. Closes #2055
* DXGI is entangled with the API unfortunately, such that for D3D11 DXGI_SWAP_EFFECT_FLIP_DISCARD can only access buffer 0 (like DXGI_SWAP_EFFECT_DISCARD) but for D3D12 it can access any buffer. This is naturally undocumented.
This commit is contained in:
@@ -365,8 +365,13 @@ void WrappedIDXGISwapChain4::WrapBuffersAfterResize()
|
||||
|
||||
int bufCount = desc.BufferCount;
|
||||
|
||||
if(desc.SwapEffect == DXGI_SWAP_EFFECT_DISCARD)
|
||||
// discard swap effects only allow querying buffer 0, but only on D3D11 - on D3D12 they can (and
|
||||
// must) still query the full set of buffers.
|
||||
if(m_pDevice->GetFrameCapturer()->GetFrameCaptureDriver() == RDCDriver::D3D11 &&
|
||||
(desc.SwapEffect == DXGI_SWAP_EFFECT_DISCARD || desc.SwapEffect == DXGI_SWAP_EFFECT_FLIP_DISCARD))
|
||||
{
|
||||
bufCount = 1;
|
||||
}
|
||||
|
||||
RDCASSERT(bufCount < MAX_NUM_BACKBUFFERS);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user