mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-06 01:50:38 +00:00
Try to avoid crash after fatal device error
This commit is contained in:
@@ -1104,6 +1104,9 @@ ID3D12Resource *D3D12DebugManager::MakeCBuffer(UINT64 size)
|
||||
|
||||
void D3D12DebugManager::FillBuffer(ID3D12Resource *buf, size_t offset, const void *data, size_t size)
|
||||
{
|
||||
if(!buf)
|
||||
return;
|
||||
|
||||
D3D12_RANGE range = {offset, offset + size};
|
||||
byte *ptr = NULL;
|
||||
HRESULT hr = buf->Map(0, &range, (void **)&ptr);
|
||||
@@ -1192,6 +1195,11 @@ rdcpair<ID3D12Resource *, UINT64> D3D12DebugManager::PatchExecuteIndirect(
|
||||
{
|
||||
rdcarray<uint32_t> argOffsets;
|
||||
|
||||
if(!m_EIPatchBufferData)
|
||||
{
|
||||
return {argBuf, argBufOffset};
|
||||
}
|
||||
|
||||
WrappedID3D12CommandSignature *wrappedComSig = (WrappedID3D12CommandSignature *)comSig;
|
||||
uint32_t offset = 0;
|
||||
for(const D3D12_INDIRECT_ARGUMENT_DESC &arg : wrappedComSig->sig.arguments)
|
||||
@@ -2114,15 +2122,16 @@ void D3D12DebugManager::PrepareExecuteIndirectPatching(GPUAddressRangeTracker &o
|
||||
hr = m_pDevice->CreateCommittedResource(
|
||||
&heapProps, D3D12_HEAP_FLAG_NONE, &desc, D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT, NULL,
|
||||
__uuidof(ID3D12Resource), (void **)&m_EIPatchScratchBuffer);
|
||||
m_pDevice->RemoveReplayResource(GetResID(m_EIPatchScratchBuffer));
|
||||
|
||||
m_EIPatchScratchBuffer->SetName(L"m_EIPatchScratchBuffer");
|
||||
|
||||
if(FAILED(hr))
|
||||
{
|
||||
RDCERR("Failed to create scratch buffer, HRESULT: %s", ToStr(hr).c_str());
|
||||
return;
|
||||
}
|
||||
|
||||
m_pDevice->RemoveReplayResource(GetResID(m_EIPatchScratchBuffer));
|
||||
|
||||
m_EIPatchScratchBuffer->SetName(L"m_EIPatchScratchBuffer");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user