From 0a8cd73db76d579b09129aa34a2f538d7e952850 Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Tue, 19 Jun 2018 19:09:57 +0200 Subject: [PATCH] Issue predictive callback payload transfer. --- client/TracyProfiler.cpp | 15 +++++++++++++++ common/TracyQueue.hpp | 4 ++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/client/TracyProfiler.cpp b/client/TracyProfiler.cpp index 5b5a2be4..4fde2a61 100644 --- a/client/TracyProfiler.cpp +++ b/client/TracyProfiler.cpp @@ -419,7 +419,22 @@ Profiler::DequeueStatus Profiler::DequeueSerial() auto end = item + sz; while( item != end ) { + uint64_t ptr; const auto idx = MemRead( &item->hdr.idx ); + if( idx < (int)QueueType::Terminate ) + { + switch( (QueueType)idx ) + { + case QueueType::CallstackMemory: + ptr = MemRead( &item->callstackMemory.ptr ); + SendCallstackPayload( ptr ); + tracy_free( (void*)ptr ); + break; + default: + assert( false ); + break; + } + } if( !AppendData( item, QueueDataSize[idx] ) ) return ConnectionLost; item++; } diff --git a/common/TracyQueue.hpp b/common/TracyQueue.hpp index f81f92bb..84a9fe54 100644 --- a/common/TracyQueue.hpp +++ b/common/TracyQueue.hpp @@ -11,6 +11,7 @@ enum class QueueType : uint8_t ZoneText, Message, ZoneBeginAllocSrcLoc, + CallstackMemory, Terminate, ZoneBegin, ZoneEnd, @@ -35,7 +36,6 @@ enum class QueueType : uint8_t MemFree, MemAllocCallstack, MemFreeCallstack, - CallstackMemory, StringData, ThreadName, CustomStringData, @@ -261,6 +261,7 @@ static const size_t QueueDataSize[] = { sizeof( QueueHeader ) + sizeof( QueueZoneText ), sizeof( QueueHeader ) + sizeof( QueueMessage ), sizeof( QueueHeader ) + sizeof( QueueZoneBegin ), // allocated source location + sizeof( QueueHeader ) + sizeof( QueueCallstackMemory ), // above items must be first sizeof( QueueHeader ), // terminate sizeof( QueueHeader ) + sizeof( QueueZoneBegin ), @@ -286,7 +287,6 @@ static const size_t QueueDataSize[] = { sizeof( QueueHeader ) + sizeof( QueueMemFree ), sizeof( QueueHeader ) + sizeof( QueueMemAlloc ), // callstack sizeof( QueueHeader ) + sizeof( QueueMemFree ), // callstack - sizeof( QueueHeader ) + sizeof( QueueCallstackMemory ), // keep all QueueStringTransfer below sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // string data sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // thread name