@@ -234,6 +234,8 @@ LLTrace::SampleStatHandle<U32> FRAMETIME_JITTER_EVENTS("frametimeevents", "Numbe
234
234
FRAMETIME_JITTER_EVENTS_LAST_MINUTE(" frametimeeventslastmin" , " Number of frametime events in the last minute." );
235
235
236
236
LLTrace::SampleStatHandle<F64> NOTRMALIZED_FRAMETIME_JITTER_SESSION (" normalizedframetimejitter" , " Normalized frametime jitter over the session." );
237
+ LLTrace::SampleStatHandle<F64> NFTV (" nftv" , " Normalized frametime variation." );
238
+ LLTrace::SampleStatHandle<F64> NORMALIZED_FRAMTIME_JITTER_PERIOD (" normalizedframetimejitterperiod" , " Normalized frametime jitter over the last 5 seconds." );
237
239
238
240
LLTrace::EventStatHandle<LLUnit<F64, LLUnits::Meters> > AGENT_POSITION_SNAP (" agentpositionsnap" , " agent position corrections" );
239
241
@@ -322,6 +324,8 @@ void LLViewerStats::updateFrameStats(const F64Seconds time_diff)
322
324
sample (LLStatViewer::FRAMETIME_JITTER_CUMULATIVE, mTotalFrametimeJitter );
323
325
sample (LLStatViewer::NOTRMALIZED_FRAMETIME_JITTER_SESSION, mTotalFrametimeJitter / mTotalTime );
324
326
327
+ mLastNoramlizedSessionJitter = mTotalFrametimeJitter / mTotalTime ;
328
+
325
329
static LLCachedControl<F32> frameTimeEventThreshold (gSavedSettings , " StatsFrametimeEventThreshold" , 0 .1f );
326
330
327
331
if (time_diff - mLastTimeDiff > mLastTimeDiff * frameTimeEventThreshold ())
@@ -360,6 +364,27 @@ void LLViewerStats::updateFrameStats(const F64Seconds time_diff)
360
364
sample (LLStatViewer::FRAMETIME_JITTER_99TH, ninety_ninth_percentile);
361
365
sample (LLStatViewer::FRAMETIME_JITTER_95TH, ninety_fifth_percentile);
362
366
367
+ F64 averageFrameTime = 0 ;
368
+ for (const auto & frame_time : mFrameTimes )
369
+ {
370
+ averageFrameTime += frame_time.value ();
371
+ }
372
+ averageFrameTime /= mFrameTimes .size ();
373
+
374
+ sample (LLStatViewer::NFTV, frame_time_stddev / averageFrameTime);
375
+ mLastNormalizedFrametimeVariance = frame_time_stddev / averageFrameTime;
376
+
377
+ // Add up all of the jitter values.
378
+ F64 totalJitter = 0 ;
379
+ for (const auto & frame_jitter : mFrameTimesJitter )
380
+ {
381
+ totalJitter += frame_jitter.value ();
382
+ }
383
+
384
+ mLastNormalizedPeriodJitter = totalJitter / mLastFrameTimeSample ;
385
+
386
+ sample (LLStatViewer::NORMALIZED_FRAMTIME_JITTER_PERIOD, mLastNormalizedPeriodJitter );
387
+
363
388
mFrameTimes .clear ();
364
389
mFrameTimesJitter .clear ();
365
390
mLastFrameTimeSample = F64Seconds (0 );
@@ -648,6 +673,11 @@ void send_viewer_stats(bool include_preferences)
648
673
649
674
// send fps only for time app spends in foreground
650
675
agent[" fps" ] = (F32)gForegroundFrameCount / gForegroundTime .getElapsedTimeF32 ();
676
+
677
+ agent[" normalized_session_jitter" ] = LLViewerStats::instance ().getLastNormalizedSessionJitter ();
678
+ agent[" normalized_frametime_variance" ] = LLViewerStats::instance ().getLastNormalizedFrametimeVariance ();
679
+ agent[" normalized_period_jitter" ] = LLViewerStats::instance ().getLastNormalizedPeriodJitter ();
680
+
651
681
agent[" version" ] = LLVersionInfo::instance ().getChannelAndVersion ();
652
682
std::string language = LLUI::getLanguage ();
653
683
agent[" language" ] = language;
0 commit comments