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

View File

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

View File

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

View File

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