1
/****************************************************************************
3
* Copyright (C) 2002 - 2008 by Vivante Corp.
5
* This program is free software; you can redistribute it and/or modify
6
* it under the terms of the GNU General Public Lisence as published by
7
* the Free Software Foundation; either version 2 of the license, or
8
* (at your option) any later version.
10
* This program is distributed in the hope that it will be useful,
11
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
* GNU General Public Lisence for more details.
15
* You should have received a copy of the GNU General Public License
16
* along with this program; if not write to the Free Software
17
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19
*****************************************************************************/
22
#ifndef __gc_profile_h_
23
#define __gc_profile_h_
25
#define GLVERTEX_OBJECT 10
26
#define GLVERTEX_OBJECT_BYTES 11
28
#define GLINDEX_OBJECT 20
29
#define GLINDEX_OBJECT_BYTES 21
31
#define GLTEXTURE_OBJECT 30
32
#define GLTEXTURE_OBJECT_BYTES 31
35
#define gcmPROFILE_GC(hal, _enum, value) countGCProfiler(hal, _enum, value)
37
#define gcmPROFILE_GC(hal, _enum, value)
40
void countGCProfiler( IN gcoHAL , gctUINT32 , int );
42
/* HW profile information. */
45
/* HW static counters. */
48
gctUINT32 shaderClock;
49
/* HW vairable counters. */
50
gctUINT32 gpuClockStart;
51
gctUINT32 gpuClockEnd;
53
/* HW vairable counters. */
54
gctUINT32 gpuCyclesCounter;
55
gctUINT32 gpuTotalRead64BytesPerFrame;
56
gctUINT32 gpuTotalWrite64BytesPerFrame;
60
gctUINT32 fe_counter_0;
61
gctUINT32 fe_counter_1;
62
gctUINT32 fe_counter_2;
63
gctUINT32 fe_counter_3;
64
gctUINT32 fe_counter_4;
65
gctUINT32 fe_counter_5;
66
gctUINT32 fe_counter_6;
67
gctUINT32 fe_counter_7;
68
gctUINT32 fe_counter_8;
69
gctUINT32 fe_counter_9;
70
gctUINT32 fe_counter_10;
71
gctUINT32 fe_counter_11;
72
gctUINT32 fe_counter_12;
73
gctUINT32 fe_counter_13;
74
gctUINT32 fe_counter_14;
79
gctUINT32 de_counter_0;
80
gctUINT32 de_counter_1;
81
gctUINT32 de_counter_2;
82
gctUINT32 de_counter_3;
83
gctUINT32 de_counter_4;
84
gctUINT32 de_counter_5;
85
gctUINT32 de_counter_6;
86
gctUINT32 de_counter_7;
87
gctUINT32 de_counter_8;
88
gctUINT32 de_counter_9;
89
gctUINT32 de_counter_10;
90
gctUINT32 de_counter_11;
91
gctUINT32 de_counter_12;
92
gctUINT32 de_counter_13;
93
gctUINT32 de_counter_14;
97
gctUINT32 pe_pixel_count_killed_by_color_pipe;
98
gctUINT32 pe_pixel_count_killed_by_depth_pipe;
99
gctUINT32 pe_pixel_count_drawn_by_color_pipe;
100
gctUINT32 pe_pixel_count_drawn_by_depth_pipe;
102
gctUINT32 pe_counter_4;
103
gctUINT32 pe_counter_5;
104
gctUINT32 pe_counter_6;
105
gctUINT32 pe_counter_7;
106
gctUINT32 pe_counter_8;
107
gctUINT32 pe_counter_9;
108
gctUINT32 pe_counter_10;
109
gctUINT32 pe_counter_11;
110
gctUINT32 pe_counter_12;
111
gctUINT32 pe_counter_13;
112
gctUINT32 pe_counter_14;
117
gctUINT32 sh_counter_0;
118
gctUINT32 sh_counter_1;
119
gctUINT32 sh_counter_2;
120
gctUINT32 sh_counter_3;
121
gctUINT32 sh_counter_4;
122
gctUINT32 sh_counter_5;
123
gctUINT32 sh_counter_6;
125
gctUINT32 ps_inst_counter;
126
gctUINT32 rendered_pixel_counter;
127
gctUINT32 vs_inst_counter;
128
gctUINT32 rendered_vertice_counter;
129
gctUINT32 vtx_branch_inst_counter;
130
gctUINT32 vtx_texld_inst_counter;
131
gctUINT32 pxl_branch_inst_counter;
132
gctUINT32 pxl_texld_inst_counter;
136
gctUINT32 pa_pixel_count_killed_by_color_pipe;
137
gctUINT32 pa_pixel_count_killed_by_depth_pipe;
138
gctUINT32 pa_pixel_count_drawn_by_color_pipe;
140
gctUINT32 pa_input_vtx_counter;
141
gctUINT32 pa_input_prim_counter;
142
gctUINT32 pa_output_prim_counter;
143
gctUINT32 pa_depth_clipped_counter;
144
gctUINT32 pa_trivial_rejected_counter;
145
gctUINT32 pa_culled_counter;
147
gctUINT32 pa_counter_9;
148
gctUINT32 pa_counter_10;
149
gctUINT32 pa_counter_11;
150
gctUINT32 pa_counter_12;
151
gctUINT32 pa_counter_13;
152
gctUINT32 pa_counter_14;
156
gctUINT32 se_culled_triangle_count;
157
gctUINT32 se_culled_lines_count;
159
gctUINT32 se_counter_2;
160
gctUINT32 se_counter_3;
161
gctUINT32 se_counter_4;
162
gctUINT32 se_counter_5;
163
gctUINT32 se_counter_6;
164
gctUINT32 se_counter_7;
165
gctUINT32 se_counter_8;
166
gctUINT32 se_counter_9;
167
gctUINT32 se_counter_10;
168
gctUINT32 se_counter_11;
169
gctUINT32 se_counter_12;
170
gctUINT32 se_counter_13;
171
gctUINT32 se_counter_14;
175
gctUINT32 ra_valid_pixel_count;
176
gctUINT32 ra_total_quad_count;
177
gctUINT32 ra_valid_quad_count_after_early_z;
178
gctUINT32 ra_total_primitive_count;
180
gctUINT32 ra_counter_4;
181
gctUINT32 ra_counter_5;
182
gctUINT32 ra_counter_6;
183
gctUINT32 ra_counter_7;
184
gctUINT32 ra_counter_8;
186
gctUINT32 ra_pipe_cache_miss_counter;
187
gctUINT32 ra_prefetch_cache_miss_counter;
188
gctUINT32 ra_eez_culled_counter;
190
gctUINT32 ra_counter_11;
191
gctUINT32 ra_counter_12;
192
gctUINT32 ra_counter_13;
193
gctUINT32 ra_counter_14;
197
gctUINT32 tx_total_bilinear_requests;
198
gctUINT32 tx_total_trilinear_requests;
199
gctUINT32 tx_total_discarded_texture_requests;
200
gctUINT32 tx_total_texture_requests;
202
gctUINT32 tx_counter_4;
204
gctUINT32 tx_mem_read_count;
205
gctUINT32 tx_mem_read_in_8B_count;
206
gctUINT32 tx_cache_miss_count;
207
gctUINT32 tx_cache_hit_texel_count;
208
gctUINT32 tx_cache_miss_texel_count;
210
gctUINT32 tx_counter_10;
211
gctUINT32 tx_counter_11;
212
gctUINT32 tx_counter_12;
213
gctUINT32 tx_counter_13;
214
gctUINT32 tx_counter_14;
219
gctUINT32 mc_counter_0;
221
gctUINT32 mc_total_read_req_8B_from_pipeline;
222
gctUINT32 mc_total_read_req_8B_from_IP;
223
gctUINT32 mc_total_write_req_8B_from_pipeline;
225
gctUINT32 mc_counter_4;
226
gctUINT32 mc_counter_5;
227
gctUINT32 mc_counter_6;
228
gctUINT32 mc_counter_7;
229
gctUINT32 mc_counter_8;
230
gctUINT32 mc_counter_9;
231
gctUINT32 mc_counter_10;
232
gctUINT32 mc_counter_11;
233
gctUINT32 mc_counter_12;
234
gctUINT32 mc_counter_13;
235
gctUINT32 mc_counter_14;
238
gctUINT32 hi_axi_cycles_read_request_stalled;
239
gctUINT32 hi_axi_cycles_write_request_stalled;
240
gctUINT32 hi_axi_cycles_write_data_stalled;
242
gctUINT32 hi_counter_3;
243
gctUINT32 hi_counter_4;
244
gctUINT32 hi_counter_5;
245
gctUINT32 hi_counter_6;
246
gctUINT32 hi_counter_7;
247
gctUINT32 hi_counter_8;
248
gctUINT32 hi_counter_9;
249
gctUINT32 hi_counter_10;
250
gctUINT32 hi_counter_11;
251
gctUINT32 hi_counter_12;
252
gctUINT32 hi_counter_13;
253
gctUINT32 hi_counter_14;
257
typedef struct _gcoHWProfile * gcoHWProfile;
260
/* HAL profile information. */
266
gctUINT8 fileTempString[256];
267
gctSIZE_T tempMsgLen;
269
/* Aggregate Information */
272
gctUINT32 frameStart;
275
/* Current frame information */
276
gctUINT32 frameNumber;
277
gctUINT32 frameStartTimeMsec;
278
gctUINT32 frameEndTimeMsec;
280
#if PROFILE_HAL_COUNTERS
281
gctUINT32 vertexBufferTotalBytesAlloc;
282
gctUINT32 vertexBufferNewBytesAlloc;
283
int vertexBufferTotalObjectsAlloc;
284
int vertexBufferNewObjectsAlloc;
286
gctUINT32 indexBufferTotalBytesAlloc;
287
gctUINT32 indexBufferNewBytesAlloc;
288
int indexBufferTotalObjectsAlloc;
289
int indexBufferNewObjectsAlloc;
291
gctUINT32 textureBufferTotalBytesAlloc;
292
gctUINT32 textureBufferNewBytesAlloc;
293
int textureBufferTotalObjectsAlloc;
294
int textureBufferNewObjectsAlloc;
296
gctUINT32 numCommits;
297
gctUINT32 drawPointCount;
298
gctUINT32 drawLineCount;
299
gctUINT32 drawTriangleCount;
300
gctUINT32 drawVertexCount;
301
gctUINT32 redundantStateChangeCalls;
304
#if PROFILE_HW_COUNTERS
305
gcoHWProfile hwProfile;