From abacf6302b2dadda74c78743ffbbcd820bd2bb73 Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Mon, 5 Aug 2019 16:46:59 +0200 Subject: [PATCH] Push mesh triangles into staging vector. --- server/TracyEvent.hpp | 10 ++++++++++ server/TracyWorker.cpp | 22 ++++++++++++++++++++++ server/TracyWorker.hpp | 4 ++++ 3 files changed, 36 insertions(+) diff --git a/server/TracyEvent.hpp b/server/TracyEvent.hpp index a8b6027e..e011a2ff 100644 --- a/server/TracyEvent.hpp +++ b/server/TracyEvent.hpp @@ -221,6 +221,16 @@ struct CrashEvent enum { CrashEventSize = sizeof( CrashEvent ) }; + +struct MeshTriangle +{ + float x0, y0; + float x1, y1; + float x2, y2; +}; + +enum { MeshTriangleSize = sizeof( MeshTriangle ) }; + #pragma pack() diff --git a/server/TracyWorker.cpp b/server/TracyWorker.cpp index 3556d1ef..e08d9366 100644 --- a/server/TracyWorker.cpp +++ b/server/TracyWorker.cpp @@ -2780,6 +2780,12 @@ bool Worker::Process( const QueueItem& ev ) case QueueType::SysTimeReport: ProcessSysTime( ev.sysTime ); break; + case QueueType::MeshEnd: + ProcessMeshEnd(); + break; + case QueueType::MeshTri: + ProcessMeshTri( ev.meshTri ); + break; default: assert( false ); break; @@ -3804,6 +3810,22 @@ void Worker::ProcessSysTime( const QueueSysTime& ev ) } } +void Worker::ProcessMeshEnd() +{ + m_data.meshStaging.clear(); +} + +void Worker::ProcessMeshTri( const QueueMeshTri& ev ) +{ + auto& tri = m_data.meshStaging.push_next(); + tri.x0 = ev.x0; + tri.y0 = ev.y0; + tri.x1 = ev.x1; + tri.y1 = ev.y1; + tri.x2 = ev.x2; + tri.y2 = ev.y2; +} + void Worker::MemAllocChanged( int64_t time ) { const auto val = (double)m_data.memory.usage; diff --git a/server/TracyWorker.hpp b/server/TracyWorker.hpp index 2acbc89c..de0dc5be 100644 --- a/server/TracyWorker.hpp +++ b/server/TracyWorker.hpp @@ -188,6 +188,8 @@ private: Vector appInfo; CrashEvent crashEvent; + + Vector meshStaging; }; struct MbpsBlock @@ -406,6 +408,8 @@ private: tracy_force_inline void ProcessCallstackFrame( const QueueCallstackFrame& ev ); tracy_force_inline void ProcessCrashReport( const QueueCrashReport& ev ); tracy_force_inline void ProcessSysTime( const QueueSysTime& ev ); + tracy_force_inline void ProcessMeshEnd(); + tracy_force_inline void ProcessMeshTri( const QueueMeshTri& ev ); tracy_force_inline void ProcessZoneBeginImpl( ZoneEvent* zone, const QueueZoneBegin& ev ); tracy_force_inline void ProcessZoneBeginAllocSrcLocImpl( ZoneEvent* zone, const QueueZoneBegin& ev );