SH-3931 WIP Interesting: Add graphs to visualize scene load metrics
convert scene monitor to use extendable periodic recordingmeow-7.2.2
parent
62c8844414
commit
c673716385
|
|
@ -464,8 +464,62 @@ void PeriodicRecording::appendPeriodicRecording( PeriodicRecording& other )
|
|||
other.setPlayState(other_play_state);
|
||||
}
|
||||
|
||||
LLUnit<LLUnits::Seconds, F64> PeriodicRecording::getDuration()
|
||||
{
|
||||
LLUnit<LLUnits::Seconds, F64> duration;
|
||||
size_t num_periods = mRecordingPeriods.size();
|
||||
for (size_t i = 1; i <= num_periods; i++)
|
||||
{
|
||||
size_t index = (mCurPeriod + num_periods - i) % num_periods;
|
||||
duration += mRecordingPeriods[index].getDuration();
|
||||
}
|
||||
return duration;
|
||||
}
|
||||
|
||||
|
||||
LLTrace::Recording PeriodicRecording::snapshotCurRecording() const
|
||||
{
|
||||
Recording recording_copy(getCurRecording());
|
||||
recording_copy.stop();
|
||||
return recording_copy;
|
||||
}
|
||||
|
||||
|
||||
Recording& PeriodicRecording::getLastRecording()
|
||||
{
|
||||
U32 num_periods = mRecordingPeriods.size();
|
||||
return mRecordingPeriods[(mCurPeriod + num_periods - 1) % num_periods];
|
||||
}
|
||||
|
||||
const Recording& PeriodicRecording::getLastRecording() const
|
||||
{
|
||||
return getPrevRecording(1);
|
||||
}
|
||||
|
||||
Recording& PeriodicRecording::getCurRecording()
|
||||
{
|
||||
return mRecordingPeriods[mCurPeriod];
|
||||
}
|
||||
|
||||
const Recording& PeriodicRecording::getCurRecording() const
|
||||
{
|
||||
return mRecordingPeriods[mCurPeriod];
|
||||
}
|
||||
|
||||
Recording& PeriodicRecording::getPrevRecording( U32 offset )
|
||||
{
|
||||
U32 num_periods = mRecordingPeriods.size();
|
||||
offset = llclamp(offset, 0u, num_periods - 1);
|
||||
return mRecordingPeriods[(mCurPeriod + num_periods - offset) % num_periods];
|
||||
}
|
||||
|
||||
const Recording& PeriodicRecording::getPrevRecording( U32 offset ) const
|
||||
{
|
||||
U32 num_periods = mRecordingPeriods.size();
|
||||
offset = llclamp(offset, 0u, num_periods - 1);
|
||||
return mRecordingPeriods[(mCurPeriod + num_periods - offset) % num_periods];
|
||||
}
|
||||
|
||||
void PeriodicRecording::start()
|
||||
{
|
||||
getCurRecording().start();
|
||||
|
|
@ -577,6 +631,13 @@ void ExtendableRecording::splitFrom(ExtendableRecording& other)
|
|||
// ExtendablePeriodicRecording
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
ExtendablePeriodicRecording::ExtendablePeriodicRecording()
|
||||
: mAcceptedRecording(0),
|
||||
mPotentialRecording(0)
|
||||
{
|
||||
}
|
||||
|
||||
void ExtendablePeriodicRecording::extend()
|
||||
{
|
||||
// stop recording to get latest data
|
||||
|
|
|
|||
|
|
@ -254,49 +254,16 @@ namespace LLTrace
|
|||
void nextPeriod();
|
||||
U32 getNumPeriods() { return mRecordingPeriods.size(); }
|
||||
|
||||
LLUnit<LLUnits::Seconds, F64> getDuration();
|
||||
|
||||
void appendPeriodicRecording(PeriodicRecording& other);
|
||||
|
||||
Recording& getLastRecording()
|
||||
{
|
||||
U32 num_periods = mRecordingPeriods.size();
|
||||
return mRecordingPeriods[(mCurPeriod + num_periods - 1) % num_periods];
|
||||
}
|
||||
|
||||
const Recording& getLastRecording() const
|
||||
{
|
||||
return getPrevRecording(1);
|
||||
}
|
||||
|
||||
Recording& getCurRecording()
|
||||
{
|
||||
return mRecordingPeriods[mCurPeriod];
|
||||
}
|
||||
|
||||
const Recording& getCurRecording() const
|
||||
{
|
||||
return mRecordingPeriods[mCurPeriod];
|
||||
}
|
||||
|
||||
Recording& getPrevRecording(U32 offset)
|
||||
{
|
||||
U32 num_periods = mRecordingPeriods.size();
|
||||
offset = llclamp(offset, 0u, num_periods - 1);
|
||||
return mRecordingPeriods[(mCurPeriod + num_periods - offset) % num_periods];
|
||||
}
|
||||
|
||||
const Recording& getPrevRecording(U32 offset) const
|
||||
{
|
||||
U32 num_periods = mRecordingPeriods.size();
|
||||
offset = llclamp(offset, 0u, num_periods - 1);
|
||||
return mRecordingPeriods[(mCurPeriod + num_periods - offset) % num_periods];
|
||||
}
|
||||
|
||||
Recording snapshotCurRecording() const
|
||||
{
|
||||
Recording recording_copy(getCurRecording());
|
||||
recording_copy.stop();
|
||||
return recording_copy;
|
||||
}
|
||||
Recording& getLastRecording();
|
||||
const Recording& getLastRecording() const;
|
||||
Recording& getCurRecording();
|
||||
const Recording& getCurRecording() const;
|
||||
Recording& getPrevRecording(U32 offset);
|
||||
const Recording& getPrevRecording(U32 offset) const;
|
||||
Recording snapshotCurRecording() const;
|
||||
|
||||
template <typename T>
|
||||
typename T::value_t getPeriodMin(const TraceType<T>& stat, size_t num_periods = U32_MAX) const
|
||||
|
|
@ -447,10 +414,11 @@ namespace LLTrace
|
|||
: public LLStopWatchControlsMixin<ExtendablePeriodicRecording>
|
||||
{
|
||||
public:
|
||||
ExtendablePeriodicRecording();
|
||||
void extend();
|
||||
|
||||
PeriodicRecording& getAcceptedRecording() { return mAcceptedRecording; }
|
||||
const PeriodicRecording& getAcceptedRecording() const {return mAcceptedRecording;}
|
||||
PeriodicRecording& getAcceptedRecording() { return mAcceptedRecording; }
|
||||
const PeriodicRecording& getAcceptedRecording() const {return mAcceptedRecording;}
|
||||
|
||||
// implementation for LLStopWatchControlsMixin
|
||||
/*virtual*/ void start();
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ LLSceneMonitor::LLSceneMonitor() :
|
|||
mFrames[0] = NULL;
|
||||
mFrames[1] = NULL;
|
||||
|
||||
mRecording = new LLTrace::ExtendableRecording();
|
||||
mRecording = new LLTrace::ExtendablePeriodicRecording();
|
||||
mRecording->start();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ public:
|
|||
bool isEnabled()const {return mEnabled;}
|
||||
bool needsUpdate() const;
|
||||
|
||||
LLTrace::ExtendableRecording* getRecording() const {return mRecording;}
|
||||
LLTrace::ExtendablePeriodicRecording* getRecording() const {return mRecording;}
|
||||
void dumpToFile(std::string file_name);
|
||||
bool hasResults() const { return !mMonitorResults.empty();}
|
||||
|
||||
|
|
@ -102,7 +102,7 @@ private:
|
|||
|
||||
std::vector<LLAnimPauseRequest> mAvatarPauseHandles;
|
||||
|
||||
LLTrace::ExtendableRecording* mRecording;
|
||||
LLTrace::ExtendablePeriodicRecording* mRecording;
|
||||
|
||||
//---------------------------------------
|
||||
typedef struct _monitor_result
|
||||
|
|
|
|||
Loading…
Reference in New Issue