/indra/llcommon/llmemtype.h

https://bitbucket.org/lindenlab/viewer-beta/ · C++ Header · 242 lines · 165 code · 41 blank · 36 comment · 1 complexity · 088a691951df8da2427258152fbb4bb0 MD5 · raw file

  1. /**
  2. * @file llmemtype.h
  3. * @brief Runtime memory usage debugging utilities.
  4. *
  5. * $LicenseInfo:firstyear=2005&license=viewerlgpl$
  6. * Second Life Viewer Source Code
  7. * Copyright (C) 2010, Linden Research, Inc.
  8. *
  9. * This library is free software; you can redistribute it and/or
  10. * modify it under the terms of the GNU Lesser General Public
  11. * License as published by the Free Software Foundation;
  12. * version 2.1 of the License only.
  13. *
  14. * This library is distributed in the hope that it will be useful,
  15. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  17. * Lesser General Public License for more details.
  18. *
  19. * You should have received a copy of the GNU Lesser General Public
  20. * License along with this library; if not, write to the Free Software
  21. * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  22. *
  23. * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
  24. * $/LicenseInfo$
  25. */
  26. #ifndef LL_MEMTYPE_H
  27. #define LL_MEMTYPE_H
  28. //----------------------------------------------------------------------------
  29. //----------------------------------------------------------------------------
  30. //----------------------------------------------------------------------------
  31. #include "linden_common.h"
  32. //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  33. // WARNING: Never commit with MEM_TRACK_MEM == 1
  34. //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  35. #define MEM_TRACK_MEM (0 && LL_WINDOWS)
  36. #include <vector>
  37. #define MEM_TYPE_NEW(T)
  38. class LL_COMMON_API LLMemType
  39. {
  40. public:
  41. // class we'll initialize all instances of as
  42. // static members of MemType. Then use
  43. // to construct any new mem type.
  44. class LL_COMMON_API DeclareMemType
  45. {
  46. public:
  47. DeclareMemType(char const * st);
  48. ~DeclareMemType();
  49. S32 mID;
  50. char const * mName;
  51. // array so we can map an index ID to Name
  52. static std::vector<char const *> mNameList;
  53. };
  54. LLMemType(DeclareMemType& dt);
  55. ~LLMemType();
  56. static char const * getNameFromID(S32 id);
  57. static DeclareMemType MTYPE_INIT;
  58. static DeclareMemType MTYPE_STARTUP;
  59. static DeclareMemType MTYPE_MAIN;
  60. static DeclareMemType MTYPE_FRAME;
  61. static DeclareMemType MTYPE_GATHER_INPUT;
  62. static DeclareMemType MTYPE_JOY_KEY;
  63. static DeclareMemType MTYPE_IDLE;
  64. static DeclareMemType MTYPE_IDLE_PUMP;
  65. static DeclareMemType MTYPE_IDLE_NETWORK;
  66. static DeclareMemType MTYPE_IDLE_UPDATE_REGIONS;
  67. static DeclareMemType MTYPE_IDLE_UPDATE_VIEWER_REGION;
  68. static DeclareMemType MTYPE_IDLE_UPDATE_SURFACE;
  69. static DeclareMemType MTYPE_IDLE_UPDATE_PARCEL_OVERLAY;
  70. static DeclareMemType MTYPE_IDLE_AUDIO;
  71. static DeclareMemType MTYPE_CACHE_PROCESS_PENDING;
  72. static DeclareMemType MTYPE_CACHE_PROCESS_PENDING_ASKS;
  73. static DeclareMemType MTYPE_CACHE_PROCESS_PENDING_REPLIES;
  74. static DeclareMemType MTYPE_MESSAGE_CHECK_ALL;
  75. static DeclareMemType MTYPE_MESSAGE_PROCESS_ACKS;
  76. static DeclareMemType MTYPE_RENDER;
  77. static DeclareMemType MTYPE_SLEEP;
  78. static DeclareMemType MTYPE_NETWORK;
  79. static DeclareMemType MTYPE_PHYSICS;
  80. static DeclareMemType MTYPE_INTERESTLIST;
  81. static DeclareMemType MTYPE_IMAGEBASE;
  82. static DeclareMemType MTYPE_IMAGERAW;
  83. static DeclareMemType MTYPE_IMAGEFORMATTED;
  84. static DeclareMemType MTYPE_APPFMTIMAGE;
  85. static DeclareMemType MTYPE_APPRAWIMAGE;
  86. static DeclareMemType MTYPE_APPAUXRAWIMAGE;
  87. static DeclareMemType MTYPE_DRAWABLE;
  88. static DeclareMemType MTYPE_OBJECT;
  89. static DeclareMemType MTYPE_OBJECT_PROCESS_UPDATE;
  90. static DeclareMemType MTYPE_OBJECT_PROCESS_UPDATE_CORE;
  91. static DeclareMemType MTYPE_DISPLAY;
  92. static DeclareMemType MTYPE_DISPLAY_UPDATE;
  93. static DeclareMemType MTYPE_DISPLAY_UPDATE_CAMERA;
  94. static DeclareMemType MTYPE_DISPLAY_UPDATE_GEOM;
  95. static DeclareMemType MTYPE_DISPLAY_SWAP;
  96. static DeclareMemType MTYPE_DISPLAY_UPDATE_HUD;
  97. static DeclareMemType MTYPE_DISPLAY_GEN_REFLECTION;
  98. static DeclareMemType MTYPE_DISPLAY_IMAGE_UPDATE;
  99. static DeclareMemType MTYPE_DISPLAY_STATE_SORT;
  100. static DeclareMemType MTYPE_DISPLAY_SKY;
  101. static DeclareMemType MTYPE_DISPLAY_RENDER_GEOM;
  102. static DeclareMemType MTYPE_DISPLAY_RENDER_FLUSH;
  103. static DeclareMemType MTYPE_DISPLAY_RENDER_UI;
  104. static DeclareMemType MTYPE_DISPLAY_RENDER_ATTACHMENTS;
  105. static DeclareMemType MTYPE_VERTEX_DATA;
  106. static DeclareMemType MTYPE_VERTEX_CONSTRUCTOR;
  107. static DeclareMemType MTYPE_VERTEX_DESTRUCTOR;
  108. static DeclareMemType MTYPE_VERTEX_CREATE_VERTICES;
  109. static DeclareMemType MTYPE_VERTEX_CREATE_INDICES;
  110. static DeclareMemType MTYPE_VERTEX_DESTROY_BUFFER;
  111. static DeclareMemType MTYPE_VERTEX_DESTROY_INDICES;
  112. static DeclareMemType MTYPE_VERTEX_UPDATE_VERTS;
  113. static DeclareMemType MTYPE_VERTEX_UPDATE_INDICES;
  114. static DeclareMemType MTYPE_VERTEX_ALLOCATE_BUFFER;
  115. static DeclareMemType MTYPE_VERTEX_RESIZE_BUFFER;
  116. static DeclareMemType MTYPE_VERTEX_MAP_BUFFER;
  117. static DeclareMemType MTYPE_VERTEX_MAP_BUFFER_VERTICES;
  118. static DeclareMemType MTYPE_VERTEX_MAP_BUFFER_INDICES;
  119. static DeclareMemType MTYPE_VERTEX_UNMAP_BUFFER;
  120. static DeclareMemType MTYPE_VERTEX_SET_STRIDE;
  121. static DeclareMemType MTYPE_VERTEX_SET_BUFFER;
  122. static DeclareMemType MTYPE_VERTEX_SETUP_VERTEX_BUFFER;
  123. static DeclareMemType MTYPE_VERTEX_CLEANUP_CLASS;
  124. static DeclareMemType MTYPE_SPACE_PARTITION;
  125. static DeclareMemType MTYPE_PIPELINE;
  126. static DeclareMemType MTYPE_PIPELINE_INIT;
  127. static DeclareMemType MTYPE_PIPELINE_CREATE_BUFFERS;
  128. static DeclareMemType MTYPE_PIPELINE_RESTORE_GL;
  129. static DeclareMemType MTYPE_PIPELINE_UNLOAD_SHADERS;
  130. static DeclareMemType MTYPE_PIPELINE_LIGHTING_DETAIL;
  131. static DeclareMemType MTYPE_PIPELINE_GET_POOL_TYPE;
  132. static DeclareMemType MTYPE_PIPELINE_ADD_POOL;
  133. static DeclareMemType MTYPE_PIPELINE_ALLOCATE_DRAWABLE;
  134. static DeclareMemType MTYPE_PIPELINE_ADD_OBJECT;
  135. static DeclareMemType MTYPE_PIPELINE_CREATE_OBJECTS;
  136. static DeclareMemType MTYPE_PIPELINE_UPDATE_MOVE;
  137. static DeclareMemType MTYPE_PIPELINE_UPDATE_GEOM;
  138. static DeclareMemType MTYPE_PIPELINE_MARK_VISIBLE;
  139. static DeclareMemType MTYPE_PIPELINE_MARK_MOVED;
  140. static DeclareMemType MTYPE_PIPELINE_MARK_SHIFT;
  141. static DeclareMemType MTYPE_PIPELINE_SHIFT_OBJECTS;
  142. static DeclareMemType MTYPE_PIPELINE_MARK_TEXTURED;
  143. static DeclareMemType MTYPE_PIPELINE_MARK_REBUILD;
  144. static DeclareMemType MTYPE_PIPELINE_UPDATE_CULL;
  145. static DeclareMemType MTYPE_PIPELINE_STATE_SORT;
  146. static DeclareMemType MTYPE_PIPELINE_POST_SORT;
  147. static DeclareMemType MTYPE_PIPELINE_RENDER_HUD_ELS;
  148. static DeclareMemType MTYPE_PIPELINE_RENDER_HL;
  149. static DeclareMemType MTYPE_PIPELINE_RENDER_GEOM;
  150. static DeclareMemType MTYPE_PIPELINE_RENDER_GEOM_DEFFERRED;
  151. static DeclareMemType MTYPE_PIPELINE_RENDER_GEOM_POST_DEF;
  152. static DeclareMemType MTYPE_PIPELINE_RENDER_GEOM_SHADOW;
  153. static DeclareMemType MTYPE_PIPELINE_RENDER_SELECT;
  154. static DeclareMemType MTYPE_PIPELINE_REBUILD_POOLS;
  155. static DeclareMemType MTYPE_PIPELINE_QUICK_LOOKUP;
  156. static DeclareMemType MTYPE_PIPELINE_RENDER_OBJECTS;
  157. static DeclareMemType MTYPE_PIPELINE_GENERATE_IMPOSTOR;
  158. static DeclareMemType MTYPE_PIPELINE_RENDER_BLOOM;
  159. static DeclareMemType MTYPE_UPKEEP_POOLS;
  160. static DeclareMemType MTYPE_AVATAR;
  161. static DeclareMemType MTYPE_AVATAR_MESH;
  162. static DeclareMemType MTYPE_PARTICLES;
  163. static DeclareMemType MTYPE_REGIONS;
  164. static DeclareMemType MTYPE_INVENTORY;
  165. static DeclareMemType MTYPE_INVENTORY_DRAW;
  166. static DeclareMemType MTYPE_INVENTORY_BUILD_NEW_VIEWS;
  167. static DeclareMemType MTYPE_INVENTORY_DO_FOLDER;
  168. static DeclareMemType MTYPE_INVENTORY_POST_BUILD;
  169. static DeclareMemType MTYPE_INVENTORY_FROM_XML;
  170. static DeclareMemType MTYPE_INVENTORY_CREATE_NEW_ITEM;
  171. static DeclareMemType MTYPE_INVENTORY_VIEW_INIT;
  172. static DeclareMemType MTYPE_INVENTORY_VIEW_SHOW;
  173. static DeclareMemType MTYPE_INVENTORY_VIEW_TOGGLE;
  174. static DeclareMemType MTYPE_ANIMATION;
  175. static DeclareMemType MTYPE_VOLUME;
  176. static DeclareMemType MTYPE_PRIMITIVE;
  177. static DeclareMemType MTYPE_SCRIPT;
  178. static DeclareMemType MTYPE_SCRIPT_RUN;
  179. static DeclareMemType MTYPE_SCRIPT_BYTECODE;
  180. static DeclareMemType MTYPE_IO_PUMP;
  181. static DeclareMemType MTYPE_IO_TCP;
  182. static DeclareMemType MTYPE_IO_BUFFER;
  183. static DeclareMemType MTYPE_IO_HTTP_SERVER;
  184. static DeclareMemType MTYPE_IO_SD_SERVER;
  185. static DeclareMemType MTYPE_IO_SD_CLIENT;
  186. static DeclareMemType MTYPE_IO_URL_REQUEST;
  187. static DeclareMemType MTYPE_DIRECTX_INIT;
  188. static DeclareMemType MTYPE_TEMP1;
  189. static DeclareMemType MTYPE_TEMP2;
  190. static DeclareMemType MTYPE_TEMP3;
  191. static DeclareMemType MTYPE_TEMP4;
  192. static DeclareMemType MTYPE_TEMP5;
  193. static DeclareMemType MTYPE_TEMP6;
  194. static DeclareMemType MTYPE_TEMP7;
  195. static DeclareMemType MTYPE_TEMP8;
  196. static DeclareMemType MTYPE_TEMP9;
  197. static DeclareMemType MTYPE_OTHER; // Special; used by display code
  198. S32 mTypeIndex;
  199. };
  200. //----------------------------------------------------------------------------
  201. #endif