1
0
mirror of https://github.com/wolfpld/tracy synced 2025-04-29 20:33:52 +00:00

Frame image may need flipping.

This commit is contained in:
Bartosz Taudul 2019-06-12 15:28:32 +02:00
parent 29fd4b1fe9
commit 37d1457b44
5 changed files with 10 additions and 3 deletions

View File

@ -24,7 +24,7 @@
#define FrameMarkStart(x) #define FrameMarkStart(x)
#define FrameMarkEnd(x) #define FrameMarkEnd(x)
#define FrameImage(x,y,z,w) #define FrameImage(x,y,z,w,a)
#define TracyLockable( type, varname ) type varname; #define TracyLockable( type, varname ) type varname;
#define TracyLockableN( type, varname, desc ) type varname; #define TracyLockableN( type, varname, desc ) type varname;
@ -88,7 +88,7 @@
#define FrameMarkStart( name ) tracy::Profiler::SendFrameMark( name, tracy::QueueType::FrameMarkMsgStart ); #define FrameMarkStart( name ) tracy::Profiler::SendFrameMark( name, tracy::QueueType::FrameMarkMsgStart );
#define FrameMarkEnd( name ) tracy::Profiler::SendFrameMark( name, tracy::QueueType::FrameMarkMsgEnd ); #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<type> varname { [] () -> const tracy::SourceLocationData* { static const tracy::SourceLocationData srcloc { nullptr, #type " " #varname, __FILE__, __LINE__, 0 }; return &srcloc; }() }; #define TracyLockable( type, varname ) tracy::Lockable<type> varname { [] () -> const tracy::SourceLocationData* { static const tracy::SourceLocationData srcloc { nullptr, #type " " #varname, __FILE__, __LINE__, 0 }; return &srcloc; }() };
#define TracyLockableN( type, varname, desc ) tracy::Lockable<type> varname { [] () -> const tracy::SourceLocationData* { static const tracy::SourceLocationData srcloc { nullptr, desc, __FILE__, __LINE__, 0 }; return &srcloc; }() }; #define TracyLockableN( type, varname, desc ) tracy::Lockable<type> varname { [] () -> const tracy::SourceLocationData* { static const tracy::SourceLocationData srcloc { nullptr, desc, __FILE__, __LINE__, 0 }; return &srcloc; }() };

View File

@ -171,7 +171,7 @@ public:
GetProfiler().m_serialLock.unlock(); 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 #ifdef TRACY_ON_DEMAND
if( !GetProfiler().IsConnected() ) return; if( !GetProfiler().IsConnected() ) return;
@ -188,6 +188,8 @@ public:
MemWrite( &item->frameImage.w, w ); MemWrite( &item->frameImage.w, w );
MemWrite( &item->frameImage.h, h ); MemWrite( &item->frameImage.h, h );
MemWrite( &item->frameImage.offset, offset ); MemWrite( &item->frameImage.offset, offset );
uint8_t _flip = flip;
MemWrite( &item->frameImage.flip, _flip );
tail.store( magic + 1, std::memory_order_release ); tail.store( magic + 1, std::memory_order_release );
} }

View File

@ -106,6 +106,7 @@ struct QueueFrameImage
uint16_t w; uint16_t w;
uint16_t h; uint16_t h;
uint8_t offset; uint8_t offset;
uint8_t flip;
}; };
struct QueueSourceLocation struct QueueSourceLocation

View File

@ -363,6 +363,7 @@ struct FrameImage
uint32_t csz; uint32_t csz;
uint16_t w, h; uint16_t w, h;
uint32_t frameRef; uint32_t frameRef;
uint8_t flip;
}; };
} }

View File

@ -1250,6 +1250,7 @@ Worker::Worker( FileRead& f, EventType::Type eventMask )
s_loadProgress.subProgress.store( i, std::memory_order_relaxed ); s_loadProgress.subProgress.store( i, std::memory_order_relaxed );
auto fi = m_slab.Alloc<FrameImage>(); auto fi = m_slab.Alloc<FrameImage>();
f.Read2( fi->w, fi->h ); f.Read2( fi->w, fi->h );
f.Read( fi->flip );
const auto sz = fi->w * fi->h / 2; const auto sz = fi->w * fi->h / 2;
if( tmpbufsz < sz ) if( tmpbufsz < sz )
{ {
@ -3020,6 +3021,7 @@ void Worker::ProcessFrameImage( const QueueFrameImage& ev )
fi->w = ev.w; fi->w = ev.w;
fi->h = ev.h; fi->h = ev.h;
fi->frameRef = fidx; fi->frameRef = fidx;
fi->flip = ev.flip;
const auto idx = m_data.frameImage.size(); const auto idx = m_data.frameImage.size();
m_data.frameImage.push_back( fi ); 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->w, sizeof( fi->w ) );
f.Write( &fi->h, sizeof( fi->h ) ); f.Write( &fi->h, sizeof( fi->h ) );
f.Write( &fi->flip, sizeof( fi->flip ) );
const auto image = UnpackFrameImage( *fi ); const auto image = UnpackFrameImage( *fi );
f.Write( image, fi->w * fi->h / 2 ); f.Write( image, fi->w * fi->h / 2 );
} }