MemRead deduces returned type from pointer.

This commit is contained in:
Bartosz Taudul
2026-06-04 00:48:23 +02:00
parent a27dae3e88
commit 185482c0d9

View File

@@ -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 );