Merge pull request #652 from YaLTeR/is-started

Add TracyIsStarted
This commit is contained in:
Bartosz Taudul 2023-10-25 13:02:56 +02:00 committed by GitHub
commit 8202502a2f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 23 additions and 0 deletions

View File

@ -1142,12 +1142,14 @@ thread_local bool RpThreadShutdown = false;
# ifdef TRACY_MANUAL_LIFETIME
ProfilerData* s_profilerData = nullptr;
static ProfilerThreadData& GetProfilerThreadData();
static std::atomic<bool> s_isProfilerStarted { false };
TRACY_API void StartupProfiler()
{
s_profilerData = (ProfilerData*)tracy_malloc( sizeof( ProfilerData ) );
new (s_profilerData) ProfilerData();
s_profilerData->profiler.SpawnWorkerThreads();
GetProfilerThreadData().token = ProducerWrapper( *s_profilerData );
s_isProfilerStarted.store( true, std::memory_order_seq_cst );
}
static ProfilerData& GetProfilerData()
{
@ -1156,6 +1158,7 @@ static ProfilerData& GetProfilerData()
}
TRACY_API void ShutdownProfiler()
{
s_isProfilerStarted.store( false, std::memory_order_seq_cst );
s_profilerData->~ProfilerData();
tracy_free( s_profilerData );
s_profilerData = nullptr;
@ -1163,6 +1166,10 @@ TRACY_API void ShutdownProfiler()
RpThreadInitDone = false;
RpInitDone.store( 0, std::memory_order_release );
}
TRACY_API bool IsProfilerStarted()
{
return s_isProfilerStarted.load( std::memory_order_seq_cst );
}
# else
static std::atomic<int> profilerDataLock { 0 };
static std::atomic<ProfilerData*> profilerData { nullptr };
@ -4439,6 +4446,11 @@ TRACY_API void ___tracy_shutdown_profiler( void )
{
tracy::ShutdownProfiler();
}
TRACY_API int ___tracy_profiler_started( void )
{
return tracy::s_isProfilerStarted.load( std::memory_order_seq_cst );
}
# endif
#ifdef __cplusplus

View File

@ -51,6 +51,10 @@ namespace tracy
#if defined(TRACY_DELAYED_INIT) && defined(TRACY_MANUAL_LIFETIME)
TRACY_API void StartupProfiler();
TRACY_API void ShutdownProfiler();
TRACY_API bool IsProfilerStarted();
# define TracyIsStarted tracy::IsProfilerStarted()
#else
# define TracyIsStarted true
#endif
class GpuCtx;

View File

@ -109,6 +109,7 @@
#define TracyParameterRegister(x,y)
#define TracyParameterSetup(x,y,z,w)
#define TracyIsConnected false
#define TracyIsStarted false
#define TracySetProgramName(x)
#define TracyFiberEnter(x)

View File

@ -97,6 +97,7 @@ typedef const void* TracyCZoneCtx;
#define TracyCMessageLCS(x,y,z)
#define TracyCIsConnected 0
#define TracyCIsStarted 0
#ifdef TRACY_FIBERS
# define TracyCFiberEnter(fiber)
@ -185,6 +186,11 @@ typedef /*const*/ struct ___tracy_c_zone_context TracyCZoneCtx;
#ifdef TRACY_MANUAL_LIFETIME
TRACY_API void ___tracy_startup_profiler(void);
TRACY_API void ___tracy_shutdown_profiler(void);
TRACY_API int ___tracy_profiler_started(void);
# define TracyCIsStarted ___tracy_profiler_started()
#else
# define TracyCIsStarted 1
#endif
TRACY_API uint64_t ___tracy_alloc_srcloc( uint32_t line, const char* source, size_t sourceSz, const char* function, size_t functionSz );