mirror of
https://github.com/wolfpld/tracy.git
synced 2026-10-22 16:50:49 +00:00
Add C API for Sections
This commit is contained in:
@@ -5666,6 +5666,28 @@ TRACY_API void ___tracy_custom_name_shared_lockable_ctx( struct __tracy_shared_l
|
||||
___tracy_custom_name_lockable_ctx( &lockdata->m_base, name, nameSz );
|
||||
}
|
||||
|
||||
TRACY_API uint32_t ___tracy_section_enter( uint16_t category, const char* fmt, ... )
|
||||
{
|
||||
va_list args;
|
||||
va_start( args, fmt );
|
||||
uint32_t id = tracy::Profiler::SectionEnterV( category, fmt, args );
|
||||
va_end( args );
|
||||
return id;
|
||||
}
|
||||
|
||||
TRACY_API void ___tracy_section_leave( uint32_t id )
|
||||
{
|
||||
tracy::Profiler::SectionLeave( id );
|
||||
}
|
||||
|
||||
TRACY_API void ___tracy_section_setup( uint16_t category, const char* fmt, ... )
|
||||
{
|
||||
va_list args;
|
||||
va_start( args, fmt );
|
||||
tracy::Profiler::SectionSetupV( category, fmt, args );
|
||||
va_end( args );
|
||||
}
|
||||
|
||||
TRACY_API int32_t ___tracy_connected( void )
|
||||
{
|
||||
return static_cast<int32_t>( tracy::GetProfiler().IsConnected() );
|
||||
|
||||
@@ -837,23 +837,21 @@ public:
|
||||
}
|
||||
#endif
|
||||
|
||||
static uint32_t SectionEnter( uint16_t category, const char* fmt, ... ) TRACY_ATTRIBUTE_FORMAT_PRINTF( 2, 3 )
|
||||
static uint32_t SectionEnterV( uint16_t category, const char* fmt, va_list args ) TRACY_ATTRIBUTE_FORMAT_PRINTF( 2, 0 )
|
||||
{
|
||||
auto& profiler = GetProfiler();
|
||||
#ifdef TRACY_ON_DEMAND
|
||||
if( !profiler.IsConnected() ) return 0;
|
||||
#endif
|
||||
va_list args;
|
||||
va_start( args, fmt );
|
||||
auto size = vsnprintf( nullptr, 0, fmt, args );
|
||||
va_end( args );
|
||||
va_list args2;
|
||||
va_copy( args2, args );
|
||||
auto size = vsnprintf( nullptr, 0, fmt, args2 );
|
||||
va_end( args2 );
|
||||
if( size < 0 ) return 0;
|
||||
TRACY_ASSERT( size < (std::numeric_limits<uint16_t>::max)() );
|
||||
|
||||
char* ptr = (char*)tracy_malloc( size_t( size ) + 1 );
|
||||
va_start( args, fmt );
|
||||
vsnprintf( ptr, size_t( size ) + 1, fmt, args );
|
||||
va_end( args );
|
||||
|
||||
const auto id = profiler.GetNextSectionId();
|
||||
TracyLfqPrepare( QueueType::SectionEnter );
|
||||
@@ -866,6 +864,15 @@ public:
|
||||
return id;
|
||||
}
|
||||
|
||||
static uint32_t SectionEnter( uint16_t category, const char* fmt, ... ) TRACY_ATTRIBUTE_FORMAT_PRINTF( 2, 3 )
|
||||
{
|
||||
va_list args;
|
||||
va_start( args, fmt );
|
||||
uint32_t id = SectionEnterV( category, fmt, args );
|
||||
va_end( args );
|
||||
return id;
|
||||
}
|
||||
|
||||
static tracy_force_inline void SectionLeave( uint32_t id )
|
||||
{
|
||||
if( id == 0 ) return;
|
||||
@@ -878,19 +885,17 @@ public:
|
||||
TracyLfqCommit;
|
||||
}
|
||||
|
||||
static void SectionSetup( uint16_t category, const char* fmt, ... ) TRACY_ATTRIBUTE_FORMAT_PRINTF( 2, 3 )
|
||||
static void SectionSetupV( uint16_t category, const char* fmt, va_list args ) TRACY_ATTRIBUTE_FORMAT_PRINTF( 2, 0 )
|
||||
{
|
||||
va_list args;
|
||||
va_start( args, fmt );
|
||||
auto size = vsnprintf( nullptr, 0, fmt, args );
|
||||
va_end( args );
|
||||
va_list args2;
|
||||
va_copy( args2, args );
|
||||
auto size = vsnprintf( nullptr, 0, fmt, args2 );
|
||||
va_end( args2 );
|
||||
if( size < 0 ) return;
|
||||
TRACY_ASSERT( size < (std::numeric_limits<uint16_t>::max)() );
|
||||
|
||||
char* ptr = (char*)tracy_malloc( size_t( size ) + 1 );
|
||||
va_start( args, fmt );
|
||||
vsnprintf( ptr, size_t( size ) + 1, fmt, args );
|
||||
va_end( args );
|
||||
|
||||
TracyLfqPrepare( QueueType::SectionSetup );
|
||||
MemWrite( &item->sectionSetupFat.category, category );
|
||||
@@ -904,6 +909,14 @@ public:
|
||||
TracyLfqCommit;
|
||||
}
|
||||
|
||||
static void SectionSetup( uint16_t category, const char* fmt, ... ) TRACY_ATTRIBUTE_FORMAT_PRINTF( 2, 3 )
|
||||
{
|
||||
va_list args;
|
||||
va_start( args, fmt );
|
||||
SectionSetupV( category, fmt, args );
|
||||
va_end( args );
|
||||
}
|
||||
|
||||
void SendCallstack( int32_t depth, const char** skipBefore );
|
||||
static void CutCallstack( void* callstack, const char** skipBefore );
|
||||
|
||||
|
||||
@@ -129,6 +129,11 @@ typedef const void* TracyCSharedLockCtx;
|
||||
#define TracyCSharedLockMark(l)
|
||||
#define TracyCSharedLockCustomName(l,x,y)
|
||||
|
||||
#define TracyCSectionEnter(x,...) 0
|
||||
#define TracyCSectionEnterCategory(c,x,...) 0
|
||||
#define TracyCSectionLeave(x)
|
||||
#define TracyCSectionSetup(c,x,...)
|
||||
|
||||
#define TracyCIsConnected 0
|
||||
#define TracyCIsStarted 0
|
||||
|
||||
@@ -387,6 +392,10 @@ TRACY_API void ___tracy_after_try_lock_shared_shared_lockable_ctx( struct __trac
|
||||
TRACY_API void ___tracy_mark_shared_lockable_ctx( struct __tracy_shared_lockable_context_data* lockdata, const struct ___tracy_source_location_data* srcloc );
|
||||
TRACY_API void ___tracy_custom_name_shared_lockable_ctx( struct __tracy_shared_lockable_context_data* lockdata, const char* name, size_t nameSz );
|
||||
|
||||
TRACY_API uint32_t ___tracy_section_enter( uint16_t category, const char* fmt, ... ) TRACY_ATTRIBUTE_FORMAT_PRINTF( 2, 3 );
|
||||
TRACY_API void ___tracy_section_leave( uint32_t id );
|
||||
TRACY_API void ___tracy_section_setup( uint16_t category, const char* fmt, ... ) TRACY_ATTRIBUTE_FORMAT_PRINTF( 2, 3 );
|
||||
|
||||
|
||||
#define TracyCLockAnnounce( lock ) static const struct ___tracy_source_location_data TracyConcat(__tracy_source_location,TracyLine) = { NULL, __func__, TracyFile, (uint32_t)TracyLine, 0 }; lock = ___tracy_announce_lockable_ctx( &TracyConcat(__tracy_source_location,TracyLine) )
|
||||
#define TracyCLockTerminate( lock ) ___tracy_terminate_lockable_ctx( lock )
|
||||
@@ -410,6 +419,11 @@ TRACY_API void ___tracy_custom_name_shared_lockable_ctx( struct __tracy_shared_l
|
||||
#define TracyCSharedLockMark( lock ) static const struct ___tracy_source_location_data TracyConcat(__tracy_source_location,TracyLine) = { NULL, __func__, TracyFile, (uint32_t)TracyLine, 0 }; ___tracy_mark_shared_lockable_ctx( lock, &TracyConcat(__tracy_source_location,TracyLine) )
|
||||
#define TracyCSharedLockCustomName( lock, name, nameSz ) ___tracy_custom_name_shared_lockable_ctx( lock, name, nameSz )
|
||||
|
||||
#define TracyCSectionEnter( fmt, ... ) ___tracy_section_enter( 0, fmt, ##__VA_ARGS__ )
|
||||
#define TracyCSectionEnterCategory( category, fmt, ... ) ___tracy_section_enter( category, fmt, ##__VA_ARGS__ )
|
||||
#define TracyCSectionLeave( id ) ___tracy_section_leave( id )
|
||||
#define TracyCSectionSetup( category, fmt, ... ) ___tracy_section_setup( category, fmt, ##__VA_ARGS__ )
|
||||
|
||||
#define TracyCIsConnected ___tracy_connected()
|
||||
|
||||
TRACY_API int ___tracy_begin_sampling_profiling( void );
|
||||
|
||||
Reference in New Issue
Block a user