From 5ae3cdf7fb099f2624d7414504ad4d3ab8de88c2 Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 18 Nov 2016 18:38:28 +0100 Subject: [PATCH] Add a way to hint the initial size of the serialiser buffer --- renderdoc/driver/d3d12/d3d12_commands.cpp | 5 ++++- renderdoc/serialise/serialiser.cpp | 4 ++-- renderdoc/serialise/serialiser.h | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/renderdoc/driver/d3d12/d3d12_commands.cpp b/renderdoc/driver/d3d12/d3d12_commands.cpp index 50b780890..76b7b4b69 100644 --- a/renderdoc/driver/d3d12/d3d12_commands.cpp +++ b/renderdoc/driver/d3d12/d3d12_commands.cpp @@ -162,7 +162,10 @@ WrappedID3D12CommandQueue::WrappedID3D12CommandQueue(ID3D12CommandQueue *real, } else { - m_pSerialiser = new Serialiser(NULL, Serialiser::WRITING, debugSerialiser); + // make serialisers smaller by default since we create a lot of these internally for small + // commands. + // User lists will quickly grow to a steady-state over time. + m_pSerialiser = new Serialiser(NULL, Serialiser::WRITING, debugSerialiser, 256); m_pSerialiser->SetDebugText(debugSerialiser); } diff --git a/renderdoc/serialise/serialiser.cpp b/renderdoc/serialise/serialiser.cpp index 02c46fdab..132644716 100644 --- a/renderdoc/serialise/serialiser.cpp +++ b/renderdoc/serialise/serialiser.cpp @@ -634,7 +634,7 @@ Serialiser::Serialiser(size_t length, const byte *memoryBuf, bool fileheader) } } -Serialiser::Serialiser(const char *path, Mode mode, bool debugMode) +Serialiser::Serialiser(const char *path, Mode mode, bool debugMode, uint64_t sizeHint) : m_pCallstack(NULL), m_pResolver(NULL), m_Buffer(NULL) { m_ResolverThread = 0; @@ -935,7 +935,7 @@ Serialiser::Serialiser(const char *path, Mode mode, bool debugMode) } else { - m_BufferSize = 128 * 1024; + m_BufferSize = sizeHint; m_BufferHead = m_Buffer = AllocAlignedBuffer((size_t)m_BufferSize); } } diff --git a/renderdoc/serialise/serialiser.h b/renderdoc/serialise/serialiser.h index 304ca32b0..cbfa78b1a 100644 --- a/renderdoc/serialise/serialiser.h +++ b/renderdoc/serialise/serialiser.h @@ -199,7 +199,7 @@ public: // Init and error handling Serialiser(size_t length, const byte *memoryBuf, bool fileheader); - Serialiser(const char *path, Mode mode, bool debugMode = false); + Serialiser(const char *path, Mode mode, bool debugMode, uint64_t sizeHint = 128 * 1024); ~Serialiser(); bool HasError() { return m_HasError; }