From 6d765b1cc6f400c29c8b66adbdb7546775f45a3b Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 13 Apr 2023 17:30:04 +0100 Subject: [PATCH] Batch padding bytes above 1k --- renderdoc/serialise/serialiser.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/renderdoc/serialise/serialiser.cpp b/renderdoc/serialise/serialiser.cpp index 09346a6d5..d5916b97a 100644 --- a/renderdoc/serialise/serialiser.cpp +++ b/renderdoc/serialise/serialiser.cpp @@ -501,6 +501,17 @@ void Serialiser::EndChunk() { uint64_t numPadBytes = m_ChunkMetadata.length - writtenLength; + if(numPadBytes > 1024) + { + byte padding[1024] = {}; + memset(padding, 0xbb, 1024); + while(numPadBytes > 1024) + { + m_Write->Write(padding, 1024); + numPadBytes -= 1024; + } + } + // need to write some padding bytes so that the length is accurate for(uint64_t i = 0; i < numPadBytes; i++) { @@ -512,7 +523,7 @@ void Serialiser::EndChunk() if(m_ChunkMetadata.length - writtenLength > 128) { RDCDEBUG("Chunk estimated at %llu bytes, actual length %llu. Added %llu bytes padding.", - m_ChunkMetadata.length, writtenLength, numPadBytes); + m_ChunkMetadata.length, writtenLength, m_ChunkMetadata.length - writtenLength); } } else if(writtenLength > m_ChunkMetadata.length)