diff --git a/server/TracyEvent.hpp b/server/TracyEvent.hpp index 9d9eb4de..950a7a03 100644 --- a/server/TracyEvent.hpp +++ b/server/TracyEvent.hpp @@ -251,6 +251,15 @@ struct SampleDataRange enum { SampleDataRangeSize = sizeof( SampleDataRange ) }; +struct HwSampleData +{ + uint32_t cycles; + uint32_t retired; +}; + +enum { HwSampleDataSize = sizeof( HwSampleData ) }; + + struct LockEvent { enum class Type : uint8_t diff --git a/server/TracyWorker.cpp b/server/TracyWorker.cpp index 7ed41e1a..002d291e 100644 --- a/server/TracyWorker.cpp +++ b/server/TracyWorker.cpp @@ -6276,10 +6276,16 @@ void Worker::ProcessTidToPid( const QueueTidToPid& ev ) void Worker::ProcessHwSampleCpuCycle( const QueueHwSample& ev ) { + auto it = m_data.hwSamples.find( ev.ip ); + if( it == m_data.hwSamples.end() ) it = m_data.hwSamples.emplace( ev.ip, HwSampleData {} ).first; + it->second.cycles++; } void Worker::ProcessHwSampleInstructionRetired( const QueueHwSample& ev ) { + auto it = m_data.hwSamples.find( ev.ip ); + if( it == m_data.hwSamples.end() ) it = m_data.hwSamples.emplace( ev.ip, HwSampleData {} ).first; + it->second.retired++; } void Worker::ProcessParamSetup( const QueueParamSetup& ev ) diff --git a/server/TracyWorker.hpp b/server/TracyWorker.hpp index a2aa1893..10889986 100644 --- a/server/TracyWorker.hpp +++ b/server/TracyWorker.hpp @@ -356,6 +356,8 @@ private: unordered_flat_map> locationCodeAddressList; unordered_flat_map sourceFileCache; + + unordered_flat_map hwSamples; }; struct MbpsBlock