mirror of
https://github.com/wolfpld/tracy.git
synced 2026-06-08 00:23:47 +00:00
MemRead deduces returned type from pointer.
This commit is contained in:
@@ -2015,22 +2015,22 @@ void Profiler::Worker()
|
||||
{
|
||||
uint64_t ptr;
|
||||
uint16_t size;
|
||||
const auto idx = MemRead<uint8_t>( &item.hdr.idx );
|
||||
const auto idx = MemRead( &item.hdr.idx );
|
||||
switch( (QueueType)idx )
|
||||
{
|
||||
case QueueType::MessageAppInfo:
|
||||
ptr = MemRead<TaggedUserlandAddress>( &item.messageFat.textAndMetadata ).GetAddress();
|
||||
size = MemRead<uint16_t>( &item.messageFat.size );
|
||||
ptr = MemRead( &item.messageFat.textAndMetadata ).GetAddress();
|
||||
size = MemRead( &item.messageFat.size );
|
||||
SendSingleString( (const char*)ptr, size );
|
||||
break;
|
||||
case QueueType::LockName:
|
||||
ptr = MemRead<uint64_t>( &item.lockNameFat.name );
|
||||
size = MemRead<uint16_t>( &item.lockNameFat.size );
|
||||
ptr = MemRead( &item.lockNameFat.name );
|
||||
size = MemRead( &item.lockNameFat.size );
|
||||
SendSingleString( (const char*)ptr, size );
|
||||
break;
|
||||
case QueueType::GpuContextName:
|
||||
ptr = MemRead<uint64_t>( &item.gpuContextNameFat.ptr );
|
||||
size = MemRead<uint16_t>( &item.gpuContextNameFat.size );
|
||||
ptr = MemRead( &item.gpuContextNameFat.ptr );
|
||||
size = MemRead( &item.gpuContextNameFat.size );
|
||||
SendSingleString( (const char*)ptr, size );
|
||||
break;
|
||||
default:
|
||||
@@ -2329,12 +2329,12 @@ static void FreeAssociatedMemory( const QueueItem& item )
|
||||
{
|
||||
case QueueType::ZoneText:
|
||||
case QueueType::ZoneName:
|
||||
ptr = MemRead<uint64_t>( &item.zoneTextFat.text );
|
||||
ptr = MemRead( &item.zoneTextFat.text );
|
||||
tracy_free( (void*)ptr );
|
||||
break;
|
||||
case QueueType::MessageColor:
|
||||
case QueueType::MessageColorCallstack:
|
||||
ptr = MemRead<TaggedUserlandAddress>( &item.messageColorFat.textAndMetadata ).GetAddress();
|
||||
ptr = MemRead( &item.messageColorFat.textAndMetadata ).GetAddress();
|
||||
tracy_free( (void*)ptr );
|
||||
break;
|
||||
case QueueType::Message:
|
||||
@@ -2342,47 +2342,47 @@ static void FreeAssociatedMemory( const QueueItem& item )
|
||||
#ifndef TRACY_ON_DEMAND
|
||||
case QueueType::MessageAppInfo:
|
||||
#endif
|
||||
ptr = MemRead<TaggedUserlandAddress>( &item.messageFat.textAndMetadata ).GetAddress();
|
||||
ptr = MemRead( &item.messageFat.textAndMetadata ).GetAddress();
|
||||
tracy_free( (void*)ptr );
|
||||
break;
|
||||
case QueueType::ZoneBeginAllocSrcLoc:
|
||||
case QueueType::ZoneBeginAllocSrcLocCallstack:
|
||||
ptr = MemRead<uint64_t>( &item.zoneBegin.srcloc );
|
||||
ptr = MemRead( &item.zoneBegin.srcloc );
|
||||
tracy_free( (void*)ptr );
|
||||
break;
|
||||
case QueueType::GpuZoneBeginAllocSrcLoc:
|
||||
case QueueType::GpuZoneBeginAllocSrcLocCallstack:
|
||||
case QueueType::GpuZoneBeginAllocSrcLocSerial:
|
||||
case QueueType::GpuZoneBeginAllocSrcLocCallstackSerial:
|
||||
ptr = MemRead<uint64_t>( &item.gpuZoneBegin.srcloc );
|
||||
ptr = MemRead( &item.gpuZoneBegin.srcloc );
|
||||
tracy_free( (void*)ptr );
|
||||
break;
|
||||
case QueueType::CallstackSerial:
|
||||
case QueueType::Callstack:
|
||||
ptr = MemRead<uint64_t>( &item.callstackFat.ptr );
|
||||
ptr = MemRead( &item.callstackFat.ptr );
|
||||
tracy_free( (void*)ptr );
|
||||
break;
|
||||
case QueueType::CallstackAlloc:
|
||||
ptr = MemRead<uint64_t>( &item.callstackAllocFat.nativePtr );
|
||||
ptr = MemRead( &item.callstackAllocFat.nativePtr );
|
||||
tracy_free( (void*)ptr );
|
||||
ptr = MemRead<uint64_t>( &item.callstackAllocFat.ptr );
|
||||
ptr = MemRead( &item.callstackAllocFat.ptr );
|
||||
tracy_free( (void*)ptr );
|
||||
break;
|
||||
case QueueType::CallstackSample:
|
||||
case QueueType::CallstackSampleContextSwitch:
|
||||
ptr = MemRead<uint64_t>( &item.callstackSampleFat.ptr );
|
||||
ptr = MemRead( &item.callstackSampleFat.ptr );
|
||||
tracy_free( (void*)ptr );
|
||||
break;
|
||||
case QueueType::FrameImage:
|
||||
ptr = MemRead<uint64_t>( &item.frameImageFat.image );
|
||||
ptr = MemRead( &item.frameImageFat.image );
|
||||
tracy_free( (void*)ptr );
|
||||
break;
|
||||
#ifdef TRACY_HAS_CALLSTACK
|
||||
case QueueType::CallstackFrameSize:
|
||||
{
|
||||
InitAllocator();
|
||||
auto size = MemRead<uint8_t>( &item.callstackFrameSizeFat.size );
|
||||
auto data = (const CallstackEntry*)MemRead<uint64_t>( &item.callstackFrameSizeFat.data );
|
||||
auto size = MemRead( &item.callstackFrameSizeFat.size );
|
||||
auto data = (const CallstackEntry*)MemRead( &item.callstackFrameSizeFat.data );
|
||||
for( uint8_t i=0; i<size; i++ )
|
||||
{
|
||||
const auto& frame = data[i];
|
||||
@@ -2394,31 +2394,31 @@ static void FreeAssociatedMemory( const QueueItem& item )
|
||||
}
|
||||
case QueueType::SymbolInformation:
|
||||
{
|
||||
uint8_t needFree = MemRead<uint8_t>( &item.symbolInformationFat.needFree );
|
||||
uint8_t needFree = MemRead( &item.symbolInformationFat.needFree );
|
||||
if( needFree )
|
||||
{
|
||||
ptr = MemRead<uint64_t>( &item.symbolInformationFat.fileString );
|
||||
ptr = MemRead( &item.symbolInformationFat.fileString );
|
||||
tracy_free( (void*)ptr );
|
||||
}
|
||||
break;
|
||||
}
|
||||
case QueueType::SymbolCodeMetadata:
|
||||
ptr = MemRead<uint64_t>( &item.symbolCodeMetadata.ptr );
|
||||
ptr = MemRead( &item.symbolCodeMetadata.ptr );
|
||||
tracy_free( (void*)ptr );
|
||||
break;
|
||||
#endif
|
||||
#ifndef TRACY_ON_DEMAND
|
||||
case QueueType::LockName:
|
||||
ptr = MemRead<uint64_t>( &item.lockNameFat.name );
|
||||
ptr = MemRead( &item.lockNameFat.name );
|
||||
tracy_free( (void*)ptr );
|
||||
break;
|
||||
case QueueType::GpuContextName:
|
||||
ptr = MemRead<uint64_t>( &item.gpuContextNameFat.ptr );
|
||||
ptr = MemRead( &item.gpuContextNameFat.ptr );
|
||||
tracy_free( (void*)ptr );
|
||||
break;
|
||||
#endif
|
||||
case QueueType::GpuAnnotationName:
|
||||
ptr = MemRead<uint64_t>( &item.gpuAnnotationNameFat.ptr );
|
||||
ptr = MemRead( &item.gpuAnnotationNameFat.ptr );
|
||||
tracy_free( (void*)ptr );
|
||||
break;
|
||||
#ifdef TRACY_ON_DEMAND
|
||||
@@ -2429,14 +2429,14 @@ static void FreeAssociatedMemory( const QueueItem& item )
|
||||
#endif
|
||||
#ifdef TRACY_HAS_SYSTEM_TRACING
|
||||
case QueueType::ExternalNameMetadata:
|
||||
ptr = MemRead<uint64_t>( &item.externalNameMetadata.name );
|
||||
ptr = MemRead( &item.externalNameMetadata.name );
|
||||
tracy_free( (void*)ptr );
|
||||
ptr = MemRead<uint64_t>( &item.externalNameMetadata.threadName );
|
||||
ptr = MemRead( &item.externalNameMetadata.threadName );
|
||||
tracy_free_fast( (void*)ptr );
|
||||
break;
|
||||
#endif
|
||||
case QueueType::SourceCodeMetadata:
|
||||
ptr = MemRead<uint64_t>( &item.sourceCodeMetadata.ptr );
|
||||
ptr = MemRead( &item.sourceCodeMetadata.ptr );
|
||||
tracy_free( (void*)ptr );
|
||||
break;
|
||||
default:
|
||||
@@ -2497,24 +2497,24 @@ Profiler::DequeueStatus Profiler::Dequeue( moodycamel::ConsumerToken& token )
|
||||
{
|
||||
uint64_t ptr;
|
||||
uint16_t size;
|
||||
auto idx = MemRead<uint8_t>( &item->hdr.idx );
|
||||
auto idx = MemRead( &item->hdr.idx );
|
||||
if( idx < (int)QueueType::Terminate )
|
||||
{
|
||||
switch( (QueueType)idx )
|
||||
{
|
||||
case QueueType::ZoneText:
|
||||
case QueueType::ZoneName:
|
||||
ptr = MemRead<uint64_t>( &item->zoneTextFat.text );
|
||||
size = MemRead<uint16_t>( &item->zoneTextFat.size );
|
||||
ptr = MemRead( &item->zoneTextFat.text );
|
||||
size = MemRead( &item->zoneTextFat.size );
|
||||
SendSingleString( (const char*)ptr, size );
|
||||
tracy_free_fast( (void*)ptr );
|
||||
break;
|
||||
case QueueType::Message:
|
||||
case QueueType::MessageCallstack:
|
||||
{
|
||||
TaggedUserlandAddress taggedPtr = MemRead<TaggedUserlandAddress>( &item->messageFat.textAndMetadata );
|
||||
TaggedUserlandAddress taggedPtr = MemRead( &item->messageFat.textAndMetadata );
|
||||
ptr = taggedPtr.GetAddress();
|
||||
size = MemRead<uint16_t>( &item->messageFat.size );
|
||||
size = MemRead( &item->messageFat.size );
|
||||
SendSingleString( (const char*)ptr, size );
|
||||
tracy_free_fast( (void*)ptr );
|
||||
|
||||
@@ -2530,9 +2530,9 @@ Profiler::DequeueStatus Profiler::Dequeue( moodycamel::ConsumerToken& token )
|
||||
case QueueType::MessageColor:
|
||||
case QueueType::MessageColorCallstack:
|
||||
{
|
||||
TaggedUserlandAddress taggedPtr = MemRead<TaggedUserlandAddress>( &item->messageColorFat.textAndMetadata );
|
||||
TaggedUserlandAddress taggedPtr = MemRead( &item->messageColorFat.textAndMetadata );
|
||||
ptr = taggedPtr.GetAddress();
|
||||
size = MemRead<uint16_t>( &item->messageColorFat.size );
|
||||
size = MemRead( &item->messageColorFat.size );
|
||||
SendSingleString( (const char*)ptr, size );
|
||||
tracy_free_fast( (void*)ptr );
|
||||
|
||||
@@ -2546,8 +2546,8 @@ Profiler::DequeueStatus Profiler::Dequeue( moodycamel::ConsumerToken& token )
|
||||
continue; // Next item since we sent it manually
|
||||
}
|
||||
case QueueType::MessageAppInfo:
|
||||
ptr = MemRead<TaggedUserlandAddress>( &item->messageFat.textAndMetadata ).GetAddress();
|
||||
size = MemRead<uint16_t>( &item->messageFat.size );
|
||||
ptr = MemRead( &item->messageFat.textAndMetadata ).GetAddress();
|
||||
size = MemRead( &item->messageFat.size );
|
||||
SendSingleString( (const char*)ptr, size );
|
||||
#ifndef TRACY_ON_DEMAND
|
||||
tracy_free_fast( (void*)ptr );
|
||||
@@ -2556,22 +2556,22 @@ Profiler::DequeueStatus Profiler::Dequeue( moodycamel::ConsumerToken& token )
|
||||
case QueueType::ZoneBeginAllocSrcLoc:
|
||||
case QueueType::ZoneBeginAllocSrcLocCallstack:
|
||||
{
|
||||
int64_t t = MemRead<int64_t>( &item->zoneBegin.time );
|
||||
int64_t t = MemRead( &item->zoneBegin.time );
|
||||
int64_t dt = t - refThread;
|
||||
refThread = t;
|
||||
MemWrite( &item->zoneBegin.time, dt );
|
||||
ptr = MemRead<uint64_t>( &item->zoneBegin.srcloc );
|
||||
ptr = MemRead( &item->zoneBegin.srcloc );
|
||||
SendSourceLocationPayload( ptr );
|
||||
tracy_free_fast( (void*)ptr );
|
||||
break;
|
||||
}
|
||||
case QueueType::Callstack:
|
||||
ptr = MemRead<uint64_t>( &item->callstackFat.ptr );
|
||||
ptr = MemRead( &item->callstackFat.ptr );
|
||||
SendCallstackPayload( ptr );
|
||||
tracy_free_fast( (void*)ptr );
|
||||
break;
|
||||
case QueueType::CallstackAlloc:
|
||||
ptr = MemRead<uint64_t>( &item->callstackAllocFat.nativePtr );
|
||||
ptr = MemRead( &item->callstackAllocFat.nativePtr );
|
||||
if( ptr != 0 )
|
||||
{
|
||||
const char* remove[] = { "lua_pcall", nullptr };
|
||||
@@ -2579,17 +2579,17 @@ Profiler::DequeueStatus Profiler::Dequeue( moodycamel::ConsumerToken& token )
|
||||
SendCallstackPayload( ptr );
|
||||
tracy_free_fast( (void*)ptr );
|
||||
}
|
||||
ptr = MemRead<uint64_t>( &item->callstackAllocFat.ptr );
|
||||
ptr = MemRead( &item->callstackAllocFat.ptr );
|
||||
SendCallstackAlloc( ptr );
|
||||
tracy_free_fast( (void*)ptr );
|
||||
break;
|
||||
case QueueType::CallstackSample:
|
||||
case QueueType::CallstackSampleContextSwitch:
|
||||
{
|
||||
ptr = MemRead<uint64_t>( &item->callstackSampleFat.ptr );
|
||||
ptr = MemRead( &item->callstackSampleFat.ptr );
|
||||
SendCallstackPayload64( ptr );
|
||||
tracy_free_fast( (void*)ptr );
|
||||
int64_t t = MemRead<int64_t>( &item->callstackSampleFat.time );
|
||||
int64_t t = MemRead( &item->callstackSampleFat.time );
|
||||
int64_t dt = t - refCtx;
|
||||
refCtx = t;
|
||||
if( dt >= 0 )
|
||||
@@ -2615,9 +2615,9 @@ Profiler::DequeueStatus Profiler::Dequeue( moodycamel::ConsumerToken& token )
|
||||
}
|
||||
case QueueType::FrameImage:
|
||||
{
|
||||
ptr = MemRead<uint64_t>( &item->frameImageFat.image );
|
||||
const auto w = MemRead<uint16_t>( &item->frameImageFat.w );
|
||||
const auto h = MemRead<uint16_t>( &item->frameImageFat.h );
|
||||
ptr = MemRead( &item->frameImageFat.image );
|
||||
const auto w = MemRead( &item->frameImageFat.w );
|
||||
const auto h = MemRead( &item->frameImageFat.h );
|
||||
const auto csz = size_t( w * h / 2 );
|
||||
SendLongString( ptr, (const char*)ptr, csz, QueueType::FrameImageData );
|
||||
tracy_free_fast( (void*)ptr );
|
||||
@@ -2626,14 +2626,14 @@ Profiler::DequeueStatus Profiler::Dequeue( moodycamel::ConsumerToken& token )
|
||||
case QueueType::ZoneBegin:
|
||||
case QueueType::ZoneBeginCallstack:
|
||||
{
|
||||
int64_t t = MemRead<int64_t>( &item->zoneBegin.time );
|
||||
int64_t t = MemRead( &item->zoneBegin.time );
|
||||
int64_t dt = t - refThread;
|
||||
refThread = t;
|
||||
if( dt >= 0 )
|
||||
{
|
||||
if( dt < ProtocolOffset16Bit )
|
||||
{
|
||||
const uint64_t srcloc = MemRead<uint64_t>( &item->zoneBegin.srcloc );
|
||||
const uint64_t srcloc = MemRead( &item->zoneBegin.srcloc );
|
||||
idx = QueueType( idx ) == QueueType::ZoneBegin ? (int)QueueType::ZoneBegin16 : (int)QueueType::ZoneBeginCallstack16;
|
||||
MemWrite( &item->hdr.idx, idx );
|
||||
MemWrite( &item->zoneBegin16.time, uint16_t( dt ) );
|
||||
@@ -2643,7 +2643,7 @@ Profiler::DequeueStatus Profiler::Dequeue( moodycamel::ConsumerToken& token )
|
||||
else if( dt < ProtocolOffset32Bit )
|
||||
{
|
||||
dt -= ProtocolOffset16Bit;
|
||||
const uint64_t srcloc = MemRead<uint64_t>( &item->zoneBegin.srcloc );
|
||||
const uint64_t srcloc = MemRead( &item->zoneBegin.srcloc );
|
||||
idx = QueueType( idx ) == QueueType::ZoneBegin ? (int)QueueType::ZoneBegin32 : (int)QueueType::ZoneBeginCallstack32;
|
||||
MemWrite( &item->hdr.idx, idx );
|
||||
MemWrite( &item->zoneBegin32.time, uint32_t( dt ) );
|
||||
@@ -2660,7 +2660,7 @@ Profiler::DequeueStatus Profiler::Dequeue( moodycamel::ConsumerToken& token )
|
||||
}
|
||||
case QueueType::ZoneEnd:
|
||||
{
|
||||
int64_t t = MemRead<int64_t>( &item->zoneEnd.time );
|
||||
int64_t t = MemRead( &item->zoneEnd.time );
|
||||
int64_t dt = t - refThread;
|
||||
refThread = t;
|
||||
if( dt >= 0 )
|
||||
@@ -2687,7 +2687,7 @@ Profiler::DequeueStatus Profiler::Dequeue( moodycamel::ConsumerToken& token )
|
||||
case QueueType::GpuZoneBegin:
|
||||
case QueueType::GpuZoneBeginCallstack:
|
||||
{
|
||||
int64_t t = MemRead<int64_t>( &item->gpuZoneBegin.cpuTime );
|
||||
int64_t t = MemRead( &item->gpuZoneBegin.cpuTime );
|
||||
int64_t dt = t - refThread;
|
||||
refThread = t;
|
||||
MemWrite( &item->gpuZoneBegin.cpuTime, dt );
|
||||
@@ -2696,34 +2696,34 @@ Profiler::DequeueStatus Profiler::Dequeue( moodycamel::ConsumerToken& token )
|
||||
case QueueType::GpuZoneBeginAllocSrcLoc:
|
||||
case QueueType::GpuZoneBeginAllocSrcLocCallstack:
|
||||
{
|
||||
int64_t t = MemRead<int64_t>( &item->gpuZoneBegin.cpuTime );
|
||||
int64_t t = MemRead( &item->gpuZoneBegin.cpuTime );
|
||||
int64_t dt = t - refThread;
|
||||
refThread = t;
|
||||
MemWrite( &item->gpuZoneBegin.cpuTime, dt );
|
||||
ptr = MemRead<uint64_t>( &item->gpuZoneBegin.srcloc );
|
||||
ptr = MemRead( &item->gpuZoneBegin.srcloc );
|
||||
SendSourceLocationPayload( ptr );
|
||||
tracy_free_fast( (void*)ptr );
|
||||
break;
|
||||
}
|
||||
case QueueType::GpuZoneEnd:
|
||||
{
|
||||
int64_t t = MemRead<int64_t>( &item->gpuZoneEnd.cpuTime );
|
||||
int64_t t = MemRead( &item->gpuZoneEnd.cpuTime );
|
||||
int64_t dt = t - refThread;
|
||||
refThread = t;
|
||||
MemWrite( &item->gpuZoneEnd.cpuTime, dt );
|
||||
break;
|
||||
}
|
||||
case QueueType::GpuContextName:
|
||||
ptr = MemRead<uint64_t>( &item->gpuContextNameFat.ptr );
|
||||
size = MemRead<uint16_t>( &item->gpuContextNameFat.size );
|
||||
ptr = MemRead( &item->gpuContextNameFat.ptr );
|
||||
size = MemRead( &item->gpuContextNameFat.size );
|
||||
SendSingleString( (const char*)ptr, size );
|
||||
#ifndef TRACY_ON_DEMAND
|
||||
tracy_free_fast( (void*)ptr );
|
||||
#endif
|
||||
break;
|
||||
case QueueType::GpuAnnotationName:
|
||||
ptr = MemRead<uint64_t>( &item->gpuAnnotationNameFat.ptr );
|
||||
size = MemRead<uint16_t>( &item->gpuAnnotationNameFat.size );
|
||||
ptr = MemRead( &item->gpuAnnotationNameFat.ptr );
|
||||
size = MemRead( &item->gpuAnnotationNameFat.size );
|
||||
SendSingleString( (const char*)ptr, size );
|
||||
tracy_free_fast( (void*)ptr );
|
||||
break;
|
||||
@@ -2731,7 +2731,7 @@ Profiler::DequeueStatus Profiler::Dequeue( moodycamel::ConsumerToken& token )
|
||||
case QueueType::PlotDataFloat:
|
||||
case QueueType::PlotDataDouble:
|
||||
{
|
||||
int64_t t = MemRead<int64_t>( &item->plotDataInt.time );
|
||||
int64_t t = MemRead( &item->plotDataInt.time );
|
||||
int64_t dt = t - refThread;
|
||||
refThread = t;
|
||||
MemWrite( &item->plotDataInt.time, dt );
|
||||
@@ -2739,7 +2739,7 @@ Profiler::DequeueStatus Profiler::Dequeue( moodycamel::ConsumerToken& token )
|
||||
}
|
||||
case QueueType::ContextSwitch:
|
||||
{
|
||||
int64_t t = MemRead<int64_t>( &item->contextSwitch.time );
|
||||
int64_t t = MemRead( &item->contextSwitch.time );
|
||||
int64_t dt = t - refCtx;
|
||||
refCtx = t;
|
||||
MemWrite( &item->contextSwitch.time, dt );
|
||||
@@ -2747,7 +2747,7 @@ Profiler::DequeueStatus Profiler::Dequeue( moodycamel::ConsumerToken& token )
|
||||
}
|
||||
case QueueType::ThreadWakeup:
|
||||
{
|
||||
int64_t t = MemRead<int64_t>( &item->threadWakeup.time );
|
||||
int64_t t = MemRead( &item->threadWakeup.time );
|
||||
int64_t dt = t - refCtx;
|
||||
refCtx = t;
|
||||
MemWrite( &item->threadWakeup.time, dt );
|
||||
@@ -2755,7 +2755,7 @@ Profiler::DequeueStatus Profiler::Dequeue( moodycamel::ConsumerToken& token )
|
||||
}
|
||||
case QueueType::GpuTime:
|
||||
{
|
||||
int64_t t = MemRead<int64_t>( &item->gpuTime.gpuTime );
|
||||
int64_t t = MemRead( &item->gpuTime.gpuTime );
|
||||
int64_t dt = t - refGpu;
|
||||
refGpu = t;
|
||||
MemWrite( &item->gpuTime.gpuTime, dt );
|
||||
@@ -2764,9 +2764,9 @@ Profiler::DequeueStatus Profiler::Dequeue( moodycamel::ConsumerToken& token )
|
||||
#ifdef TRACY_HAS_CALLSTACK
|
||||
case QueueType::CallstackFrameSize:
|
||||
{
|
||||
auto data = (const CallstackEntry*)MemRead<uint64_t>( &item->callstackFrameSizeFat.data );
|
||||
auto datasz = MemRead<uint8_t>( &item->callstackFrameSizeFat.size );
|
||||
auto imageName = (const char*)MemRead<uint64_t>( &item->callstackFrameSizeFat.imageName );
|
||||
auto data = (const CallstackEntry*)MemRead( &item->callstackFrameSizeFat.data );
|
||||
auto datasz = MemRead( &item->callstackFrameSizeFat.size );
|
||||
auto imageName = (const char*)MemRead( &item->callstackFrameSizeFat.imageName );
|
||||
SendSingleString( imageName );
|
||||
AppendData( item++, QueueDataSize[idx] );
|
||||
|
||||
@@ -2793,17 +2793,17 @@ Profiler::DequeueStatus Profiler::Dequeue( moodycamel::ConsumerToken& token )
|
||||
}
|
||||
case QueueType::SymbolInformation:
|
||||
{
|
||||
auto fileString = (const char*)MemRead<uint64_t>( &item->symbolInformationFat.fileString );
|
||||
auto needFree = MemRead<uint8_t>( &item->symbolInformationFat.needFree );
|
||||
auto fileString = (const char*)MemRead( &item->symbolInformationFat.fileString );
|
||||
auto needFree = MemRead( &item->symbolInformationFat.needFree );
|
||||
SendSingleString( fileString );
|
||||
if( needFree ) tracy_free_fast( (void*)fileString );
|
||||
break;
|
||||
}
|
||||
case QueueType::SymbolCodeMetadata:
|
||||
{
|
||||
auto symbol = MemRead<uint64_t>( &item->symbolCodeMetadata.symbol );
|
||||
auto ptr = (const char*)MemRead<uint64_t>( &item->symbolCodeMetadata.ptr );
|
||||
auto size = MemRead<uint32_t>( &item->symbolCodeMetadata.size );
|
||||
auto symbol = MemRead( &item->symbolCodeMetadata.symbol );
|
||||
auto ptr = (const char*)MemRead( &item->symbolCodeMetadata.ptr );
|
||||
auto size = MemRead( &item->symbolCodeMetadata.size );
|
||||
SendLongString( symbol, ptr, size, QueueType::SymbolCode );
|
||||
tracy_free_fast( (void*)ptr );
|
||||
++item;
|
||||
@@ -2813,9 +2813,9 @@ Profiler::DequeueStatus Profiler::Dequeue( moodycamel::ConsumerToken& token )
|
||||
#ifdef TRACY_HAS_SYSTEM_TRACING
|
||||
case QueueType::ExternalNameMetadata:
|
||||
{
|
||||
auto thread = MemRead<uint64_t>( &item->externalNameMetadata.thread );
|
||||
auto name = (const char*)MemRead<uint64_t>( &item->externalNameMetadata.name );
|
||||
auto threadName = (const char*)MemRead<uint64_t>( &item->externalNameMetadata.threadName );
|
||||
auto thread = MemRead( &item->externalNameMetadata.thread );
|
||||
auto name = (const char*)MemRead( &item->externalNameMetadata.name );
|
||||
auto threadName = (const char*)MemRead( &item->externalNameMetadata.threadName );
|
||||
SendString( thread, threadName, QueueType::ExternalThreadName );
|
||||
SendString( thread, name, QueueType::ExternalName );
|
||||
tracy_free_fast( (void*)threadName );
|
||||
@@ -2826,9 +2826,9 @@ Profiler::DequeueStatus Profiler::Dequeue( moodycamel::ConsumerToken& token )
|
||||
#endif
|
||||
case QueueType::SourceCodeMetadata:
|
||||
{
|
||||
auto ptr = (const char*)MemRead<uint64_t>( &item->sourceCodeMetadata.ptr );
|
||||
auto size = MemRead<uint32_t>( &item->sourceCodeMetadata.size );
|
||||
auto id = MemRead<uint32_t>( &item->sourceCodeMetadata.id );
|
||||
auto ptr = (const char*)MemRead( &item->sourceCodeMetadata.ptr );
|
||||
auto size = MemRead( &item->sourceCodeMetadata.size );
|
||||
auto id = MemRead( &item->sourceCodeMetadata.id );
|
||||
SendLongString( (uint64_t)id, ptr, size, QueueType::SourceCode );
|
||||
tracy_free_fast( (void*)ptr );
|
||||
++item;
|
||||
@@ -2868,10 +2868,10 @@ Profiler::DequeueStatus Profiler::DequeueContextSwitches( tracy::moodycamel::Con
|
||||
{
|
||||
FreeAssociatedMemory( *item );
|
||||
if( timeStop < 0 ) return;
|
||||
const auto idx = MemRead<uint8_t>( &item->hdr.idx );
|
||||
const auto idx = MemRead( &item->hdr.idx );
|
||||
if( idx == (uint8_t)QueueType::ContextSwitch )
|
||||
{
|
||||
const auto csTime = MemRead<int64_t>( &item->contextSwitch.time );
|
||||
const auto csTime = MemRead( &item->contextSwitch.time );
|
||||
if( csTime > timeStop )
|
||||
{
|
||||
timeStop = -1;
|
||||
@@ -2890,7 +2890,7 @@ Profiler::DequeueStatus Profiler::DequeueContextSwitches( tracy::moodycamel::Con
|
||||
}
|
||||
else if( idx == (uint8_t)QueueType::ThreadWakeup )
|
||||
{
|
||||
const auto csTime = MemRead<int64_t>( &item->threadWakeup.time );
|
||||
const auto csTime = MemRead( &item->threadWakeup.time );
|
||||
if( csTime > timeStop )
|
||||
{
|
||||
timeStop = -1;
|
||||
@@ -2918,7 +2918,7 @@ Profiler::DequeueStatus Profiler::DequeueContextSwitches( tracy::moodycamel::Con
|
||||
}
|
||||
|
||||
#define ThreadCtxCheckSerial( _name ) \
|
||||
uint32_t thread = MemRead<uint32_t>( &item->_name.thread ); \
|
||||
uint32_t thread = MemRead( &item->_name.thread ); \
|
||||
switch( ThreadCtxCheck( thread ) ) \
|
||||
{ \
|
||||
case ThreadCtxStatus::Same: break; \
|
||||
@@ -2964,20 +2964,20 @@ Profiler::DequeueStatus Profiler::DequeueSerial()
|
||||
while( item != end )
|
||||
{
|
||||
uint64_t ptr;
|
||||
auto idx = MemRead<uint8_t>( &item->hdr.idx );
|
||||
auto idx = MemRead( &item->hdr.idx );
|
||||
if( idx < (int)QueueType::Terminate )
|
||||
{
|
||||
switch( (QueueType)idx )
|
||||
{
|
||||
case QueueType::CallstackSerial:
|
||||
ptr = MemRead<uint64_t>( &item->callstackFat.ptr );
|
||||
ptr = MemRead( &item->callstackFat.ptr );
|
||||
SendCallstackPayload( ptr );
|
||||
tracy_free_fast( (void*)ptr );
|
||||
break;
|
||||
case QueueType::LockWait:
|
||||
case QueueType::LockSharedWait:
|
||||
{
|
||||
int64_t t = MemRead<int64_t>( &item->lockWait.time );
|
||||
int64_t t = MemRead( &item->lockWait.time );
|
||||
int64_t dt = t - refSerial;
|
||||
refSerial = t;
|
||||
MemWrite( &item->lockWait.time, dt );
|
||||
@@ -2986,7 +2986,7 @@ Profiler::DequeueStatus Profiler::DequeueSerial()
|
||||
case QueueType::LockObtain:
|
||||
case QueueType::LockSharedObtain:
|
||||
{
|
||||
int64_t t = MemRead<int64_t>( &item->lockObtain.time );
|
||||
int64_t t = MemRead( &item->lockObtain.time );
|
||||
int64_t dt = t - refSerial;
|
||||
refSerial = t;
|
||||
MemWrite( &item->lockObtain.time, dt );
|
||||
@@ -2995,7 +2995,7 @@ Profiler::DequeueStatus Profiler::DequeueSerial()
|
||||
case QueueType::LockRelease:
|
||||
case QueueType::LockSharedRelease:
|
||||
{
|
||||
int64_t t = MemRead<int64_t>( &item->lockRelease.time );
|
||||
int64_t t = MemRead( &item->lockRelease.time );
|
||||
int64_t dt = t - refSerial;
|
||||
refSerial = t;
|
||||
MemWrite( &item->lockRelease.time, dt );
|
||||
@@ -3003,8 +3003,8 @@ Profiler::DequeueStatus Profiler::DequeueSerial()
|
||||
}
|
||||
case QueueType::LockName:
|
||||
{
|
||||
ptr = MemRead<uint64_t>( &item->lockNameFat.name );
|
||||
uint16_t size = MemRead<uint16_t>( &item->lockNameFat.size );
|
||||
ptr = MemRead( &item->lockNameFat.name );
|
||||
uint16_t size = MemRead( &item->lockNameFat.size );
|
||||
SendSingleString( (const char*)ptr, size );
|
||||
#ifndef TRACY_ON_DEMAND
|
||||
tracy_free_fast( (void*)ptr );
|
||||
@@ -3016,7 +3016,7 @@ Profiler::DequeueStatus Profiler::DequeueSerial()
|
||||
case QueueType::MemAllocCallstack:
|
||||
case QueueType::MemAllocCallstackNamed:
|
||||
{
|
||||
int64_t t = MemRead<int64_t>( &item->memAlloc.time );
|
||||
int64_t t = MemRead( &item->memAlloc.time );
|
||||
int64_t dt = t - refSerial;
|
||||
refSerial = t;
|
||||
MemWrite( &item->memAlloc.time, dt );
|
||||
@@ -3027,7 +3027,7 @@ Profiler::DequeueStatus Profiler::DequeueSerial()
|
||||
case QueueType::MemFreeCallstack:
|
||||
case QueueType::MemFreeCallstackNamed:
|
||||
{
|
||||
int64_t t = MemRead<int64_t>( &item->memFree.time );
|
||||
int64_t t = MemRead( &item->memFree.time );
|
||||
int64_t dt = t - refSerial;
|
||||
refSerial = t;
|
||||
MemWrite( &item->memFree.time, dt );
|
||||
@@ -3036,7 +3036,7 @@ Profiler::DequeueStatus Profiler::DequeueSerial()
|
||||
case QueueType::MemDiscard:
|
||||
case QueueType::MemDiscardCallstack:
|
||||
{
|
||||
int64_t t = MemRead<int64_t>( &item->memDiscard.time );
|
||||
int64_t t = MemRead( &item->memDiscard.time );
|
||||
int64_t dt = t - refSerial;
|
||||
refSerial = t;
|
||||
MemWrite( &item->memDiscard.time, dt );
|
||||
@@ -3045,7 +3045,7 @@ Profiler::DequeueStatus Profiler::DequeueSerial()
|
||||
case QueueType::GpuZoneBeginSerial:
|
||||
case QueueType::GpuZoneBeginCallstackSerial:
|
||||
{
|
||||
int64_t t = MemRead<int64_t>( &item->gpuZoneBegin.cpuTime );
|
||||
int64_t t = MemRead( &item->gpuZoneBegin.cpuTime );
|
||||
int64_t dt = t - refSerial;
|
||||
refSerial = t;
|
||||
MemWrite( &item->gpuZoneBegin.cpuTime, dt );
|
||||
@@ -3054,18 +3054,18 @@ Profiler::DequeueStatus Profiler::DequeueSerial()
|
||||
case QueueType::GpuZoneBeginAllocSrcLocSerial:
|
||||
case QueueType::GpuZoneBeginAllocSrcLocCallstackSerial:
|
||||
{
|
||||
int64_t t = MemRead<int64_t>( &item->gpuZoneBegin.cpuTime );
|
||||
int64_t t = MemRead( &item->gpuZoneBegin.cpuTime );
|
||||
int64_t dt = t - refSerial;
|
||||
refSerial = t;
|
||||
MemWrite( &item->gpuZoneBegin.cpuTime, dt );
|
||||
ptr = MemRead<uint64_t>( &item->gpuZoneBegin.srcloc );
|
||||
ptr = MemRead( &item->gpuZoneBegin.srcloc );
|
||||
SendSourceLocationPayload( ptr );
|
||||
tracy_free_fast( (void*)ptr );
|
||||
break;
|
||||
}
|
||||
case QueueType::GpuZoneEndSerial:
|
||||
{
|
||||
int64_t t = MemRead<int64_t>( &item->gpuZoneEnd.cpuTime );
|
||||
int64_t t = MemRead( &item->gpuZoneEnd.cpuTime );
|
||||
int64_t dt = t - refSerial;
|
||||
refSerial = t;
|
||||
MemWrite( &item->gpuZoneEnd.cpuTime, dt );
|
||||
@@ -3073,7 +3073,7 @@ Profiler::DequeueStatus Profiler::DequeueSerial()
|
||||
}
|
||||
case QueueType::GpuTime:
|
||||
{
|
||||
int64_t t = MemRead<int64_t>( &item->gpuTime.gpuTime );
|
||||
int64_t t = MemRead( &item->gpuTime.gpuTime );
|
||||
int64_t dt = t - refGpu;
|
||||
refGpu = t;
|
||||
MemWrite( &item->gpuTime.gpuTime, dt );
|
||||
@@ -3081,8 +3081,8 @@ Profiler::DequeueStatus Profiler::DequeueSerial()
|
||||
}
|
||||
case QueueType::GpuContextName:
|
||||
{
|
||||
ptr = MemRead<uint64_t>( &item->gpuContextNameFat.ptr );
|
||||
uint16_t size = MemRead<uint16_t>( &item->gpuContextNameFat.size );
|
||||
ptr = MemRead( &item->gpuContextNameFat.ptr );
|
||||
uint16_t size = MemRead( &item->gpuContextNameFat.size );
|
||||
SendSingleString( (const char*)ptr, size );
|
||||
#ifndef TRACY_ON_DEMAND
|
||||
tracy_free_fast( (void*)ptr );
|
||||
@@ -3091,8 +3091,8 @@ Profiler::DequeueStatus Profiler::DequeueSerial()
|
||||
}
|
||||
case QueueType::GpuAnnotationName:
|
||||
{
|
||||
ptr = MemRead<uint64_t>( &item->gpuAnnotationNameFat.ptr );
|
||||
uint16_t size = MemRead<uint16_t>( &item->gpuAnnotationNameFat.size );
|
||||
ptr = MemRead( &item->gpuAnnotationNameFat.ptr );
|
||||
uint16_t size = MemRead( &item->gpuAnnotationNameFat.size );
|
||||
SendSingleString( (const char*)ptr, size );
|
||||
tracy_free_fast( (void*)ptr );
|
||||
break;
|
||||
@@ -3102,14 +3102,14 @@ Profiler::DequeueStatus Profiler::DequeueSerial()
|
||||
case QueueType::ZoneBeginCallstack:
|
||||
{
|
||||
ThreadCtxCheckSerial( zoneBeginThread );
|
||||
int64_t t = MemRead<int64_t>( &item->zoneBegin.time );
|
||||
int64_t t = MemRead( &item->zoneBegin.time );
|
||||
int64_t dt = t - refThread;
|
||||
refThread = t;
|
||||
if( dt >= 0 )
|
||||
{
|
||||
if( dt < ProtocolOffset16Bit )
|
||||
{
|
||||
const uint64_t srcloc = MemRead<uint64_t>( &item->zoneBegin.srcloc );
|
||||
const uint64_t srcloc = MemRead( &item->zoneBegin.srcloc );
|
||||
idx = QueueType( idx ) == QueueType::ZoneBegin ? (int)QueueType::ZoneBegin16 : (int)QueueType::ZoneBeginCallstack16;
|
||||
MemWrite( &item->hdr.idx, idx );
|
||||
MemWrite( &item->zoneBegin16.time, uint16_t( dt ) );
|
||||
@@ -3119,7 +3119,7 @@ Profiler::DequeueStatus Profiler::DequeueSerial()
|
||||
else if( dt < ProtocolOffset32Bit )
|
||||
{
|
||||
dt -= ProtocolOffset16Bit;
|
||||
const uint64_t srcloc = MemRead<uint64_t>( &item->zoneBegin.srcloc );
|
||||
const uint64_t srcloc = MemRead( &item->zoneBegin.srcloc );
|
||||
idx = QueueType( idx ) == QueueType::ZoneBegin ? (int)QueueType::ZoneBegin32 : (int)QueueType::ZoneBeginCallstack32;
|
||||
MemWrite( &item->hdr.idx, idx );
|
||||
MemWrite( &item->zoneBegin32.time, uint32_t( dt ) );
|
||||
@@ -3138,11 +3138,11 @@ Profiler::DequeueStatus Profiler::DequeueSerial()
|
||||
case QueueType::ZoneBeginAllocSrcLocCallstack:
|
||||
{
|
||||
ThreadCtxCheckSerial( zoneBeginThread );
|
||||
int64_t t = MemRead<int64_t>( &item->zoneBegin.time );
|
||||
int64_t t = MemRead( &item->zoneBegin.time );
|
||||
int64_t dt = t - refThread;
|
||||
refThread = t;
|
||||
MemWrite( &item->zoneBegin.time, dt );
|
||||
ptr = MemRead<uint64_t>( &item->zoneBegin.srcloc );
|
||||
ptr = MemRead( &item->zoneBegin.srcloc );
|
||||
SendSourceLocationPayload( ptr );
|
||||
tracy_free_fast( (void*)ptr );
|
||||
break;
|
||||
@@ -3150,7 +3150,7 @@ Profiler::DequeueStatus Profiler::DequeueSerial()
|
||||
case QueueType::ZoneEnd:
|
||||
{
|
||||
ThreadCtxCheckSerial( zoneEndThread );
|
||||
int64_t t = MemRead<int64_t>( &item->zoneEnd.time );
|
||||
int64_t t = MemRead( &item->zoneEnd.time );
|
||||
int64_t dt = t - refThread;
|
||||
refThread = t;
|
||||
if( dt >= 0 )
|
||||
@@ -3178,8 +3178,8 @@ Profiler::DequeueStatus Profiler::DequeueSerial()
|
||||
case QueueType::ZoneName:
|
||||
{
|
||||
ThreadCtxCheckSerial( zoneTextFatThread );
|
||||
ptr = MemRead<uint64_t>( &item->zoneTextFat.text );
|
||||
uint16_t size = MemRead<uint16_t>( &item->zoneTextFat.size );
|
||||
ptr = MemRead( &item->zoneTextFat.text );
|
||||
uint16_t size = MemRead( &item->zoneTextFat.size );
|
||||
SendSingleString( (const char*)ptr, size );
|
||||
tracy_free_fast( (void*)ptr );
|
||||
break;
|
||||
@@ -3188,9 +3188,9 @@ Profiler::DequeueStatus Profiler::DequeueSerial()
|
||||
case QueueType::MessageCallstack:
|
||||
{
|
||||
ThreadCtxCheckSerial( messageFatThread );
|
||||
TaggedUserlandAddress taggedPtr = MemRead<TaggedUserlandAddress>( &item->messageFat.textAndMetadata );
|
||||
TaggedUserlandAddress taggedPtr = MemRead( &item->messageFat.textAndMetadata );
|
||||
ptr = taggedPtr.GetAddress();
|
||||
uint16_t size = MemRead<uint16_t>( &item->messageFat.size );
|
||||
uint16_t size = MemRead( &item->messageFat.size );
|
||||
SendSingleString( (const char*)ptr, size );
|
||||
tracy_free_fast( (void*)ptr );
|
||||
|
||||
@@ -3207,9 +3207,9 @@ Profiler::DequeueStatus Profiler::DequeueSerial()
|
||||
case QueueType::MessageColorCallstack:
|
||||
{
|
||||
ThreadCtxCheckSerial( messageColorFatThread );
|
||||
TaggedUserlandAddress taggedPtr = MemRead<TaggedUserlandAddress>( &item->messageColorFat.textAndMetadata );
|
||||
TaggedUserlandAddress taggedPtr = MemRead( &item->messageColorFat.textAndMetadata );
|
||||
ptr = taggedPtr.GetAddress();
|
||||
uint16_t size = MemRead<uint16_t>( &item->messageColorFat.size );
|
||||
uint16_t size = MemRead( &item->messageColorFat.size );
|
||||
SendSingleString( (const char*)ptr, size );
|
||||
tracy_free_fast( (void*)ptr );
|
||||
|
||||
@@ -3225,7 +3225,7 @@ Profiler::DequeueStatus Profiler::DequeueSerial()
|
||||
case QueueType::Callstack:
|
||||
{
|
||||
ThreadCtxCheckSerial( callstackFatThread );
|
||||
ptr = MemRead<uint64_t>( &item->callstackFat.ptr );
|
||||
ptr = MemRead( &item->callstackFat.ptr );
|
||||
SendCallstackPayload( ptr );
|
||||
tracy_free_fast( (void*)ptr );
|
||||
break;
|
||||
@@ -3233,7 +3233,7 @@ Profiler::DequeueStatus Profiler::DequeueSerial()
|
||||
case QueueType::CallstackAlloc:
|
||||
{
|
||||
ThreadCtxCheckSerial( callstackAllocFatThread );
|
||||
ptr = MemRead<uint64_t>( &item->callstackAllocFat.nativePtr );
|
||||
ptr = MemRead( &item->callstackAllocFat.nativePtr );
|
||||
if( ptr != 0 )
|
||||
{
|
||||
const char* remove[] = { "lua_pcall", nullptr };
|
||||
@@ -3241,7 +3241,7 @@ Profiler::DequeueStatus Profiler::DequeueSerial()
|
||||
SendCallstackPayload( ptr );
|
||||
tracy_free_fast( (void*)ptr );
|
||||
}
|
||||
ptr = MemRead<uint64_t>( &item->callstackAllocFat.ptr );
|
||||
ptr = MemRead( &item->callstackAllocFat.ptr );
|
||||
SendCallstackAlloc( ptr );
|
||||
tracy_free_fast( (void*)ptr );
|
||||
break;
|
||||
@@ -3249,7 +3249,7 @@ Profiler::DequeueStatus Profiler::DequeueSerial()
|
||||
case QueueType::FiberEnter:
|
||||
{
|
||||
ThreadCtxCheckSerial( fiberEnter );
|
||||
int64_t t = MemRead<int64_t>( &item->fiberEnter.time );
|
||||
int64_t t = MemRead( &item->fiberEnter.time );
|
||||
int64_t dt = t - refThread;
|
||||
refThread = t;
|
||||
MemWrite( &item->fiberEnter.time, dt );
|
||||
@@ -3258,7 +3258,7 @@ Profiler::DequeueStatus Profiler::DequeueSerial()
|
||||
case QueueType::FiberLeave:
|
||||
{
|
||||
ThreadCtxCheckSerial( fiberLeave );
|
||||
int64_t t = MemRead<int64_t>( &item->fiberLeave.time );
|
||||
int64_t t = MemRead( &item->fiberLeave.time );
|
||||
int64_t dt = t - refThread;
|
||||
refThread = t;
|
||||
MemWrite( &item->fiberLeave.time, dt );
|
||||
|
||||
Reference in New Issue
Block a user