llviewerstats.h
上传用户:king477883
上传日期:2021-03-01
资源大小:9553k
文件大小:6k
源码类别:

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file llviewerstats.h
  3.  * @brief LLViewerStats class header file
  4.  *
  5.  * $LicenseInfo:firstyear=2002&license=viewergpl$
  6.  * 
  7.  * Copyright (c) 2002-2010, Linden Research, Inc.
  8.  * 
  9.  * Second Life Viewer Source Code
  10.  * The source code in this file ("Source Code") is provided by Linden Lab
  11.  * to you under the terms of the GNU General Public License, version 2.0
  12.  * ("GPL"), unless you have obtained a separate licensing agreement
  13.  * ("Other License"), formally executed by you and Linden Lab.  Terms of
  14.  * the GPL can be found in doc/GPL-license.txt in this distribution, or
  15.  * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
  16.  * 
  17.  * There are special exceptions to the terms and conditions of the GPL as
  18.  * it is applied to this Source Code. View the full text of the exception
  19.  * in the file doc/FLOSS-exception.txt in this software distribution, or
  20.  * online at
  21.  * http://secondlifegrid.net/programs/open_source/licensing/flossexception
  22.  * 
  23.  * By copying, modifying or distributing this software, you acknowledge
  24.  * that you have read and understood your obligations described above,
  25.  * and agree to abide by those obligations.
  26.  * 
  27.  * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
  28.  * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
  29.  * COMPLETENESS OR PERFORMANCE.
  30.  * $/LicenseInfo$
  31.  */
  32. #ifndef LL_LLVIEWERSTATS_H
  33. #define LL_LLVIEWERSTATS_H
  34. #include "llstat.h"
  35. #include "lltextureinfo.h"
  36. class LLViewerStats : public LLSingleton<LLViewerStats>
  37. {
  38. public:
  39. LLStat mKBitStat;
  40. LLStat mLayersKBitStat;
  41. LLStat mObjectKBitStat;
  42. LLStat mAssetKBitStat;
  43. LLStat mTextureKBitStat;
  44. LLStat mVFSPendingOperations;
  45. LLStat mObjectsDrawnStat;
  46. LLStat mObjectsCulledStat;
  47. LLStat mObjectsTestedStat;
  48. LLStat mObjectsComparedStat;
  49. LLStat mObjectsOccludedStat;
  50. LLStat mFPSStat;
  51. LLStat mPacketsInStat;
  52. LLStat mPacketsLostStat;
  53. LLStat mPacketsOutStat;
  54. LLStat mPacketsLostPercentStat;
  55. LLStat mTexturePacketsStat;
  56. LLStat mActualInKBitStat; // From the packet ring (when faking a bad connection)
  57. LLStat mActualOutKBitStat; // From the packet ring (when faking a bad connection)
  58. LLStat mTrianglesDrawnStat;
  59. // Simulator stats
  60. LLStat mSimTimeDilation;
  61. LLStat mSimFPS;
  62. LLStat mSimPhysicsFPS;
  63. LLStat mSimAgentUPS;
  64. LLStat mSimScriptEPS;
  65. LLStat mSimFrameMsec;
  66. LLStat mSimNetMsec;
  67. LLStat mSimSimOtherMsec;
  68. LLStat mSimSimPhysicsMsec;
  69. LLStat mSimSimPhysicsStepMsec;
  70. LLStat mSimSimPhysicsShapeUpdateMsec;
  71. LLStat mSimSimPhysicsOtherMsec;
  72. LLStat mSimAgentMsec;
  73. LLStat mSimImagesMsec;
  74. LLStat mSimScriptMsec;
  75. LLStat mSimSpareMsec;
  76. LLStat mSimSleepMsec;
  77. LLStat mSimPumpIOMsec;
  78. LLStat mSimMainAgents;
  79. LLStat mSimChildAgents;
  80. LLStat mSimObjects;
  81. LLStat mSimActiveObjects;
  82. LLStat mSimActiveScripts;
  83. LLStat mSimInPPS;
  84. LLStat mSimOutPPS;
  85. LLStat mSimPendingDownloads;
  86. LLStat mSimPendingUploads;
  87. LLStat mSimPendingLocalUploads;
  88. LLStat mSimTotalUnackedBytes;
  89. LLStat mPhysicsPinnedTasks;
  90. LLStat mPhysicsLODTasks;
  91. LLStat mPhysicsMemoryAllocated;
  92. LLStat mSimPingStat;
  93. LLStat mNumImagesStat;
  94. LLStat mNumRawImagesStat;
  95. LLStat mGLTexMemStat;
  96. LLStat mGLBoundMemStat;
  97. LLStat mRawMemStat;
  98. LLStat mFormattedMemStat;
  99. LLStat mNumObjectsStat;
  100. LLStat mNumActiveObjectsStat;
  101. LLStat mNumNewObjectsStat;
  102. LLStat mNumSizeCulledStat;
  103. LLStat mNumVisCulledStat;
  104. void resetStats();
  105. public:
  106. // If you change this, please also add a corresponding text label
  107. // in statTypeToText in llviewerstats.cpp
  108. enum EStatType
  109. {
  110. ST_VERSION = 0,
  111. ST_AVATAR_EDIT_SECONDS = 1,
  112. ST_TOOLBOX_SECONDS = 2,
  113. ST_CHAT_COUNT = 3,
  114. ST_IM_COUNT = 4,
  115. ST_FULLSCREEN_BOOL = 5,
  116. ST_RELEASE_COUNT= 6,
  117. ST_CREATE_COUNT = 7,
  118. ST_REZ_COUNT = 8,
  119. ST_FPS_10_SECONDS = 9,
  120. ST_FPS_2_SECONDS = 10,
  121. ST_MOUSELOOK_SECONDS = 11,
  122. ST_FLY_COUNT = 12,
  123. ST_TELEPORT_COUNT = 13,
  124. ST_OBJECT_DELETE_COUNT = 14,
  125. ST_SNAPSHOT_COUNT = 15,
  126. ST_UPLOAD_SOUND_COUNT = 16,
  127. ST_UPLOAD_TEXTURE_COUNT = 17,
  128. ST_EDIT_TEXTURE_COUNT = 18,
  129. ST_KILLED_COUNT = 19,
  130. ST_FRAMETIME_JITTER = 20,
  131. ST_FRAMETIME_SLEW = 21,
  132. ST_INVENTORY_TOO_LONG = 22,
  133. ST_WEARABLES_TOO_LONG = 23,
  134. ST_LOGIN_SECONDS = 24,
  135. ST_LOGIN_TIMEOUT_COUNT = 25,
  136. ST_HAS_BAD_TIMER = 26,
  137. ST_DOWNLOAD_FAILED = 27,
  138. ST_LSL_SAVE_COUNT = 28,
  139. ST_UPLOAD_ANIM_COUNT = 29,
  140. ST_FPS_8_SECONDS = 30,
  141. ST_SIM_FPS_20_SECONDS = 31,
  142. ST_PHYS_FPS_20_SECONDS = 32,
  143. ST_LOSS_05_SECONDS = 33,
  144. ST_FPS_DROP_50_RATIO = 34,
  145. ST_ENABLE_VBO = 35,
  146. ST_DELTA_BANDWIDTH = 36,
  147. ST_MAX_BANDWIDTH = 37,
  148. ST_LIGHTING_DETAIL = 38,
  149. ST_VISIBLE_AVATARS = 39,
  150. ST_SHADER_OBJECTS = 40,
  151. ST_SHADER_ENVIRONMENT = 41,
  152. ST_DRAW_DIST = 42,
  153. ST_CHAT_BUBBLES = 43,
  154. ST_SHADER_AVATAR = 44,
  155. ST_FRAME_SECS = 45,
  156. ST_UPDATE_SECS = 46,
  157. ST_NETWORK_SECS = 47,
  158. ST_IMAGE_SECS = 48,
  159. ST_REBUILD_SECS = 49,
  160. ST_RENDER_SECS = 50,
  161. ST_CROSSING_AVG = 51,
  162. ST_CROSSING_MAX = 52,
  163. ST_LIBXUL_WIDGET_USED = 53, // Unused
  164. ST_WINDOW_WIDTH = 54,
  165. ST_WINDOW_HEIGHT = 55,
  166. ST_TEX_BAKES = 56,
  167. ST_TEX_REBAKES = 57,
  168. ST_COUNT = 58
  169. };
  170. LLViewerStats();
  171. ~LLViewerStats();
  172. // all return latest value of given stat
  173. F64 getStat(EStatType type) const;
  174. F64 setStat(EStatType type, F64 value); // set the stat to value
  175. F64 incStat(EStatType type, F64 value = 1.f); // add value to the stat
  176. void updateFrameStats(const F64 time_diff);
  177. void addToMessage(LLSD &body) const;
  178. private:
  179. F64 mStats[ST_COUNT];
  180. F64 mLastTimeDiff;  // used for time stat updates
  181. };
  182. static const F32 SEND_STATS_PERIOD = 300.0f;
  183. // The following are from (older?) statistics code found in appviewer.
  184. void init_statistics();
  185. void reset_statistics();
  186. void output_statistics(void*);
  187. void update_statistics(U32 frame_count);
  188. void send_stats();
  189. extern std::map<S32,LLFrameTimer> gDebugTimers;
  190. extern std::map<S32,std::string> gDebugTimerLabel;
  191. #endif // LL_LLVIEWERSTATS_H