From 0fe73ac1658e4a2111ea2c3ad365ff08f2c84965 Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 7 Oct 2015 20:06:42 +0200 Subject: [PATCH] Don't serialise many redundant SetResourceName chunks in a row --- renderdoc/driver/d3d11/d3d11_device.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/renderdoc/driver/d3d11/d3d11_device.cpp b/renderdoc/driver/d3d11/d3d11_device.cpp index 726b38584..fa46b34b5 100644 --- a/renderdoc/driver/d3d11/d3d11_device.cpp +++ b/renderdoc/driver/d3d11/d3d11_device.cpp @@ -3253,6 +3253,24 @@ void WrappedID3D11Device::SetResourceName(ID3D11DeviceChild *res, const char *na SCOPED_SERIALISE_CONTEXT(SET_RESOURCE_NAME); Serialise_SetResourceName(res, name); + + // don't serialise many SetResourceName chunks to the + // object record, but we can't afford to drop any. + record->LockChunks(); + while(record->HasChunks()) + { + Chunk *end = record->GetLastChunk(); + + if(end->GetChunkType() == SET_RESOURCE_NAME) + { + SAFE_DELETE(end); + record->PopChunk(); + continue; + } + + break; + } + record->UnlockChunks(); record->AddChunk(scope.Get()); }