for SH-3833: dump frame diff values from the scene loading monitor to a log file

meow-7.2.2
Xiaohong Bao 2013-03-25 21:23:59 -06:00
parent ccb8d6f2c5
commit 268ea2902d
3 changed files with 58 additions and 3 deletions

View File

@ -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;

View File

@ -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
//-------------------------------------------------------------------------------------------------------------

View File

@ -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