mirror of
https://github.com/wolfpld/tracy
synced 2025-04-30 12:53:51 +00:00
Send single string for messages.
This commit is contained in:
parent
5553761c02
commit
e91950f006
@ -1447,12 +1447,14 @@ void Profiler::Worker()
|
|||||||
for( auto& item : m_deferredQueue )
|
for( auto& item : m_deferredQueue )
|
||||||
{
|
{
|
||||||
uint64_t ptr;
|
uint64_t ptr;
|
||||||
|
uint16_t size;
|
||||||
const auto idx = MemRead<uint8_t>( &item.hdr.idx );
|
const auto idx = MemRead<uint8_t>( &item.hdr.idx );
|
||||||
switch( (QueueType)idx )
|
switch( (QueueType)idx )
|
||||||
{
|
{
|
||||||
case QueueType::MessageAppInfo:
|
case QueueType::MessageAppInfo:
|
||||||
ptr = MemRead<uint64_t>( &item.message.text );
|
ptr = MemRead<uint64_t>( &item.messageFat.text );
|
||||||
SendString( ptr, (const char*)ptr, QueueType::CustomStringData );
|
size = MemRead<uint16_t>( &item.messageFat.size );
|
||||||
|
SendSingleString( (const char*)ptr, size );
|
||||||
break;
|
break;
|
||||||
case QueueType::LockName:
|
case QueueType::LockName:
|
||||||
ptr = MemRead<uint64_t>( &item.lockName.name );
|
ptr = MemRead<uint64_t>( &item.lockName.name );
|
||||||
@ -1720,7 +1722,7 @@ static void FreeAssociatedMemory( const QueueItem& item )
|
|||||||
#ifndef TRACY_ON_DEMAND
|
#ifndef TRACY_ON_DEMAND
|
||||||
case QueueType::MessageAppInfo:
|
case QueueType::MessageAppInfo:
|
||||||
#endif
|
#endif
|
||||||
ptr = MemRead<uint64_t>( &item.message.text );
|
ptr = MemRead<uint64_t>( &item.messageFat.text );
|
||||||
tracy_free( (void*)ptr );
|
tracy_free( (void*)ptr );
|
||||||
break;
|
break;
|
||||||
case QueueType::ZoneBeginAllocSrcLoc:
|
case QueueType::ZoneBeginAllocSrcLoc:
|
||||||
@ -1842,19 +1844,20 @@ Profiler::DequeueStatus Profiler::Dequeue( moodycamel::ConsumerToken& token )
|
|||||||
case QueueType::MessageCallstack:
|
case QueueType::MessageCallstack:
|
||||||
ptr = MemRead<uint64_t>( &item->messageFat.text );
|
ptr = MemRead<uint64_t>( &item->messageFat.text );
|
||||||
size = MemRead<uint16_t>( &item->messageFat.size );
|
size = MemRead<uint16_t>( &item->messageFat.size );
|
||||||
SendString( ptr, (const char*)ptr, size, QueueType::CustomStringData );
|
SendSingleString( (const char*)ptr, size );
|
||||||
tracy_free( (void*)ptr );
|
tracy_free( (void*)ptr );
|
||||||
break;
|
break;
|
||||||
case QueueType::MessageColor:
|
case QueueType::MessageColor:
|
||||||
case QueueType::MessageColorCallstack:
|
case QueueType::MessageColorCallstack:
|
||||||
ptr = MemRead<uint64_t>( &item->messageColorFat.text );
|
ptr = MemRead<uint64_t>( &item->messageColorFat.text );
|
||||||
size = MemRead<uint16_t>( &item->messageColorFat.size );
|
size = MemRead<uint16_t>( &item->messageColorFat.size );
|
||||||
SendString( ptr, (const char*)ptr, size, QueueType::CustomStringData );
|
SendSingleString( (const char*)ptr, size );
|
||||||
tracy_free( (void*)ptr );
|
tracy_free( (void*)ptr );
|
||||||
break;
|
break;
|
||||||
case QueueType::MessageAppInfo:
|
case QueueType::MessageAppInfo:
|
||||||
ptr = MemRead<uint64_t>( &item->message.text );
|
ptr = MemRead<uint64_t>( &item->messageFat.text );
|
||||||
SendString( ptr, (const char*)ptr, QueueType::CustomStringData );
|
size = MemRead<uint16_t>( &item->messageFat.size );
|
||||||
|
SendSingleString( (const char*)ptr, size );
|
||||||
#ifndef TRACY_ON_DEMAND
|
#ifndef TRACY_ON_DEMAND
|
||||||
tracy_free( (void*)ptr );
|
tracy_free( (void*)ptr );
|
||||||
#endif
|
#endif
|
||||||
|
@ -298,8 +298,8 @@ public:
|
|||||||
if( !GetProfiler().IsConnected() ) return;
|
if( !GetProfiler().IsConnected() ) return;
|
||||||
#endif
|
#endif
|
||||||
TracyLfqPrepare( callstack == 0 ? QueueType::MessageLiteral : QueueType::MessageLiteralCallstack );
|
TracyLfqPrepare( callstack == 0 ? QueueType::MessageLiteral : QueueType::MessageLiteralCallstack );
|
||||||
MemWrite( &item->message.time, GetTime() );
|
MemWrite( &item->messageLiteral.time, GetTime() );
|
||||||
MemWrite( &item->message.text, (uint64_t)txt );
|
MemWrite( &item->messageLiteral.text, (uint64_t)txt );
|
||||||
TracyLfqCommit;
|
TracyLfqCommit;
|
||||||
|
|
||||||
if( callstack != 0 ) tracy::GetProfiler().SendCallstack( callstack );
|
if( callstack != 0 ) tracy::GetProfiler().SendCallstack( callstack );
|
||||||
@ -331,11 +331,11 @@ public:
|
|||||||
if( !GetProfiler().IsConnected() ) return;
|
if( !GetProfiler().IsConnected() ) return;
|
||||||
#endif
|
#endif
|
||||||
TracyLfqPrepare( callstack == 0 ? QueueType::MessageLiteralColor : QueueType::MessageLiteralColorCallstack );
|
TracyLfqPrepare( callstack == 0 ? QueueType::MessageLiteralColor : QueueType::MessageLiteralColorCallstack );
|
||||||
MemWrite( &item->messageColor.time, GetTime() );
|
MemWrite( &item->messageColorLiteral.time, GetTime() );
|
||||||
MemWrite( &item->messageColor.text, (uint64_t)txt );
|
MemWrite( &item->messageColorLiteral.text, (uint64_t)txt );
|
||||||
MemWrite( &item->messageColor.r, uint8_t( ( color ) & 0xFF ) );
|
MemWrite( &item->messageColorLiteral.r, uint8_t( ( color ) & 0xFF ) );
|
||||||
MemWrite( &item->messageColor.g, uint8_t( ( color >> 8 ) & 0xFF ) );
|
MemWrite( &item->messageColorLiteral.g, uint8_t( ( color >> 8 ) & 0xFF ) );
|
||||||
MemWrite( &item->messageColor.b, uint8_t( ( color >> 16 ) & 0xFF ) );
|
MemWrite( &item->messageColorLiteral.b, uint8_t( ( color >> 16 ) & 0xFF ) );
|
||||||
TracyLfqCommit;
|
TracyLfqCommit;
|
||||||
|
|
||||||
if( callstack != 0 ) tracy::GetProfiler().SendCallstack( callstack );
|
if( callstack != 0 ) tracy::GetProfiler().SendCallstack( callstack );
|
||||||
@ -343,13 +343,14 @@ public:
|
|||||||
|
|
||||||
static tracy_force_inline void MessageAppInfo( const char* txt, size_t size )
|
static tracy_force_inline void MessageAppInfo( const char* txt, size_t size )
|
||||||
{
|
{
|
||||||
|
assert( size < std::numeric_limits<uint16_t>::max() );
|
||||||
InitRPMallocThread();
|
InitRPMallocThread();
|
||||||
auto ptr = (char*)tracy_malloc( size+1 );
|
auto ptr = (char*)tracy_malloc( size );
|
||||||
memcpy( ptr, txt, size );
|
memcpy( ptr, txt, size );
|
||||||
ptr[size] = '\0';
|
|
||||||
TracyLfqPrepare( QueueType::MessageAppInfo );
|
TracyLfqPrepare( QueueType::MessageAppInfo );
|
||||||
MemWrite( &item->message.time, GetTime() );
|
MemWrite( &item->messageFat.time, GetTime() );
|
||||||
MemWrite( &item->message.text, (uint64_t)ptr );
|
MemWrite( &item->messageFat.text, (uint64_t)ptr );
|
||||||
|
MemWrite( &item->messageFat.size, (uint16_t)size );
|
||||||
|
|
||||||
#ifdef TRACY_ON_DEMAND
|
#ifdef TRACY_ON_DEMAND
|
||||||
GetProfiler().DeferItem( *item );
|
GetProfiler().DeferItem( *item );
|
||||||
|
@ -251,7 +251,6 @@ struct QueuePlotData
|
|||||||
struct QueueMessage
|
struct QueueMessage
|
||||||
{
|
{
|
||||||
int64_t time;
|
int64_t time;
|
||||||
uint64_t text; // ptr
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct QueueMessageColor : public QueueMessage
|
struct QueueMessageColor : public QueueMessage
|
||||||
@ -261,13 +260,25 @@ struct QueueMessageColor : public QueueMessage
|
|||||||
uint8_t b;
|
uint8_t b;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct QueueMessageLiteral : public QueueMessage
|
||||||
|
{
|
||||||
|
uint64_t text; // ptr
|
||||||
|
};
|
||||||
|
|
||||||
|
struct QueueMessageColorLiteral : public QueueMessageColor
|
||||||
|
{
|
||||||
|
uint64_t text; // ptr
|
||||||
|
};
|
||||||
|
|
||||||
struct QueueMessageFat : public QueueMessage
|
struct QueueMessageFat : public QueueMessage
|
||||||
{
|
{
|
||||||
|
uint64_t text; // ptr
|
||||||
uint16_t size;
|
uint16_t size;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct QueueMessageColorFat : public QueueMessageColor
|
struct QueueMessageColorFat : public QueueMessageColor
|
||||||
{
|
{
|
||||||
|
uint64_t text; // ptr
|
||||||
uint16_t size;
|
uint16_t size;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -495,6 +506,8 @@ struct QueueItem
|
|||||||
QueuePlotData plotData;
|
QueuePlotData plotData;
|
||||||
QueueMessage message;
|
QueueMessage message;
|
||||||
QueueMessageColor messageColor;
|
QueueMessageColor messageColor;
|
||||||
|
QueueMessageLiteral messageLiteral;
|
||||||
|
QueueMessageColorLiteral messageColorLiteral;
|
||||||
QueueMessageFat messageFat;
|
QueueMessageFat messageFat;
|
||||||
QueueMessageColorFat messageColorFat;
|
QueueMessageColorFat messageColorFat;
|
||||||
QueueGpuNewContext gpuNewContext;
|
QueueGpuNewContext gpuNewContext;
|
||||||
@ -590,10 +603,10 @@ static constexpr size_t QueueDataSize[] = {
|
|||||||
sizeof( QueueHeader ) + sizeof( QueueLockAnnounce ),
|
sizeof( QueueHeader ) + sizeof( QueueLockAnnounce ),
|
||||||
sizeof( QueueHeader ) + sizeof( QueueLockTerminate ),
|
sizeof( QueueHeader ) + sizeof( QueueLockTerminate ),
|
||||||
sizeof( QueueHeader ) + sizeof( QueueLockMark ),
|
sizeof( QueueHeader ) + sizeof( QueueLockMark ),
|
||||||
sizeof( QueueHeader ) + sizeof( QueueMessage ), // literal
|
sizeof( QueueHeader ) + sizeof( QueueMessageLiteral ),
|
||||||
sizeof( QueueHeader ) + sizeof( QueueMessageColor ), // literal
|
sizeof( QueueHeader ) + sizeof( QueueMessageColorLiteral ),
|
||||||
sizeof( QueueHeader ) + sizeof( QueueMessage ), // literal, callstack
|
sizeof( QueueHeader ) + sizeof( QueueMessageLiteral ), // callstack
|
||||||
sizeof( QueueHeader ) + sizeof( QueueMessageColor ), // literal, callstack
|
sizeof( QueueHeader ) + sizeof( QueueMessageColorLiteral ), // callstack
|
||||||
sizeof( QueueHeader ) + sizeof( QueueGpuNewContext ),
|
sizeof( QueueHeader ) + sizeof( QueueGpuNewContext ),
|
||||||
sizeof( QueueHeader ) + sizeof( QueueCallstackFrameSize ),
|
sizeof( QueueHeader ) + sizeof( QueueCallstackFrameSize ),
|
||||||
sizeof( QueueHeader ) + sizeof( QueueCallstackFrame ),
|
sizeof( QueueHeader ) + sizeof( QueueCallstackFrame ),
|
||||||
|
@ -3947,25 +3947,25 @@ bool Worker::Process( const QueueItem& ev )
|
|||||||
ProcessMessage( ev.message );
|
ProcessMessage( ev.message );
|
||||||
break;
|
break;
|
||||||
case QueueType::MessageLiteral:
|
case QueueType::MessageLiteral:
|
||||||
ProcessMessageLiteral( ev.message );
|
ProcessMessageLiteral( ev.messageLiteral );
|
||||||
break;
|
break;
|
||||||
case QueueType::MessageColor:
|
case QueueType::MessageColor:
|
||||||
ProcessMessageColor( ev.messageColor );
|
ProcessMessageColor( ev.messageColor );
|
||||||
break;
|
break;
|
||||||
case QueueType::MessageLiteralColor:
|
case QueueType::MessageLiteralColor:
|
||||||
ProcessMessageLiteralColor( ev.messageColor );
|
ProcessMessageLiteralColor( ev.messageColorLiteral );
|
||||||
break;
|
break;
|
||||||
case QueueType::MessageCallstack:
|
case QueueType::MessageCallstack:
|
||||||
ProcessMessageCallstack( ev.message );
|
ProcessMessageCallstack( ev.message );
|
||||||
break;
|
break;
|
||||||
case QueueType::MessageLiteralCallstack:
|
case QueueType::MessageLiteralCallstack:
|
||||||
ProcessMessageLiteralCallstack( ev.message );
|
ProcessMessageLiteralCallstack( ev.messageLiteral );
|
||||||
break;
|
break;
|
||||||
case QueueType::MessageColorCallstack:
|
case QueueType::MessageColorCallstack:
|
||||||
ProcessMessageColorCallstack( ev.messageColor );
|
ProcessMessageColorCallstack( ev.messageColor );
|
||||||
break;
|
break;
|
||||||
case QueueType::MessageLiteralColorCallstack:
|
case QueueType::MessageLiteralColorCallstack:
|
||||||
ProcessMessageLiteralColorCallstack( ev.messageColor );
|
ProcessMessageLiteralColorCallstack( ev.messageColorLiteral );
|
||||||
break;
|
break;
|
||||||
case QueueType::MessageAppInfo:
|
case QueueType::MessageAppInfo:
|
||||||
ProcessMessageAppInfo( ev.message );
|
ProcessMessageAppInfo( ev.message );
|
||||||
@ -4810,21 +4810,18 @@ void Worker::ProcessPlotConfig( const QueuePlotConfig& ev )
|
|||||||
|
|
||||||
void Worker::ProcessMessage( const QueueMessage& ev )
|
void Worker::ProcessMessage( const QueueMessage& ev )
|
||||||
{
|
{
|
||||||
auto it = m_pendingCustomStrings.find( ev.text );
|
|
||||||
assert( it != m_pendingCustomStrings.end() );
|
|
||||||
auto msg = m_slab.Alloc<MessageData>();
|
auto msg = m_slab.Alloc<MessageData>();
|
||||||
const auto time = TscTime( ev.time - m_data.baseTime );
|
const auto time = TscTime( ev.time - m_data.baseTime );
|
||||||
msg->time = time;
|
msg->time = time;
|
||||||
msg->ref = StringRef( StringRef::Type::Idx, it->second.idx );
|
msg->ref = StringRef( StringRef::Type::Idx, GetSingleStringIdx() );
|
||||||
msg->thread = CompressThread( m_threadCtx );
|
msg->thread = CompressThread( m_threadCtx );
|
||||||
msg->color = 0xFFFFFFFF;
|
msg->color = 0xFFFFFFFF;
|
||||||
msg->callstack.SetVal( 0 );
|
msg->callstack.SetVal( 0 );
|
||||||
if( m_data.lastTime < time ) m_data.lastTime = time;
|
if( m_data.lastTime < time ) m_data.lastTime = time;
|
||||||
InsertMessageData( msg );
|
InsertMessageData( msg );
|
||||||
m_pendingCustomStrings.erase( it );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Worker::ProcessMessageLiteral( const QueueMessage& ev )
|
void Worker::ProcessMessageLiteral( const QueueMessageLiteral& ev )
|
||||||
{
|
{
|
||||||
CheckString( ev.text );
|
CheckString( ev.text );
|
||||||
auto msg = m_slab.Alloc<MessageData>();
|
auto msg = m_slab.Alloc<MessageData>();
|
||||||
@ -4840,21 +4837,18 @@ void Worker::ProcessMessageLiteral( const QueueMessage& ev )
|
|||||||
|
|
||||||
void Worker::ProcessMessageColor( const QueueMessageColor& ev )
|
void Worker::ProcessMessageColor( const QueueMessageColor& ev )
|
||||||
{
|
{
|
||||||
auto it = m_pendingCustomStrings.find( ev.text );
|
|
||||||
assert( it != m_pendingCustomStrings.end() );
|
|
||||||
auto msg = m_slab.Alloc<MessageData>();
|
auto msg = m_slab.Alloc<MessageData>();
|
||||||
const auto time = TscTime( ev.time - m_data.baseTime );
|
const auto time = TscTime( ev.time - m_data.baseTime );
|
||||||
msg->time = time;
|
msg->time = time;
|
||||||
msg->ref = StringRef( StringRef::Type::Idx, it->second.idx );
|
msg->ref = StringRef( StringRef::Type::Idx, GetSingleStringIdx() );
|
||||||
msg->thread = CompressThread( m_threadCtx );
|
msg->thread = CompressThread( m_threadCtx );
|
||||||
msg->color = 0xFF000000 | ( ev.r << 16 ) | ( ev.g << 8 ) | ev.b;
|
msg->color = 0xFF000000 | ( ev.r << 16 ) | ( ev.g << 8 ) | ev.b;
|
||||||
msg->callstack.SetVal( 0 );
|
msg->callstack.SetVal( 0 );
|
||||||
if( m_data.lastTime < time ) m_data.lastTime = time;
|
if( m_data.lastTime < time ) m_data.lastTime = time;
|
||||||
InsertMessageData( msg );
|
InsertMessageData( msg );
|
||||||
m_pendingCustomStrings.erase( it );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Worker::ProcessMessageLiteralColor( const QueueMessageColor& ev )
|
void Worker::ProcessMessageLiteralColor( const QueueMessageColorLiteral& ev )
|
||||||
{
|
{
|
||||||
CheckString( ev.text );
|
CheckString( ev.text );
|
||||||
auto msg = m_slab.Alloc<MessageData>();
|
auto msg = m_slab.Alloc<MessageData>();
|
||||||
@ -4876,7 +4870,7 @@ void Worker::ProcessMessageCallstack( const QueueMessage& ev )
|
|||||||
next.type = NextCallstackType::Message;
|
next.type = NextCallstackType::Message;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Worker::ProcessMessageLiteralCallstack( const QueueMessage& ev )
|
void Worker::ProcessMessageLiteralCallstack( const QueueMessageLiteral& ev )
|
||||||
{
|
{
|
||||||
ProcessMessageLiteral( ev );
|
ProcessMessageLiteral( ev );
|
||||||
|
|
||||||
@ -4892,7 +4886,7 @@ void Worker::ProcessMessageColorCallstack( const QueueMessageColor& ev )
|
|||||||
next.type = NextCallstackType::Message;
|
next.type = NextCallstackType::Message;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Worker::ProcessMessageLiteralColorCallstack( const QueueMessageColor& ev )
|
void Worker::ProcessMessageLiteralColorCallstack( const QueueMessageColorLiteral& ev )
|
||||||
{
|
{
|
||||||
ProcessMessageLiteralColor( ev );
|
ProcessMessageLiteralColor( ev );
|
||||||
|
|
||||||
@ -4902,12 +4896,9 @@ void Worker::ProcessMessageLiteralColorCallstack( const QueueMessageColor& ev )
|
|||||||
|
|
||||||
void Worker::ProcessMessageAppInfo( const QueueMessage& ev )
|
void Worker::ProcessMessageAppInfo( const QueueMessage& ev )
|
||||||
{
|
{
|
||||||
auto it = m_pendingCustomStrings.find( ev.text );
|
m_data.appInfo.push_back( StringRef( StringRef::Type::Idx, GetSingleStringIdx() ) );
|
||||||
assert( it != m_pendingCustomStrings.end() );
|
|
||||||
m_data.appInfo.push_back( StringRef( StringRef::Type::Idx, it->second.idx ) );
|
|
||||||
const auto time = TscTime( ev.time - m_data.baseTime );
|
const auto time = TscTime( ev.time - m_data.baseTime );
|
||||||
if( m_data.lastTime < time ) m_data.lastTime = time;
|
if( m_data.lastTime < time ) m_data.lastTime = time;
|
||||||
m_pendingCustomStrings.erase( it );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Worker::ProcessGpuNewContext( const QueueGpuNewContext& ev )
|
void Worker::ProcessGpuNewContext( const QueueGpuNewContext& ev )
|
||||||
|
@ -630,13 +630,13 @@ private:
|
|||||||
tracy_force_inline void ProcessPlotData( const QueuePlotData& ev );
|
tracy_force_inline void ProcessPlotData( const QueuePlotData& ev );
|
||||||
tracy_force_inline void ProcessPlotConfig( const QueuePlotConfig& ev );
|
tracy_force_inline void ProcessPlotConfig( const QueuePlotConfig& ev );
|
||||||
tracy_force_inline void ProcessMessage( const QueueMessage& ev );
|
tracy_force_inline void ProcessMessage( const QueueMessage& ev );
|
||||||
tracy_force_inline void ProcessMessageLiteral( const QueueMessage& ev );
|
tracy_force_inline void ProcessMessageLiteral( const QueueMessageLiteral& ev );
|
||||||
tracy_force_inline void ProcessMessageColor( const QueueMessageColor& ev );
|
tracy_force_inline void ProcessMessageColor( const QueueMessageColor& ev );
|
||||||
tracy_force_inline void ProcessMessageLiteralColor( const QueueMessageColor& ev );
|
tracy_force_inline void ProcessMessageLiteralColor( const QueueMessageColorLiteral& ev );
|
||||||
tracy_force_inline void ProcessMessageCallstack( const QueueMessage& ev );
|
tracy_force_inline void ProcessMessageCallstack( const QueueMessage& ev );
|
||||||
tracy_force_inline void ProcessMessageLiteralCallstack( const QueueMessage& ev );
|
tracy_force_inline void ProcessMessageLiteralCallstack( const QueueMessageLiteral& ev );
|
||||||
tracy_force_inline void ProcessMessageColorCallstack( const QueueMessageColor& ev );
|
tracy_force_inline void ProcessMessageColorCallstack( const QueueMessageColor& ev );
|
||||||
tracy_force_inline void ProcessMessageLiteralColorCallstack( const QueueMessageColor& ev );
|
tracy_force_inline void ProcessMessageLiteralColorCallstack( const QueueMessageColorLiteral& ev );
|
||||||
tracy_force_inline void ProcessMessageAppInfo( const QueueMessage& ev );
|
tracy_force_inline void ProcessMessageAppInfo( const QueueMessage& ev );
|
||||||
tracy_force_inline void ProcessGpuNewContext( const QueueGpuNewContext& ev );
|
tracy_force_inline void ProcessGpuNewContext( const QueueGpuNewContext& ev );
|
||||||
tracy_force_inline void ProcessGpuZoneBegin( const QueueGpuZoneBegin& ev, bool serial );
|
tracy_force_inline void ProcessGpuZoneBegin( const QueueGpuZoneBegin& ev, bool serial );
|
||||||
|
Loading…
x
Reference in New Issue
Block a user