llframestats.h

Go to the documentation of this file.
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         // Affects sStatLabels and sStatColors in llframestats.cpp
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

Generated on Thu Jul 1 06:08:38 2010 for Second Life Viewer by  doxygen 1.4.7