00001
00032 #ifndef LL_LLFRAMESTATS_H
00033 #define LL_LLFRAMESTATS_H
00034
00035 #include "stdtypes.h"
00036 #include "llstat.h"
00037 #include "llstring.h"
00038 #include "lldarray.h"
00039 #include "v4color.h"
00040 #include "lltimer.h"
00041
00042 class LLFrameStats
00043 {
00044 public:
00045
00046 enum EStat
00047 {
00048 IDLE_NETWORK,
00049 AGENT_MISC,
00050 OBJECT_UPDATE,
00051 CLEAN_DEAD,
00052 UPDATE_EFFECTS,
00053 IMAGE_UPDATE,
00054 UPDATE_MOVE,
00055 UPDATE_PARTICLES,
00056 UPDATE_CULL,
00057 UPDATE_GEOM,
00058 AUDIO,
00059 UPDATE_TEX_STATS,
00060 STATE_SORT,
00061 REBUILD,
00062 RENDER_SYNC,
00063 RENDER_GEOM,
00064 RENDER_UI,
00065 MISC_END,
00066 NUM_STATS
00067 };
00068
00069 LLFrameStats();
00070 virtual ~LLFrameStats();
00071
00072 void setFilename(const std::string& filename) { mFilename = filename; }
00073 void setSummaryFilename(const std::string& filename) { mSummaryFilename = filename; }
00074
00075 void setTrackStats(const BOOL track_stats);
00076
00077 void start(const EStat stat_name);
00078
00079 void addFrameData();
00080
00081 void dump();
00082
00083 const char *getCurStatName() const;
00084
00085 LLStat &getStat(const S32 i) { return mStats[i]; }
00086 const char *getStatLabel(const S32 i) const { return sStatLabels[i]; }
00087 LLColor4 getStatColor(const S32 i) const { return sStatColors[i]; }
00088
00089 static void startLogging(void *);
00090 static void stopLogging(void *);
00091 static void timedLogging60(void *);
00092 static void timedLogging30(void *);
00093 static void timedLogging10(void *);
00094 private:
00095 class FrameData
00096 {
00097 public:
00098 FrameData() {};
00099 F32 mDuration[NUM_STATS];
00100 F32 mTotalDuration;
00101 S32 mNumTriangles;
00102 S32 mNumObjects;
00103 S32 mNumVisibleObjects;
00104 S32 mNumFullUpdates;
00105 S32 mNumTerseUpdates;
00106 F32 mTotalVorbisTime;
00107 F32 mLongVorbisTime;
00108 S32 mNumVorbisDecodes;
00109 };
00110
00111 LLString mFilename;
00112 LLString mSummaryFilename;
00113
00114 BOOL mTrackStats;
00115 LLTimer mTimer;
00116 BOOL mUseTimer;
00117 F32 mStopTime;
00118
00119 EStat mCurrentStat;
00120
00121 LLStat mStats[NUM_STATS];
00122 static char *sStatLabels[NUM_STATS];
00123 static LLColor4 sStatColors[NUM_STATS];
00124 LLDynamicArray<FrameData> mFrameData;
00125 void stop();
00126 };
00127
00128 extern LLFrameStats gFrameStats;
00129
00130 #endif // LL_LLFRAMESTATS_H