From 70b2976b9aec45313ec42b0ddaeb103f270bc53f Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 18 Jan 2017 13:05:37 +0100 Subject: [PATCH] Protect against crashing if VB is not bound --- renderdoc/driver/d3d12/d3d12_state.cpp | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/renderdoc/driver/d3d12/d3d12_state.cpp b/renderdoc/driver/d3d12/d3d12_state.cpp index 8fd55fa1c..ff95635ef 100644 --- a/renderdoc/driver/d3d12/d3d12_state.cpp +++ b/renderdoc/driver/d3d12/d3d12_state.cpp @@ -165,17 +165,21 @@ void D3D12RenderState::ApplyState(ID3D12GraphicsCommandList *cmd) const for(size_t i = 0; i < vbuffers.size(); i++) { D3D12_VERTEX_BUFFER_VIEW vb; + vb.BufferLocation = 0; - ID3D12Resource *res = GetResourceManager()->GetCurrentAs(vbuffers[i].buf); - if(res) - vb.BufferLocation = res->GetGPUVirtualAddress() + vbuffers[i].offs; - else - vb.BufferLocation = 0; + if(vbuffers[i].buf != ResourceId()) + { + ID3D12Resource *res = GetResourceManager()->GetCurrentAs(vbuffers[i].buf); + if(res) + vb.BufferLocation = res->GetGPUVirtualAddress() + vbuffers[i].offs; + else + vb.BufferLocation = 0; - vb.StrideInBytes = vbuffers[i].stride; - vb.SizeInBytes = vbuffers[i].size; + vb.StrideInBytes = vbuffers[i].stride; + vb.SizeInBytes = vbuffers[i].size; - cmd->IASetVertexBuffers((UINT)i, 1, &vb); + cmd->IASetVertexBuffers((UINT)i, 1, &vb); + } } std::vector descHeaps;