linux: respect TRACY_NO_SAMPLING for sys-tracing

This compile-time flag was being ignored on Linux. This change adds
gating for software-sampled stack trace sampling following the same
pattern as other `TRACY_NO_SAMPLE_*` options.

If `TRACY_NO_SAMPLING=1` is provided as an environment variable,
software stack sampling is also disabled.
This commit is contained in:
Cody Tapscott 2023-04-04 15:20:46 -04:00
parent 2b7b79352b
commit 6249999153

View File

@ -770,6 +770,13 @@ bool SysTraceStart( int64_t& samplingPeriod )
TracyDebug( "sched_wakeup id: %i\n", wakeupId ); TracyDebug( "sched_wakeup id: %i\n", wakeupId );
TracyDebug( "drm_vblank_event id: %i\n", vsyncId ); TracyDebug( "drm_vblank_event id: %i\n", vsyncId );
#ifdef TRACY_NO_SAMPLING
const bool noSoftwareSampling = true;
#else
const char* noSoftwareSamplingEnv = GetEnvVar( "TRACY_NO_SAMPLING" );
const bool noSoftwareSampling = noSoftwareSamplingEnv && noSoftwareSamplingEnv[0] == '1';
#endif
#ifdef TRACY_NO_SAMPLE_RETIREMENT #ifdef TRACY_NO_SAMPLE_RETIREMENT
const bool noRetirement = true; const bool noRetirement = true;
#else #else
@ -839,6 +846,8 @@ bool SysTraceStart( int64_t& samplingPeriod )
pe.clockid = CLOCK_MONOTONIC_RAW; pe.clockid = CLOCK_MONOTONIC_RAW;
#endif #endif
if( !noSoftwareSampling )
{
TracyDebug( "Setup software sampling\n" ); TracyDebug( "Setup software sampling\n" );
ProbePreciseIp( pe, currentPid ); ProbePreciseIp( pe, currentPid );
for( int i=0; i<s_numCpus; i++ ) for( int i=0; i<s_numCpus; i++ )
@ -863,6 +872,7 @@ bool SysTraceStart( int64_t& samplingPeriod )
TracyDebug( " Core %i ok\n", i ); TracyDebug( " Core %i ok\n", i );
} }
} }
}
// CPU cycles + instructions retired // CPU cycles + instructions retired
pe = {}; pe = {};