diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/llviewerstats.cpp | 30 | ||||
| -rw-r--r-- | indra/newview/llviewerstats.h | 9 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/floater_stats.xml | 8 | 
3 files changed, 47 insertions, 0 deletions
diff --git a/indra/newview/llviewerstats.cpp b/indra/newview/llviewerstats.cpp index a4f308bbf9..d39d466205 100644 --- a/indra/newview/llviewerstats.cpp +++ b/indra/newview/llviewerstats.cpp @@ -234,6 +234,8 @@ LLTrace::SampleStatHandle<U32> FRAMETIME_JITTER_EVENTS("frametimeevents", "Numbe                                  FRAMETIME_JITTER_EVENTS_LAST_MINUTE("frametimeeventslastmin", "Number of frametime events in the last minute.");  LLTrace::SampleStatHandle<F64> NOTRMALIZED_FRAMETIME_JITTER_SESSION("normalizedframetimejitter", "Normalized frametime jitter over the session."); +LLTrace::SampleStatHandle<F64> NFTV("nftv", "Normalized frametime variation."); +LLTrace::SampleStatHandle<F64> NORMALIZED_FRAMTIME_JITTER_PERIOD("normalizedframetimejitterperiod", "Normalized frametime jitter over the last 5 seconds.");  LLTrace::EventStatHandle<LLUnit<F64, LLUnits::Meters> > AGENT_POSITION_SNAP("agentpositionsnap", "agent position corrections"); @@ -322,6 +324,8 @@ void LLViewerStats::updateFrameStats(const F64Seconds time_diff)          sample(LLStatViewer::FRAMETIME_JITTER_CUMULATIVE, mTotalFrametimeJitter);          sample(LLStatViewer::NOTRMALIZED_FRAMETIME_JITTER_SESSION, mTotalFrametimeJitter / mTotalTime); +        mLastNoramlizedSessionJitter = mTotalFrametimeJitter / mTotalTime; +          static LLCachedControl<F32> frameTimeEventThreshold(gSavedSettings, "StatsFrametimeEventThreshold", 0.1f);          if (time_diff - mLastTimeDiff > mLastTimeDiff * frameTimeEventThreshold()) @@ -360,6 +364,27 @@ void LLViewerStats::updateFrameStats(const F64Seconds time_diff)              sample(LLStatViewer::FRAMETIME_JITTER_99TH, ninety_ninth_percentile);              sample(LLStatViewer::FRAMETIME_JITTER_95TH, ninety_fifth_percentile); +            F64 averageFrameTime = 0; +            for (const auto& frame_time : mFrameTimes) +            { +                averageFrameTime += frame_time.value(); +            } +            averageFrameTime /= mFrameTimes.size(); + +            sample(LLStatViewer::NFTV, frame_time_stddev / averageFrameTime); +            mLastNormalizedFrametimeVariance = frame_time_stddev / averageFrameTime; + +            // Add up all of the jitter values. +            F64 totalJitter = 0; +            for (const auto& frame_jitter : mFrameTimesJitter) +            { +                totalJitter += frame_jitter.value(); +            } + +            mLastNormalizedPeriodJitter = totalJitter / mLastFrameTimeSample; + +            sample(LLStatViewer::NORMALIZED_FRAMTIME_JITTER_PERIOD, mLastNormalizedPeriodJitter); +              mFrameTimes.clear();              mFrameTimesJitter.clear();              mLastFrameTimeSample = F64Seconds(0); @@ -648,6 +673,11 @@ void send_viewer_stats(bool include_preferences)      // send fps only for time app spends in foreground      agent["fps"] = (F32)gForegroundFrameCount / gForegroundTime.getElapsedTimeF32(); + +    agent["normalized_session_jitter"] = LLViewerStats::instance().getLastNormalizedSessionJitter(); +    agent["normalized_frametime_variance"] = LLViewerStats::instance().getLastNormalizedFrametimeVariance(); +    agent["normalized_period_jitter"]      = LLViewerStats::instance().getLastNormalizedPeriodJitter(); +      agent["version"] = LLVersionInfo::instance().getChannelAndVersion();      std::string language = LLUI::getLanguage();      agent["language"] = language; diff --git a/indra/newview/llviewerstats.h b/indra/newview/llviewerstats.h index 63fb7d4a17..011269d7ee 100644 --- a/indra/newview/llviewerstats.h +++ b/indra/newview/llviewerstats.h @@ -271,6 +271,10 @@ public:      LLTrace::Recording& getRecording() { return mRecording; }      const LLTrace::Recording& getRecording() const { return mRecording; } +    F64 getLastNormalizedSessionJitter() const { return mLastNoramlizedSessionJitter; } +    F64 getLastNormalizedFrametimeVariance() const { return mLastNormalizedFrametimeVariance; } +    F64 getLastNormalizedPeriodJitter() const { return mLastNormalizedPeriodJitter; } +  private:      LLTrace::Recording              mRecording; @@ -286,6 +290,11 @@ private:      F64Seconds              mTimeSinceLastEventSample;      std::vector<F64Seconds>      mFrameTimes;          // used for frame time stats      std::vector<F64Seconds> mFrameTimesJitter;    // used for frame time jitter stats + +    F64 mLastNoramlizedSessionJitter; // used for frame time jitter stats +    F64 mLastNormalizedFrametimeVariance; // Used when submitting jitter stats +    F64 mLastNormalizedPeriodJitter; +  };  static const F32 SEND_STATS_PERIOD = 300.0f; diff --git a/indra/newview/skins/default/xui/en/floater_stats.xml b/indra/newview/skins/default/xui/en/floater_stats.xml index f2309eb817..1600c422c3 100644 --- a/indra/newview/skins/default/xui/en/floater_stats.xml +++ b/indra/newview/skins/default/xui/en/floater_stats.xml @@ -58,6 +58,14 @@                      label="normalized sess. jitter"                      decimal_digits="4"                      stat="normalizedframetimejitter"/> +          <stat_bar name="normalized_period_jitter" +                    label="normalized period jitter" +                    decimal_digits="4" +                    stat="normalizedframetimejitterperiod"/> +          <stat_bar name="normalized_frametime_variation" +                    label="normalized frametime variation" +                    decimal_digits="4" +                    stat="nftv"/>            <stat_bar name="frame_events_per_minute"                      label="frame events/minute"                      decimal_digits="2"  | 
