diff --git a/Tracy.hpp b/Tracy.hpp index b40e3c19..4a8eb814 100644 --- a/Tracy.hpp +++ b/Tracy.hpp @@ -24,7 +24,7 @@ #define FrameMarkStart(x) #define FrameMarkEnd(x) -#define FrameImage(x,y,z,w) +#define FrameImage(x,y,z,w,a) #define TracyLockable( type, varname ) type varname; #define TracyLockableN( type, varname, desc ) type varname; @@ -88,7 +88,7 @@ #define FrameMarkStart( name ) tracy::Profiler::SendFrameMark( name, tracy::QueueType::FrameMarkMsgStart ); #define FrameMarkEnd( name ) tracy::Profiler::SendFrameMark( name, tracy::QueueType::FrameMarkMsgEnd ); -#define FrameImage( image, width, height, offset ) tracy::Profiler::SendFrameImage( image, width, height, offset ); +#define FrameImage( image, width, height, offset, flip ) tracy::Profiler::SendFrameImage( image, width, height, offset, flip ); #define TracyLockable( type, varname ) tracy::Lockable varname { [] () -> const tracy::SourceLocationData* { static const tracy::SourceLocationData srcloc { nullptr, #type " " #varname, __FILE__, __LINE__, 0 }; return &srcloc; }() }; #define TracyLockableN( type, varname, desc ) tracy::Lockable varname { [] () -> const tracy::SourceLocationData* { static const tracy::SourceLocationData srcloc { nullptr, desc, __FILE__, __LINE__, 0 }; return &srcloc; }() }; diff --git a/client/TracyProfiler.hpp b/client/TracyProfiler.hpp index f49067d9..2160eb5a 100644 --- a/client/TracyProfiler.hpp +++ b/client/TracyProfiler.hpp @@ -171,7 +171,7 @@ public: GetProfiler().m_serialLock.unlock(); } - static tracy_force_inline void SendFrameImage( void* image, uint16_t w, uint16_t h, uint8_t offset ) + static tracy_force_inline void SendFrameImage( void* image, uint16_t w, uint16_t h, uint8_t offset, bool flip ) { #ifdef TRACY_ON_DEMAND if( !GetProfiler().IsConnected() ) return; @@ -188,6 +188,8 @@ public: MemWrite( &item->frameImage.w, w ); MemWrite( &item->frameImage.h, h ); MemWrite( &item->frameImage.offset, offset ); + uint8_t _flip = flip; + MemWrite( &item->frameImage.flip, _flip ); tail.store( magic + 1, std::memory_order_release ); } diff --git a/common/TracyQueue.hpp b/common/TracyQueue.hpp index d7a5ffc9..24537d4f 100644 --- a/common/TracyQueue.hpp +++ b/common/TracyQueue.hpp @@ -106,6 +106,7 @@ struct QueueFrameImage uint16_t w; uint16_t h; uint8_t offset; + uint8_t flip; }; struct QueueSourceLocation diff --git a/server/TracyEvent.hpp b/server/TracyEvent.hpp index 76eb6f73..5de5579e 100644 --- a/server/TracyEvent.hpp +++ b/server/TracyEvent.hpp @@ -363,6 +363,7 @@ struct FrameImage uint32_t csz; uint16_t w, h; uint32_t frameRef; + uint8_t flip; }; } diff --git a/server/TracyWorker.cpp b/server/TracyWorker.cpp index fa8fc100..7ea2a0da 100644 --- a/server/TracyWorker.cpp +++ b/server/TracyWorker.cpp @@ -1250,6 +1250,7 @@ Worker::Worker( FileRead& f, EventType::Type eventMask ) s_loadProgress.subProgress.store( i, std::memory_order_relaxed ); auto fi = m_slab.Alloc(); f.Read2( fi->w, fi->h ); + f.Read( fi->flip ); const auto sz = fi->w * fi->h / 2; if( tmpbufsz < sz ) { @@ -3020,6 +3021,7 @@ void Worker::ProcessFrameImage( const QueueFrameImage& ev ) fi->w = ev.w; fi->h = ev.h; fi->frameRef = fidx; + fi->flip = ev.flip; const auto idx = m_data.frameImage.size(); m_data.frameImage.push_back( fi ); @@ -4395,6 +4397,7 @@ void Worker::Write( FileWrite& f ) { f.Write( &fi->w, sizeof( fi->w ) ); f.Write( &fi->h, sizeof( fi->h ) ); + f.Write( &fi->flip, sizeof( fi->flip ) ); const auto image = UnpackFrameImage( *fi ); f.Write( image, fi->w * fi->h / 2 ); }