From 09388f3c9933e3021422ca76b403923f508cc9de Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Sun, 10 May 2020 19:56:36 +0200 Subject: [PATCH] Send lean callstack allocs. --- client/TracyProfiler.cpp | 2 ++ common/TracyQueue.hpp | 4 +++- server/TracyWorker.cpp | 8 ++++---- server/TracyWorker.hpp | 2 +- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/client/TracyProfiler.cpp b/client/TracyProfiler.cpp index 09654dcd..787c5afd 100644 --- a/client/TracyProfiler.cpp +++ b/client/TracyProfiler.cpp @@ -1831,6 +1831,8 @@ Profiler::DequeueStatus Profiler::Dequeue( moodycamel::ConsumerToken& token ) ptr = MemRead( &item->callstackAlloc.ptr ); SendCallstackAlloc( ptr ); tracy_free( (void*)ptr ); + idx++; + MemWrite( &item->hdr.idx, idx ); break; case QueueType::CallstackSample: { diff --git a/common/TracyQueue.hpp b/common/TracyQueue.hpp index e0d1b134..62e3a1c3 100644 --- a/common/TracyQueue.hpp +++ b/common/TracyQueue.hpp @@ -24,6 +24,7 @@ enum class QueueType : uint8_t Callstack, CallstackLean, CallstackAlloc, + CallstackAllocLean, CallstackSample, FrameImage, ZoneBegin, @@ -488,7 +489,8 @@ static constexpr size_t QueueDataSize[] = { sizeof( QueueHeader ), // lean callstack memory sizeof( QueueHeader ) + sizeof( QueueCallstack ), // not for network transfer sizeof( QueueHeader ), // lean callstack - sizeof( QueueHeader ) + sizeof( QueueCallstackAlloc ), + sizeof( QueueHeader ) + sizeof( QueueCallstackAlloc ), // not for network transfer + sizeof( QueueHeader ), // lean callstack alloc sizeof( QueueHeader ) + sizeof( QueueCallstackSample ), sizeof( QueueHeader ) + sizeof( QueueFrameImage ), sizeof( QueueHeader ) + sizeof( QueueZoneBegin ), diff --git a/server/TracyWorker.cpp b/server/TracyWorker.cpp index 11b5c487..438e8576 100644 --- a/server/TracyWorker.cpp +++ b/server/TracyWorker.cpp @@ -4188,8 +4188,8 @@ bool Worker::Process( const QueueItem& ev ) case QueueType::CallstackLean: ProcessCallstack(); break; - case QueueType::CallstackAlloc: - ProcessCallstackAlloc( ev.callstackAlloc ); + case QueueType::CallstackAllocLean: + ProcessCallstackAlloc(); break; case QueueType::CallstackSample: ProcessCallstackSample( ev.callstackSample ); @@ -5371,9 +5371,9 @@ void Worker::ProcessCallstack() } } -void Worker::ProcessCallstackAlloc( const QueueCallstackAlloc& ev ) +void Worker::ProcessCallstackAlloc() { - assert( m_pendingCallstackPtr == ev.ptr ); + assert( m_pendingCallstackPtr != 0 ); m_pendingCallstackPtr = 0; auto nit = m_nextCallstack.find( m_threadCtx ); diff --git a/server/TracyWorker.hpp b/server/TracyWorker.hpp index ee24a452..d2b19d25 100644 --- a/server/TracyWorker.hpp +++ b/server/TracyWorker.hpp @@ -601,7 +601,7 @@ private: tracy_force_inline void ProcessMemFreeCallstack( const QueueMemFree& ev ); tracy_force_inline void ProcessCallstackMemory(); tracy_force_inline void ProcessCallstack(); - tracy_force_inline void ProcessCallstackAlloc( const QueueCallstackAlloc& ev ); + tracy_force_inline void ProcessCallstackAlloc(); tracy_force_inline void ProcessCallstackSample( const QueueCallstackSample& ev ); tracy_force_inline void ProcessCallstackFrameSize( const QueueCallstackFrameSize& ev ); tracy_force_inline void ProcessCallstackFrame( const QueueCallstackFrame& ev );