for SH-3833: dump frame diff values from the scene loading monitor to a log file
parent
ccb8d6f2c5
commit
268ea2902d
|
|
@ -97,6 +97,7 @@
|
|||
#include "llcallfloater.h"
|
||||
#include "llfloatertexturefetchdebugger.h"
|
||||
#include "llspellcheck.h"
|
||||
#include "llscenemonitor.h"
|
||||
|
||||
// Linden library includes
|
||||
#include "llavatarnamecache.h"
|
||||
|
|
@ -1561,6 +1562,14 @@ bool LLAppViewer::cleanup()
|
|||
// workaround for DEV-35406 crash on shutdown
|
||||
LLEventPumps::instance().reset();
|
||||
|
||||
//dump scene loading monitor results
|
||||
if(LLSceneMonitor::getInstance()->hasResults())
|
||||
{
|
||||
std::string file_name = "scene_monitor_results.csv";
|
||||
LLSceneMonitor::getInstance()->dumpToFile(
|
||||
gDirUtilp->getExpandedFilename(LL_PATH_LOGS, file_name));
|
||||
}
|
||||
|
||||
if (LLFastTimerView::sAnalyzePerformance)
|
||||
{
|
||||
llinfos << "Analyzing performance" << llendl;
|
||||
|
|
|
|||
|
|
@ -486,11 +486,46 @@ void LLSceneMonitor::fetchQueryResult()
|
|||
|
||||
if(mDiffResult > 0.01f)
|
||||
{
|
||||
mRecording->extend();
|
||||
sample(sFramePixelDiff, mDiffResult);
|
||||
addMonitorResult();
|
||||
}
|
||||
//llinfos << count << " : " << mDiffResult << llendl;
|
||||
}
|
||||
|
||||
void LLSceneMonitor::addMonitorResult()
|
||||
{
|
||||
mRecording->extend();
|
||||
sample(sFramePixelDiff, mDiffResult);
|
||||
|
||||
ll_monitor_result_t result;
|
||||
result.mTimeStamp = LLImageGL::sLastFrameTime;
|
||||
result.mDiff = mDiffResult;
|
||||
mMonitorResults.push_back(result);
|
||||
}
|
||||
|
||||
//dump results to a file _scene_monitor_results.csv
|
||||
void LLSceneMonitor::dumpToFile(std::string file_name)
|
||||
{
|
||||
if(mMonitorResults.empty())
|
||||
{
|
||||
return; //nothing to dump
|
||||
}
|
||||
|
||||
std::ofstream os(file_name.c_str());
|
||||
|
||||
//total scene loading time
|
||||
os << llformat("Scene Loading time: %.4f seconds\n", (F32)getRecording()->getAcceptedRecording().getDuration().value());
|
||||
|
||||
S32 num_results = mMonitorResults.size();
|
||||
for(S32 i = 0; i < num_results; i++)
|
||||
{
|
||||
os << llformat("%.4f %.4f\n", mMonitorResults[i].mTimeStamp, mMonitorResults[i].mDiff);
|
||||
}
|
||||
|
||||
os.flush();
|
||||
os.close();
|
||||
|
||||
mMonitorResults.clear();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------
|
||||
//definition of class LLSceneMonitorView
|
||||
//-------------------------------------------------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -64,6 +64,8 @@ public:
|
|||
bool needsUpdate() const;
|
||||
|
||||
LLTrace::ExtendableRecording* getRecording() const {return mRecording;}
|
||||
void dumpToFile(std::string file_name);
|
||||
bool hasResults() const { return !mMonitorResults.empty();}
|
||||
|
||||
private:
|
||||
void freezeScene();
|
||||
|
|
@ -72,6 +74,7 @@ private:
|
|||
bool preCapture();
|
||||
void generateDitheringTexture(S32 width, S32 height);
|
||||
|
||||
void addMonitorResult();
|
||||
private:
|
||||
BOOL mEnabled;
|
||||
BOOL mNeedsUpdateDiff;
|
||||
|
|
@ -99,6 +102,14 @@ private:
|
|||
std::vector<LLAnimPauseRequest> mAvatarPauseHandles;
|
||||
|
||||
LLTrace::ExtendableRecording* mRecording;
|
||||
|
||||
//---------------------------------------
|
||||
typedef struct _monitor_result
|
||||
{
|
||||
F32 mTimeStamp;
|
||||
F32 mDiff;
|
||||
} ll_monitor_result_t;
|
||||
std::vector<ll_monitor_result_t> mMonitorResults;
|
||||
};
|
||||
|
||||
class LLSceneMonitorView : public LLFloater
|
||||
|
|
|
|||
Loading…
Reference in New Issue