1
0
mirror of https://github.com/wolfpld/tracy synced 2025-04-30 04:43:53 +00:00

Favor transfer of zones without predicted payload.

This commit is contained in:
Bartosz Taudul 2017-11-22 02:28:12 +01:00
parent 630db7112a
commit c431747f06
2 changed files with 29 additions and 24 deletions

View File

@ -269,6 +269,8 @@ Profiler::DequeueStatus Profiler::Dequeue( moodycamel::ConsumerToken& token )
while( item != end ) while( item != end )
{ {
uint64_t ptr; uint64_t ptr;
if( item->hdr.idx < (int)QueueType::Terminate )
{
switch( item->hdr.type ) switch( item->hdr.type )
{ {
case QueueType::ZoneText: case QueueType::ZoneText:
@ -287,8 +289,10 @@ Profiler::DequeueStatus Profiler::Dequeue( moodycamel::ConsumerToken& token )
tracy_free( (void*)ptr ); tracy_free( (void*)ptr );
break; break;
default: default:
assert( false );
break; break;
} }
}
if( !AppendData( item, QueueDataSize[item->hdr.idx] ) ) return ConnectionLost; if( !AppendData( item, QueueDataSize[item->hdr.idx] ) ) return ConnectionLost;
item++; item++;
} }

View File

@ -8,19 +8,19 @@ namespace tracy
enum class QueueType : uint8_t enum class QueueType : uint8_t
{ {
ZoneText,
Message,
ZoneBeginAllocSrcLoc,
Terminate, Terminate,
ZoneBegin, ZoneBegin,
ZoneBeginAllocSrcLoc,
ZoneEnd, ZoneEnd,
FrameMarkMsg, FrameMarkMsg,
SourceLocation, SourceLocation,
ZoneText,
LockWait, LockWait,
LockObtain, LockObtain,
LockRelease, LockRelease,
LockMark, LockMark,
PlotData, PlotData,
Message,
MessageLiteral, MessageLiteral,
GpuNewContext, GpuNewContext,
GpuZoneBegin, GpuZoneBegin,
@ -200,19 +200,20 @@ struct QueueItem
enum { QueueItemSize = sizeof( QueueItem ) }; enum { QueueItemSize = sizeof( QueueItem ) };
static const size_t QueueDataSize[] = { static const size_t QueueDataSize[] = {
sizeof( QueueHeader ) + sizeof( QueueZoneText ),
sizeof( QueueHeader ) + sizeof( QueueMessage ),
sizeof( QueueHeader ) + sizeof( QueueZoneBegin ), // allocated source location
// above items must be first
sizeof( QueueHeader ), // terminate sizeof( QueueHeader ), // terminate
sizeof( QueueHeader ) + sizeof( QueueZoneBegin ), sizeof( QueueHeader ) + sizeof( QueueZoneBegin ),
sizeof( QueueHeader ) + sizeof( QueueZoneBegin ), // allocated source location
sizeof( QueueHeader ) + sizeof( QueueZoneEnd ), sizeof( QueueHeader ) + sizeof( QueueZoneEnd ),
sizeof( QueueHeader ) + sizeof( QueueFrameMark ), sizeof( QueueHeader ) + sizeof( QueueFrameMark ),
sizeof( QueueHeader ) + sizeof( QueueSourceLocation ), sizeof( QueueHeader ) + sizeof( QueueSourceLocation ),
sizeof( QueueHeader ) + sizeof( QueueZoneText ),
sizeof( QueueHeader ) + sizeof( QueueLockWait ), sizeof( QueueHeader ) + sizeof( QueueLockWait ),
sizeof( QueueHeader ) + sizeof( QueueLockObtain ), sizeof( QueueHeader ) + sizeof( QueueLockObtain ),
sizeof( QueueHeader ) + sizeof( QueueLockRelease ), sizeof( QueueHeader ) + sizeof( QueueLockRelease ),
sizeof( QueueHeader ) + sizeof( QueueLockMark ), sizeof( QueueHeader ) + sizeof( QueueLockMark ),
sizeof( QueueHeader ) + sizeof( QueuePlotData ), sizeof( QueueHeader ) + sizeof( QueuePlotData ),
sizeof( QueueHeader ) + sizeof( QueueMessage ),
sizeof( QueueHeader ) + sizeof( QueueMessage ), // literal sizeof( QueueHeader ) + sizeof( QueueMessage ), // literal
sizeof( QueueHeader ) + sizeof( QueueGpuNewContext ), sizeof( QueueHeader ) + sizeof( QueueGpuNewContext ),
sizeof( QueueHeader ) + sizeof( QueueGpuZoneBegin ), sizeof( QueueHeader ) + sizeof( QueueGpuZoneBegin ),