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
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
|
/****************************************************************************
*
* Copyright (C) 2005 - 2013 by Vivante Corp.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the license, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
*****************************************************************************/
#ifndef __gc_hal_profiler_h_
#define __gc_hal_profiler_h_
#ifdef __cplusplus
extern "C" {
#endif
#define GLVERTEX_OBJECT 10
#define GLVERTEX_OBJECT_BYTES 11
#define GLINDEX_OBJECT 20
#define GLINDEX_OBJECT_BYTES 21
#define GLTEXTURE_OBJECT 30
#define GLTEXTURE_OBJECT_BYTES 31
#if VIVANTE_PROFILER
#define gcmPROFILE_GC(Enum, Value) gcoPROFILER_Count(gcvNULL, Enum, Value)
#else
#define gcmPROFILE_GC(Enum, Value) do { } while (gcvFALSE)
#endif
#ifndef gcdNEW_PROFILER_FILE
#define gcdNEW_PROFILER_FILE 1
#endif
#define ES11_CALLS 151
#define ES11_DRAWCALLS (ES11_CALLS + 1)
#define ES11_STATECHANGECALLS (ES11_DRAWCALLS + 1)
#define ES11_POINTCOUNT (ES11_STATECHANGECALLS + 1)
#define ES11_LINECOUNT (ES11_POINTCOUNT + 1)
#define ES11_TRIANGLECOUNT (ES11_LINECOUNT + 1)
#define ES20_CALLS 159
#define ES20_DRAWCALLS (ES20_CALLS + 1)
#define ES20_STATECHANGECALLS (ES20_DRAWCALLS + 1)
#define ES20_POINTCOUNT (ES20_STATECHANGECALLS + 1)
#define ES20_LINECOUNT (ES20_POINTCOUNT + 1)
#define ES20_TRIANGLECOUNT (ES20_LINECOUNT + 1)
#define VG11_CALLS 88
#define VG11_DRAWCALLS (VG11_CALLS + 1)
#define VG11_STATECHANGECALLS (VG11_DRAWCALLS + 1)
#define VG11_FILLCOUNT (VG11_STATECHANGECALLS + 1)
#define VG11_STROKECOUNT (VG11_FILLCOUNT + 1)
/* End of Driver API ID Definitions. */
/* HAL & MISC IDs. */
#define HAL_VERTBUFNEWBYTEALLOC 1
#define HAL_VERTBUFTOTALBYTEALLOC (HAL_VERTBUFNEWBYTEALLOC + 1)
#define HAL_VERTBUFNEWOBJALLOC (HAL_VERTBUFTOTALBYTEALLOC + 1)
#define HAL_VERTBUFTOTALOBJALLOC (HAL_VERTBUFNEWOBJALLOC + 1)
#define HAL_INDBUFNEWBYTEALLOC (HAL_VERTBUFTOTALOBJALLOC + 1)
#define HAL_INDBUFTOTALBYTEALLOC (HAL_INDBUFNEWBYTEALLOC + 1)
#define HAL_INDBUFNEWOBJALLOC (HAL_INDBUFTOTALBYTEALLOC + 1)
#define HAL_INDBUFTOTALOBJALLOC (HAL_INDBUFNEWOBJALLOC + 1)
#define HAL_TEXBUFNEWBYTEALLOC (HAL_INDBUFTOTALOBJALLOC + 1)
#define HAL_TEXBUFTOTALBYTEALLOC (HAL_TEXBUFNEWBYTEALLOC + 1)
#define HAL_TEXBUFNEWOBJALLOC (HAL_TEXBUFTOTALBYTEALLOC + 1)
#define HAL_TEXBUFTOTALOBJALLOC (HAL_TEXBUFNEWOBJALLOC + 1)
#define GPU_CYCLES 1
#define GPU_READ64BYTE (GPU_CYCLES + 1)
#define GPU_WRITE64BYTE (GPU_READ64BYTE + 1)
#define GPU_TOTALCYCLES (GPU_WRITE64BYTE + 1)
#define GPU_IDLECYCLES (GPU_TOTALCYCLES + 1)
#define VS_INSTCOUNT 1
#define VS_BRANCHINSTCOUNT (VS_INSTCOUNT + 1)
#define VS_TEXLDINSTCOUNT (VS_BRANCHINSTCOUNT + 1)
#define VS_RENDEREDVERTCOUNT (VS_TEXLDINSTCOUNT + 1)
#define VS_SOURCE (VS_RENDEREDVERTCOUNT + 1)
#define PS_INSTCOUNT 1
#define PS_BRANCHINSTCOUNT (PS_INSTCOUNT + 1)
#define PS_TEXLDINSTCOUNT (PS_BRANCHINSTCOUNT + 1)
#define PS_RENDEREDPIXCOUNT (PS_TEXLDINSTCOUNT + 1)
#define PS_SOURCE (PS_RENDEREDPIXCOUNT + 1)
#define PA_INVERTCOUNT 1
#define PA_INPRIMCOUNT (PA_INVERTCOUNT + 1)
#define PA_OUTPRIMCOUNT (PA_INPRIMCOUNT + 1)
#define PA_DEPTHCLIPCOUNT (PA_OUTPRIMCOUNT + 1)
#define PA_TRIVIALREJCOUNT (PA_DEPTHCLIPCOUNT + 1)
#define PA_CULLCOUNT (PA_TRIVIALREJCOUNT + 1)
#define SE_TRIANGLECOUNT 1
#define SE_LINECOUNT (SE_TRIANGLECOUNT + 1)
#define RA_VALIDPIXCOUNT 1
#define RA_TOTALQUADCOUNT (RA_VALIDPIXCOUNT + 1)
#define RA_VALIDQUADCOUNTEZ (RA_TOTALQUADCOUNT + 1)
#define RA_TOTALPRIMCOUNT (RA_VALIDQUADCOUNTEZ + 1)
#define RA_PIPECACHEMISSCOUNT (RA_TOTALPRIMCOUNT + 1)
#define RA_PREFCACHEMISSCOUNT (RA_PIPECACHEMISSCOUNT + 1)
#define RA_EEZCULLCOUNT (RA_PREFCACHEMISSCOUNT + 1)
#define TX_TOTBILINEARREQ 1
#define TX_TOTTRILINEARREQ (TX_TOTBILINEARREQ + 1)
#define TX_TOTDISCARDTEXREQ (TX_TOTTRILINEARREQ + 1)
#define TX_TOTTEXREQ (TX_TOTDISCARDTEXREQ + 1)
#define TX_MEMREADCOUNT (TX_TOTTEXREQ + 1)
#define TX_MEMREADIN8BCOUNT (TX_MEMREADCOUNT + 1)
#define TX_CACHEMISSCOUNT (TX_MEMREADIN8BCOUNT + 1)
#define TX_CACHEHITTEXELCOUNT (TX_CACHEMISSCOUNT + 1)
#define TX_CACHEMISSTEXELCOUNT (TX_CACHEHITTEXELCOUNT + 1)
#define PE_KILLEDBYCOLOR 1
#define PE_KILLEDBYDEPTH (PE_KILLEDBYCOLOR + 1)
#define PE_DRAWNBYCOLOR (PE_KILLEDBYDEPTH + 1)
#define PE_DRAWNBYDEPTH (PE_DRAWNBYCOLOR + 1)
#define MC_READREQ8BPIPE 1
#define MC_READREQ8BIP (MC_READREQ8BPIPE + 1)
#define MC_WRITEREQ8BPIPE (MC_READREQ8BIP + 1)
#define AXI_READREQSTALLED 1
#define AXI_WRITEREQSTALLED (AXI_READREQSTALLED + 1)
#define AXI_WRITEDATASTALLED (AXI_WRITEREQSTALLED + 1)
#define PVS_INSTRCOUNT 1
#define PVS_ALUINSTRCOUNT (PVS_INSTRCOUNT + 1)
#define PVS_TEXINSTRCOUNT (PVS_ALUINSTRCOUNT + 1)
#define PVS_ATTRIBCOUNT (PVS_TEXINSTRCOUNT + 1)
#define PVS_UNIFORMCOUNT (PVS_ATTRIBCOUNT + 1)
#define PVS_FUNCTIONCOUNT (PVS_UNIFORMCOUNT + 1)
#define PVS_SOURCE (PVS_FUNCTIONCOUNT + 1)
#define PPS_INSTRCOUNT 1
#define PPS_ALUINSTRCOUNT (PPS_INSTRCOUNT + 1)
#define PPS_TEXINSTRCOUNT (PPS_ALUINSTRCOUNT + 1)
#define PPS_ATTRIBCOUNT (PPS_TEXINSTRCOUNT + 1)
#define PPS_UNIFORMCOUNT (PPS_ATTRIBCOUNT + 1)
#define PPS_FUNCTIONCOUNT (PPS_UNIFORMCOUNT + 1)
#define PPS_SOURCE (PPS_FUNCTIONCOUNT + 1)
/* End of MISC Counter IDs. */
#ifdef gcdNEW_PROFILER_FILE
/* Category Constants. */
#define VPHEADER 0x010000
#define VPG_INFO 0x020000
#define VPG_TIME 0x030000
#define VPG_MEM 0x040000
#define VPG_ES11 0x050000
#define VPG_ES20 0x060000
#define VPG_VG11 0x070000
#define VPG_HAL 0x080000
#define VPG_HW 0x090000
#define VPG_GPU 0x0a0000
#define VPG_VS 0x0b0000
#define VPG_PS 0x0c0000
#define VPG_PA 0x0d0000
#define VPG_SETUP 0x0e0000
#define VPG_RA 0x0f0000
#define VPG_TX 0x100000
#define VPG_PE 0x110000
#define VPG_MC 0x120000
#define VPG_AXI 0x130000
#define VPG_PROG 0x140000
#define VPG_PVS 0x150000
#define VPG_PPS 0x160000
#define VPG_ES11_TIME 0x170000
#define VPG_ES20_TIME 0x180000
#define VPG_FRAME 0x190000
#define VPG_ES11_DRAW 0x200000
#define VPG_ES20_DRAW 0x210000
#define VPG_END 0xff0000
/* Info. */
#define VPC_INFOCOMPANY (VPG_INFO + 1)
#define VPC_INFOVERSION (VPC_INFOCOMPANY + 1)
#define VPC_INFORENDERER (VPC_INFOVERSION + 1)
#define VPC_INFOREVISION (VPC_INFORENDERER + 1)
#define VPC_INFODRIVER (VPC_INFOREVISION + 1)
#define VPC_INFODRIVERMODE (VPC_INFODRIVER + 1)
#define VPC_INFOSCREENSIZE (VPC_INFODRIVERMODE + 1)
/* Counter Constants. */
#define VPC_ELAPSETIME (VPG_TIME + 1)
#define VPC_CPUTIME (VPC_ELAPSETIME + 1)
#define VPC_MEMMAXRES (VPG_MEM + 1)
#define VPC_MEMSHARED (VPC_MEMMAXRES + 1)
#define VPC_MEMUNSHAREDDATA (VPC_MEMSHARED + 1)
#define VPC_MEMUNSHAREDSTACK (VPC_MEMUNSHAREDDATA + 1)
/* OpenGL ES11 Statics Counter IDs. */
#define VPC_ES11CALLS (VPG_ES11 + ES11_CALLS)
#define VPC_ES11DRAWCALLS (VPG_ES11 + ES11_DRAWCALLS)
#define VPC_ES11STATECHANGECALLS (VPG_ES11 + ES11_STATECHANGECALLS)
#define VPC_ES11POINTCOUNT (VPG_ES11 + ES11_POINTCOUNT)
#define VPC_ES11LINECOUNT (VPG_ES11 + ES11_LINECOUNT)
#define VPC_ES11TRIANGLECOUNT (VPG_ES11 + ES11_TRIANGLECOUNT)
/* OpenGL ES20 Statistics Counter IDs. */
#define VPC_ES20CALLS (VPG_ES20 + ES20_CALLS)
#define VPC_ES20DRAWCALLS (VPG_ES20 + ES20_DRAWCALLS)
#define VPC_ES20STATECHANGECALLS (VPG_ES20 + ES20_STATECHANGECALLS)
#define VPC_ES20POINTCOUNT (VPG_ES20 + ES20_POINTCOUNT)
#define VPC_ES20LINECOUNT (VPG_ES20 + ES20_LINECOUNT)
#define VPC_ES20TRIANGLECOUNT (VPG_ES20 + ES20_TRIANGLECOUNT)
/* OpenVG Statistics Counter IDs. */
#define VPC_VG11CALLS (VPG_VG11 + VG11_CALLS)
#define VPC_VG11DRAWCALLS (VPG_VG11 + VG11_DRAWCALLS)
#define VPC_VG11STATECHANGECALLS (VPG_VG11 + VG11_STATECHANGECALLS)
#define VPC_VG11FILLCOUNT (VPG_VG11 + VG11_FILLCOUNT)
#define VPC_VG11STROKECOUNT (VPG_VG11 + VG11_STROKECOUNT)
/* HAL Counters. */
#define VPC_HALVERTBUFNEWBYTEALLOC (VPG_HAL + HAL_VERTBUFNEWBYTEALLOC)
#define VPC_HALVERTBUFTOTALBYTEALLOC (VPG_HAL + HAL_VERTBUFTOTALBYTEALLOC)
#define VPC_HALVERTBUFNEWOBJALLOC (VPG_HAL + HAL_VERTBUFNEWOBJALLOC)
#define VPC_HALVERTBUFTOTALOBJALLOC (VPG_HAL + HAL_VERTBUFTOTALOBJALLOC)
#define VPC_HALINDBUFNEWBYTEALLOC (VPG_HAL + HAL_INDBUFNEWBYTEALLOC)
#define VPC_HALINDBUFTOTALBYTEALLOC (VPG_HAL + HAL_INDBUFTOTALBYTEALLOC)
#define VPC_HALINDBUFNEWOBJALLOC (VPG_HAL + HAL_INDBUFNEWOBJALLOC)
#define VPC_HALINDBUFTOTALOBJALLOC (VPG_HAL + HAL_INDBUFTOTALOBJALLOC)
#define VPC_HALTEXBUFNEWBYTEALLOC (VPG_HAL + HAL_TEXBUFNEWBYTEALLOC)
#define VPC_HALTEXBUFTOTALBYTEALLOC (VPG_HAL + HAL_TEXBUFTOTALBYTEALLOC)
#define VPC_HALTEXBUFNEWOBJALLOC (VPG_HAL + HAL_TEXBUFNEWOBJALLOC)
#define VPC_HALTEXBUFTOTALOBJALLOC (VPG_HAL + HAL_TEXBUFTOTALOBJALLOC)
/* HW: GPU Counters. */
#define VPC_GPUCYCLES (VPG_GPU + GPU_CYCLES)
#define VPC_GPUREAD64BYTE (VPG_GPU + GPU_READ64BYTE)
#define VPC_GPUWRITE64BYTE (VPG_GPU + GPU_WRITE64BYTE)
#define VPC_GPUTOTALCYCLES (VPG_GPU + GPU_TOTALCYCLES)
#define VPC_GPUIDLECYCLES (VPG_GPU + GPU_IDLECYCLES)
/* HW: Shader Counters. */
#define VPC_VSINSTCOUNT (VPG_VS + VS_INSTCOUNT)
#define VPC_VSBRANCHINSTCOUNT (VPG_VS + VS_BRANCHINSTCOUNT)
#define VPC_VSTEXLDINSTCOUNT (VPG_VS + VS_TEXLDINSTCOUNT)
#define VPC_VSRENDEREDVERTCOUNT (VPG_VS + VS_RENDEREDVERTCOUNT)
/* HW: PS Count. */
#define VPC_PSINSTCOUNT (VPG_PS + PS_INSTCOUNT)
#define VPC_PSBRANCHINSTCOUNT (VPG_PS + PS_BRANCHINSTCOUNT)
#define VPC_PSTEXLDINSTCOUNT (VPG_PS + PS_TEXLDINSTCOUNT)
#define VPC_PSRENDEREDPIXCOUNT (VPG_PS + PS_RENDEREDPIXCOUNT)
/* HW: PA Counters. */
#define VPC_PAINVERTCOUNT (VPG_PA + PA_INVERTCOUNT)
#define VPC_PAINPRIMCOUNT (VPG_PA + PA_INPRIMCOUNT)
#define VPC_PAOUTPRIMCOUNT (VPG_PA + PA_OUTPRIMCOUNT)
#define VPC_PADEPTHCLIPCOUNT (VPG_PA + PA_DEPTHCLIPCOUNT)
#define VPC_PATRIVIALREJCOUNT (VPG_PA + PA_TRIVIALREJCOUNT)
#define VPC_PACULLCOUNT (VPG_PA + PA_CULLCOUNT)
/* HW: Setup Counters. */
#define VPC_SETRIANGLECOUNT (VPG_SETUP + SE_TRIANGLECOUNT)
#define VPC_SELINECOUNT (VPG_SETUP + SE_LINECOUNT)
/* HW: RA Counters. */
#define VPC_RAVALIDPIXCOUNT (VPG_RA + RA_VALIDPIXCOUNT)
#define VPC_RATOTALQUADCOUNT (VPG_RA + RA_TOTALQUADCOUNT)
#define VPC_RAVALIDQUADCOUNTEZ (VPG_RA + RA_VALIDQUADCOUNTEZ)
#define VPC_RATOTALPRIMCOUNT (VPG_RA + RA_TOTALPRIMCOUNT)
#define VPC_RAPIPECACHEMISSCOUNT (VPG_RA + RA_PIPECACHEMISSCOUNT)
#define VPC_RAPREFCACHEMISSCOUNT (VPG_RA + RA_PREFCACHEMISSCOUNT)
#define VPC_RAEEZCULLCOUNT (VPG_RA + RA_EEZCULLCOUNT)
/* HW: TEX Counters. */
#define VPC_TXTOTBILINEARREQ (VPG_TX + TX_TOTBILINEARREQ)
#define VPC_TXTOTTRILINEARREQ (VPG_TX + TX_TOTTRILINEARREQ)
#define VPC_TXTOTDISCARDTEXREQ (VPG_TX + TX_TOTDISCARDTEXREQ)
#define VPC_TXTOTTEXREQ (VPG_TX + TX_TOTTEXREQ)
#define VPC_TXMEMREADCOUNT (VPG_TX + TX_MEMREADCOUNT)
#define VPC_TXMEMREADIN8BCOUNT (VPG_TX + TX_MEMREADIN8BCOUNT)
#define VPC_TXCACHEMISSCOUNT (VPG_TX + TX_CACHEMISSCOUNT)
#define VPC_TXCACHEHITTEXELCOUNT (VPG_TX + TX_CACHEHITTEXELCOUNT)
#define VPC_TXCACHEMISSTEXELCOUNT (VPG_TX + TX_CACHEMISSTEXELCOUNT)
/* HW: PE Counters. */
#define VPC_PEKILLEDBYCOLOR (VPG_PE + PE_KILLEDBYCOLOR)
#define VPC_PEKILLEDBYDEPTH (VPG_PE + PE_KILLEDBYDEPTH)
#define VPC_PEDRAWNBYCOLOR (VPG_PE + PE_DRAWNBYCOLOR)
#define VPC_PEDRAWNBYDEPTH (VPG_PE + PE_DRAWNBYDEPTH)
/* HW: MC Counters. */
#define VPC_MCREADREQ8BPIPE (VPG_MC + MC_READREQ8BPIPE)
#define VPC_MCREADREQ8BIP (VPG_MC + MC_READREQ8BIP)
#define VPC_MCWRITEREQ8BPIPE (VPG_MC + MC_WRITEREQ8BPIPE)
/* HW: AXI Counters. */
#define VPC_AXIREADREQSTALLED (VPG_AXI + AXI_READREQSTALLED)
#define VPC_AXIWRITEREQSTALLED (VPG_AXI + AXI_WRITEREQSTALLED)
#define VPC_AXIWRITEDATASTALLED (VPG_AXI + AXI_WRITEDATASTALLED)
/* PROGRAM: Shader program counters. */
#define VPC_PVSINSTRCOUNT (VPG_PVS + PVS_INSTRCOUNT)
#define VPC_PVSALUINSTRCOUNT (VPG_PVS + PVS_ALUINSTRCOUNT)
#define VPC_PVSTEXINSTRCOUNT (VPG_PVS + PVS_TEXINSTRCOUNT)
#define VPC_PVSATTRIBCOUNT (VPG_PVS + PVS_ATTRIBCOUNT)
#define VPC_PVSUNIFORMCOUNT (VPG_PVS + PVS_UNIFORMCOUNT)
#define VPC_PVSFUNCTIONCOUNT (VPG_PVS + PVS_FUNCTIONCOUNT)
#define VPC_PVSSOURCE (VPG_PVS + PVS_SOURCE)
#define VPC_PPSINSTRCOUNT (VPG_PPS + PPS_INSTRCOUNT)
#define VPC_PPSALUINSTRCOUNT (VPG_PPS + PPS_ALUINSTRCOUNT)
#define VPC_PPSTEXINSTRCOUNT (VPG_PPS + PPS_TEXINSTRCOUNT)
#define VPC_PPSATTRIBCOUNT (VPG_PPS + PPS_ATTRIBCOUNT)
#define VPC_PPSUNIFORMCOUNT (VPG_PPS + PPS_UNIFORMCOUNT)
#define VPC_PPSFUNCTIONCOUNT (VPG_PPS + PPS_FUNCTIONCOUNT)
#define VPC_PPSSOURCE (VPG_PPS + PPS_SOURCE)
#define VPC_PROGRAMHANDLE (VPG_PROG + 1)
#define VPG_ES20_DRAW_NO (VPG_ES20_DRAW + 1)
#define VPG_ES11_DRAW_NO (VPG_ES11_DRAW + 1)
#define VPG_FRAME_USEVBO (VPG_FRAME + 1)
#endif
/* HW profile information. */
typedef struct _gcsPROFILER_COUNTERS
{
/* HW static counters. */
gctUINT32 gpuClock;
gctUINT32 axiClock;
gctUINT32 shaderClock;
/* HW vairable counters. */
gctUINT32 gpuClockStart;
gctUINT32 gpuClockEnd;
/* HW vairable counters. */
gctUINT32 gpuCyclesCounter;
gctUINT32 gpuTotalCyclesCounter;
gctUINT32 gpuIdleCyclesCounter;
gctUINT32 gpuTotalRead64BytesPerFrame;
gctUINT32 gpuTotalWrite64BytesPerFrame;
/* PE */
gctUINT32 pe_pixel_count_killed_by_color_pipe;
gctUINT32 pe_pixel_count_killed_by_depth_pipe;
gctUINT32 pe_pixel_count_drawn_by_color_pipe;
gctUINT32 pe_pixel_count_drawn_by_depth_pipe;
/* SH */
gctUINT32 ps_inst_counter;
gctUINT32 rendered_pixel_counter;
gctUINT32 vs_inst_counter;
gctUINT32 rendered_vertice_counter;
gctUINT32 vtx_branch_inst_counter;
gctUINT32 vtx_texld_inst_counter;
gctUINT32 pxl_branch_inst_counter;
gctUINT32 pxl_texld_inst_counter;
/* PA */
gctUINT32 pa_input_vtx_counter;
gctUINT32 pa_input_prim_counter;
gctUINT32 pa_output_prim_counter;
gctUINT32 pa_depth_clipped_counter;
gctUINT32 pa_trivial_rejected_counter;
gctUINT32 pa_culled_counter;
/* SE */
gctUINT32 se_culled_triangle_count;
gctUINT32 se_culled_lines_count;
/* RA */
gctUINT32 ra_valid_pixel_count;
gctUINT32 ra_total_quad_count;
gctUINT32 ra_valid_quad_count_after_early_z;
gctUINT32 ra_total_primitive_count;
gctUINT32 ra_pipe_cache_miss_counter;
gctUINT32 ra_prefetch_cache_miss_counter;
gctUINT32 ra_eez_culled_counter;
/* TX */
gctUINT32 tx_total_bilinear_requests;
gctUINT32 tx_total_trilinear_requests;
gctUINT32 tx_total_discarded_texture_requests;
gctUINT32 tx_total_texture_requests;
gctUINT32 tx_mem_read_count;
gctUINT32 tx_mem_read_in_8B_count;
gctUINT32 tx_cache_miss_count;
gctUINT32 tx_cache_hit_texel_count;
gctUINT32 tx_cache_miss_texel_count;
/* MC */
gctUINT32 mc_total_read_req_8B_from_pipeline;
gctUINT32 mc_total_read_req_8B_from_IP;
gctUINT32 mc_total_write_req_8B_from_pipeline;
/* HI */
gctUINT32 hi_axi_cycles_read_request_stalled;
gctUINT32 hi_axi_cycles_write_request_stalled;
gctUINT32 hi_axi_cycles_write_data_stalled;
}
gcsPROFILER_COUNTERS;
/* HAL profile information. */
typedef struct _gcsPROFILER
{
gctUINT32 enable;
gctBOOL enableHal;
gctBOOL enableHW;
gctBOOL enableSH;
gctBOOL isSyncMode;
gctBOOL useSocket;
gctINT sockFd;
gctFILE file;
/* Aggregate Information */
/* Clock Info */
gctUINT64 frameStart;
gctUINT64 frameEnd;
/* Current frame information */
gctUINT32 frameNumber;
gctUINT64 frameStartTimeusec;
gctUINT64 frameEndTimeusec;
gctUINT64 frameStartCPUTimeusec;
gctUINT64 frameEndCPUTimeusec;
#if PROFILE_HAL_COUNTERS
gctUINT32 vertexBufferTotalBytesAlloc;
gctUINT32 vertexBufferNewBytesAlloc;
int vertexBufferTotalObjectsAlloc;
int vertexBufferNewObjectsAlloc;
gctUINT32 indexBufferTotalBytesAlloc;
gctUINT32 indexBufferNewBytesAlloc;
int indexBufferTotalObjectsAlloc;
int indexBufferNewObjectsAlloc;
gctUINT32 textureBufferTotalBytesAlloc;
gctUINT32 textureBufferNewBytesAlloc;
int textureBufferTotalObjectsAlloc;
int textureBufferNewObjectsAlloc;
gctUINT32 numCommits;
gctUINT32 drawPointCount;
gctUINT32 drawLineCount;
gctUINT32 drawTriangleCount;
gctUINT32 drawVertexCount;
gctUINT32 redundantStateChangeCalls;
#endif
gctUINT32 prevVSInstCount;
gctUINT32 prevVSBranchInstCount;
gctUINT32 prevVSTexInstCount;
gctUINT32 prevVSVertexCount;
gctUINT32 prevPSInstCount;
gctUINT32 prevPSBranchInstCount;
gctUINT32 prevPSTexInstCount;
gctUINT32 prevPSPixelCount;
char* psSource;
char* vsSource;
}
gcsPROFILER;
/* Memory profile information. */
struct _gcsMemProfile
{
/* Memory Usage */
gctUINT32 videoMemUsed;
gctUINT32 systemMemUsed;
gctUINT32 commitBufferSize;
gctUINT32 contextBufferCopyBytes;
};
/* Shader profile information. */
struct _gcsSHADER_PROFILER
{
gctUINT32 shaderLength;
gctUINT32 shaderALUCycles;
gctUINT32 shaderTexLoadCycles;
gctUINT32 shaderTempRegCount;
gctUINT32 shaderSamplerRegCount;
gctUINT32 shaderInputRegCount;
gctUINT32 shaderOutputRegCount;
};
/* Initialize the gcsProfiler. */
gceSTATUS
gcoPROFILER_Initialize(
IN gcoHAL Hal
);
/* Destroy the gcProfiler. */
gceSTATUS
gcoPROFILER_Destroy(
IN gcoHAL Hal
);
/* Write data to profiler. */
gceSTATUS
gcoPROFILER_Write(
IN gcoHAL Hal,
IN gctSIZE_T ByteCount,
IN gctCONST_POINTER Data
);
/* Flush data out. */
gceSTATUS
gcoPROFILER_Flush(
IN gcoHAL Hal
);
/* Call to signal end of frame. */
gceSTATUS
gcoPROFILER_EndFrame(
IN gcoHAL Hal
);
/* Call to signal end of draw. */
gceSTATUS
gcoPROFILER_EndDraw(
IN gcoHAL Hal,
IN gctBOOL FirstDraw
);
/* Increase profile counter Enum by Value. */
gceSTATUS
gcoPROFILER_Count(
IN gcoHAL Hal,
IN gctUINT32 Enum,
IN gctINT Value
);
gceSTATUS
gcoPROFILER_ShaderSourceFS(
IN gcoHAL Hal,
IN char* source
);
gceSTATUS
gcoPROFILER_ShaderSourceVS(
IN gcoHAL Hal,
IN char* source
);
/* Profile input vertex shader. */
gceSTATUS
gcoPROFILER_ShaderVS(
IN gcoHAL Hal,
IN gctPOINTER Vs
);
/* Profile input fragment shader. */
gceSTATUS
gcoPROFILER_ShaderFS(
IN gcoHAL Hal,
IN gctPOINTER Fs
);
#ifdef __cplusplus
}
#endif
#endif /* __gc_hal_profiler_h_ */
|