From ba91e82feb1c2300ffb72f0ad69f60b5918d9b4d Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 21 Jun 2017 11:06:21 +0100 Subject: [PATCH] Don't try to replay maps with empty writes. * This can lead to crashes if we try to optimise with a buffer upload and try to create a buffer of 0 bytes. Easier just to skip these no-op maps. --- renderdoc/driver/d3d12/d3d12_device.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/renderdoc/driver/d3d12/d3d12_device.cpp b/renderdoc/driver/d3d12/d3d12_device.cpp index 7c22c5a98..0f61979f6 100644 --- a/renderdoc/driver/d3d12/d3d12_device.cpp +++ b/renderdoc/driver/d3d12/d3d12_device.cpp @@ -897,7 +897,8 @@ bool WrappedID3D12Device::Serialise_MapDataWrite(Serialiser *localSerialiser, SERIALISE_ELEMENT(uint64_t, begin, (uint64_t)range.Begin); SERIALISE_ELEMENT(uint64_t, end, (uint64_t)range.End); - if(m_State < WRITING && GetResourceManager()->HasLiveResource(res)) + // don't do anything if end <= begin because the range is empty. + if(m_State < WRITING && GetResourceManager()->HasLiveResource(res) && end > begin) { ID3D12Resource *r = GetResourceManager()->GetLiveAs(res);