summaryrefslogtreecommitdiff
path: root/indra/llcommon/llmemtype.h
blob: 5952a3a7c5a5b69ea782a1b174aaf145db0aa774 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
/** 
 * @file llmemtype.h
 * @brief Runtime memory usage debugging utilities.
 *
 * $LicenseInfo:firstyear=2005&license=viewergpl$
 * 
 * Copyright (c) 2005-2009, Linden Research, Inc.
 * 
 * Second Life Viewer Source Code
 * The source code in this file ("Source Code") is provided by Linden Lab
 * to you under the terms of the GNU General Public License, version 2.0
 * ("GPL"), unless you have obtained a separate licensing agreement
 * ("Other License"), formally executed by you and Linden Lab.  Terms of
 * the GPL can be found in doc/GPL-license.txt in this distribution, or
 * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
 * 
 * There are special exceptions to the terms and conditions of the GPL as
 * it is applied to this Source Code. View the full text of the exception
 * in the file doc/FLOSS-exception.txt in this software distribution, or
 * online at
 * http://secondlifegrid.net/programs/open_source/licensing/flossexception
 * 
 * By copying, modifying or distributing this software, you acknowledge
 * that you have read and understood your obligations described above,
 * and agree to abide by those obligations.
 * 
 * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
 * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
 * COMPLETENESS OR PERFORMANCE.
 * $/LicenseInfo$
 */

#ifndef LL_MEMTYPE_H
#define LL_MEMTYPE_H

//----------------------------------------------------------------------------
//----------------------------------------------------------------------------

//----------------------------------------------------------------------------

#include "linden_common.h"
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// WARNING: Never commit with MEM_TRACK_MEM == 1
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#define MEM_TRACK_MEM (0 && LL_WINDOWS)

#include <vector>

#define MEM_TYPE_NEW(T)

class LL_COMMON_API LLMemType
{
public:

	// class we'll initialize all instances of as
	// static members of MemType.  Then use
	// to construct any new mem type.
	class LL_COMMON_API DeclareMemType
	{
	public:
		DeclareMemType(char const * st);
		~DeclareMemType();
	
		S32 mID;
		char const * mName;
		
		// array so we can map an index ID to Name
		static std::vector<char const *> mNameList;
	};

	LLMemType(DeclareMemType& dt);
	~LLMemType();

	static char const * getNameFromID(S32 id);

	static DeclareMemType MTYPE_INIT;
	static DeclareMemType MTYPE_STARTUP;
	static DeclareMemType MTYPE_MAIN;
	static DeclareMemType MTYPE_FRAME;

	static DeclareMemType MTYPE_GATHER_INPUT;
	static DeclareMemType MTYPE_JOY_KEY;

	static DeclareMemType MTYPE_IDLE;
	static DeclareMemType MTYPE_IDLE_PUMP;
	static DeclareMemType MTYPE_IDLE_NETWORK;
	static DeclareMemType MTYPE_IDLE_UPDATE_REGIONS;
	static DeclareMemType MTYPE_IDLE_UPDATE_VIEWER_REGION;
	static DeclareMemType MTYPE_IDLE_UPDATE_SURFACE;
	static DeclareMemType MTYPE_IDLE_UPDATE_PARCEL_OVERLAY;
	static DeclareMemType MTYPE_IDLE_AUDIO;

	static DeclareMemType MTYPE_CACHE_PROCESS_PENDING;
	static DeclareMemType MTYPE_CACHE_PROCESS_PENDING_ASKS;
	static DeclareMemType MTYPE_CACHE_PROCESS_PENDING_REPLIES;

	static DeclareMemType MTYPE_MESSAGE_CHECK_ALL;
	static DeclareMemType MTYPE_MESSAGE_PROCESS_ACKS;

	static DeclareMemType MTYPE_RENDER;
	static DeclareMemType MTYPE_SLEEP;

	static DeclareMemType MTYPE_NETWORK;
	static DeclareMemType MTYPE_PHYSICS;
	static DeclareMemType MTYPE_INTERESTLIST;

	static DeclareMemType MTYPE_IMAGEBASE;
	static DeclareMemType MTYPE_IMAGERAW;
	static DeclareMemType MTYPE_IMAGEFORMATTED;
	
	static DeclareMemType MTYPE_APPFMTIMAGE;
	static DeclareMemType MTYPE_APPRAWIMAGE;
	static DeclareMemType MTYPE_APPAUXRAWIMAGE;
	
	static DeclareMemType MTYPE_DRAWABLE;
	
	static DeclareMemType MTYPE_OBJECT;
	static DeclareMemType MTYPE_OBJECT_PROCESS_UPDATE;
	static DeclareMemType MTYPE_OBJECT_PROCESS_UPDATE_CORE;

	static DeclareMemType MTYPE_DISPLAY;
	static DeclareMemType MTYPE_DISPLAY_UPDATE;
	static DeclareMemType MTYPE_DISPLAY_UPDATE_CAMERA;
	static DeclareMemType MTYPE_DISPLAY_UPDATE_GEOM;
	static DeclareMemType MTYPE_DISPLAY_SWAP;
	static DeclareMemType MTYPE_DISPLAY_UPDATE_HUD;
	static DeclareMemType MTYPE_DISPLAY_GEN_REFLECTION;
	static DeclareMemType MTYPE_DISPLAY_IMAGE_UPDATE;
	static DeclareMemType MTYPE_DISPLAY_STATE_SORT;
	static DeclareMemType MTYPE_DISPLAY_SKY;
	static DeclareMemType MTYPE_DISPLAY_RENDER_GEOM;
	static DeclareMemType MTYPE_DISPLAY_RENDER_FLUSH;
	static DeclareMemType MTYPE_DISPLAY_RENDER_UI;
	static DeclareMemType MTYPE_DISPLAY_RENDER_ATTACHMENTS;

	static DeclareMemType MTYPE_VERTEX_DATA;
	static DeclareMemType MTYPE_VERTEX_CONSTRUCTOR;
	static DeclareMemType MTYPE_VERTEX_DESTRUCTOR;
	static DeclareMemType MTYPE_VERTEX_CREATE_VERTICES;
	static DeclareMemType MTYPE_VERTEX_CREATE_INDICES;
	static DeclareMemType MTYPE_VERTEX_DESTROY_BUFFER;	
	static DeclareMemType MTYPE_VERTEX_DESTROY_INDICES;
	static DeclareMemType MTYPE_VERTEX_UPDATE_VERTS;
	static DeclareMemType MTYPE_VERTEX_UPDATE_INDICES;
	static DeclareMemType MTYPE_VERTEX_ALLOCATE_BUFFER;
	static DeclareMemType MTYPE_VERTEX_RESIZE_BUFFER;
	static DeclareMemType MTYPE_VERTEX_MAP_BUFFER;
	static DeclareMemType MTYPE_VERTEX_MAP_BUFFER_VERTICES;
	static DeclareMemType MTYPE_VERTEX_MAP_BUFFER_INDICES;
	static DeclareMemType MTYPE_VERTEX_UNMAP_BUFFER;
	static DeclareMemType MTYPE_VERTEX_SET_STRIDE;
	static DeclareMemType MTYPE_VERTEX_SET_BUFFER;
	static DeclareMemType MTYPE_VERTEX_SETUP_VERTEX_BUFFER;
	static DeclareMemType MTYPE_VERTEX_CLEANUP_CLASS;

	static DeclareMemType MTYPE_SPACE_PARTITION;

	static DeclareMemType MTYPE_PIPELINE;
	static DeclareMemType MTYPE_PIPELINE_INIT;
	static DeclareMemType MTYPE_PIPELINE_CREATE_BUFFERS;
	static DeclareMemType MTYPE_PIPELINE_RESTORE_GL;
	static DeclareMemType MTYPE_PIPELINE_UNLOAD_SHADERS;
	static DeclareMemType MTYPE_PIPELINE_LIGHTING_DETAIL;
	static DeclareMemType MTYPE_PIPELINE_GET_POOL_TYPE;
	static DeclareMemType MTYPE_PIPELINE_ADD_POOL;
	static DeclareMemType MTYPE_PIPELINE_ALLOCATE_DRAWABLE;
	static DeclareMemType MTYPE_PIPELINE_ADD_OBJECT;
	static DeclareMemType MTYPE_PIPELINE_CREATE_OBJECTS;
	static DeclareMemType MTYPE_PIPELINE_UPDATE_MOVE;
	static DeclareMemType MTYPE_PIPELINE_UPDATE_GEOM;
	static DeclareMemType MTYPE_PIPELINE_MARK_VISIBLE;
	static DeclareMemType MTYPE_PIPELINE_MARK_MOVED;
	static DeclareMemType MTYPE_PIPELINE_MARK_SHIFT;
	static DeclareMemType MTYPE_PIPELINE_SHIFT_OBJECTS;
	static DeclareMemType MTYPE_PIPELINE_MARK_TEXTURED;
	static DeclareMemType MTYPE_PIPELINE_MARK_REBUILD;
	static DeclareMemType MTYPE_PIPELINE_UPDATE_CULL;
	static DeclareMemType MTYPE_PIPELINE_STATE_SORT;
	static DeclareMemType MTYPE_PIPELINE_POST_SORT;
	
	static DeclareMemType MTYPE_PIPELINE_RENDER_HUD_ELS;
	static DeclareMemType MTYPE_PIPELINE_RENDER_HL;
	static DeclareMemType MTYPE_PIPELINE_RENDER_GEOM;
	static DeclareMemType MTYPE_PIPELINE_RENDER_GEOM_DEFFERRED;
	static DeclareMemType MTYPE_PIPELINE_RENDER_GEOM_POST_DEF;
	static DeclareMemType MTYPE_PIPELINE_RENDER_GEOM_SHADOW;
	static DeclareMemType MTYPE_PIPELINE_RENDER_SELECT;
	static DeclareMemType MTYPE_PIPELINE_REBUILD_POOLS;
	static DeclareMemType MTYPE_PIPELINE_QUICK_LOOKUP;
	static DeclareMemType MTYPE_PIPELINE_RENDER_OBJECTS;
	static DeclareMemType MTYPE_PIPELINE_GENERATE_IMPOSTOR;
	static DeclareMemType MTYPE_PIPELINE_RENDER_BLOOM;

	static DeclareMemType MTYPE_UPKEEP_POOLS;

	static DeclareMemType MTYPE_AVATAR;
	static DeclareMemType MTYPE_AVATAR_MESH;
	static DeclareMemType MTYPE_PARTICLES;
	static DeclareMemType MTYPE_REGIONS;

	static DeclareMemType MTYPE_INVENTORY;
	static DeclareMemType MTYPE_INVENTORY_DRAW;
	static DeclareMemType MTYPE_INVENTORY_BUILD_NEW_VIEWS;
	static DeclareMemType MTYPE_INVENTORY_DO_FOLDER;
	static DeclareMemType MTYPE_INVENTORY_POST_BUILD;
	static DeclareMemType MTYPE_INVENTORY_FROM_XML;
	static DeclareMemType MTYPE_INVENTORY_CREATE_NEW_ITEM;
	static DeclareMemType MTYPE_INVENTORY_VIEW_INIT;
	static DeclareMemType MTYPE_INVENTORY_VIEW_SHOW;
	static DeclareMemType MTYPE_INVENTORY_VIEW_TOGGLE;

	static DeclareMemType MTYPE_ANIMATION;
	static DeclareMemType MTYPE_VOLUME;
	static DeclareMemType MTYPE_PRIMITIVE;
	
	static DeclareMemType MTYPE_SCRIPT;
	static DeclareMemType MTYPE_SCRIPT_RUN;
	static DeclareMemType MTYPE_SCRIPT_BYTECODE;
	
	static DeclareMemType MTYPE_IO_PUMP;
	static DeclareMemType MTYPE_IO_TCP;
	static DeclareMemType MTYPE_IO_BUFFER;
	static DeclareMemType MTYPE_IO_HTTP_SERVER;
	static DeclareMemType MTYPE_IO_SD_SERVER;
	static DeclareMemType MTYPE_IO_SD_CLIENT;
	static DeclareMemType MTYPE_IO_URL_REQUEST;

	static DeclareMemType MTYPE_DIRECTX_INIT;

	static DeclareMemType MTYPE_TEMP1;
	static DeclareMemType MTYPE_TEMP2;
	static DeclareMemType MTYPE_TEMP3;
	static DeclareMemType MTYPE_TEMP4;
	static DeclareMemType MTYPE_TEMP5;
	static DeclareMemType MTYPE_TEMP6;
	static DeclareMemType MTYPE_TEMP7;
	static DeclareMemType MTYPE_TEMP8;
	static DeclareMemType MTYPE_TEMP9;

	static DeclareMemType MTYPE_OTHER; // Special; used by display code

	S32 mTypeIndex;
};

//----------------------------------------------------------------------------

#endif