📄 metrics.c
字号:
DPFMETRIC((" Total State Emission %10d/%10d", gc->asTimes[GLES_TIMER_TOTAL_STATE_TIME].ui32Count/ui32Frames, (int)(10000.0f*gc->asTimes[GLES_TIMER_TOTAL_STATE_TIME].ui32Total*gc->fCPUSpeed/ui32Frames)));
DPFMETRIC((" Total Primitive Draw %10d/%10d", ui32TotalDrawCalls/ui32Frames, (int)(10000.0f*fTotalDrawTime/ui32Frames)));
DPFMETRIC((" inc: Slaveport writes %10d/%10d", gc->asTimes[GLES_TIMER_TOTAL_SLAVEPORT_COPY_TIME].ui32Count/ui32Frames, (int)(10000.0f*gc->asTimes[GLES_TIMER_TOTAL_SLAVEPORT_COPY_TIME].ui32Total * gc->fCPUSpeed/ui32Frames)));
DPFMETRIC((" inc: Slaveport acquire %10d/%10d", gc->asTimes[GLES_TIMES_ACQUIRE_SLAVEPORT].ui32Count/ui32Frames, (int)(10000.0f*gc->asTimes[GLES_TIMES_ACQUIRE_SLAVEPORT].ui32Total * gc->fCPUSpeed/ui32Frames)));
if(gc->asTimes[GLES_TIMER_POINTLIST_TIME].ui32Count) {DPFMETRIC((" Core Points %10d/%10d", gc->asTimes[GLES_TIMER_POINTLIST_TIME].ui32Count/ui32Frames, (int)(10000.0f*gc->asTimes[GLES_TIMER_POINTLIST_TIME].ui32Total * gc->fCPUSpeed/ui32Frames)));}
if(gc->asTimes[GLES_TIMER_LINES_TIME].ui32Count) {DPFMETRIC((" Core Lines %10d/%10d", gc->asTimes[GLES_TIMER_LINES_TIME].ui32Count/ui32Frames, (int)(10000.0f*gc->asTimes[GLES_TIMER_LINES_TIME].ui32Total * gc->fCPUSpeed/ui32Frames)));}
if(gc->asTimes[GLES_TIMER_LINESTRIP_TIME].ui32Count) {DPFMETRIC((" Core Line Strips %10d/%10d", gc->asTimes[GLES_TIMER_LINESTRIP_TIME].ui32Count/ui32Frames, (int)(10000.0f*gc->asTimes[GLES_TIMER_LINESTRIP_TIME].ui32Total * gc->fCPUSpeed/ui32Frames)));}
if(gc->asTimes[GLES_TIMER_LINELOOP_TIME].ui32Count) {DPFMETRIC((" Core Line Loops %10d/%10d", gc->asTimes[GLES_TIMER_LINELOOP_TIME].ui32Count/ui32Frames, (int)(10000.0f*gc->asTimes[GLES_TIMER_LINELOOP_TIME].ui32Total * gc->fCPUSpeed/ui32Frames)));}
if(gc->asTimes[GLES_TIMER_TRILIST_TIME].ui32Count) {DPFMETRIC((" Core Triangles %10d/%10d", gc->asTimes[GLES_TIMER_TRILIST_TIME].ui32Count/ui32Frames, (int)(10000.0f*gc->asTimes[GLES_TIMER_TRILIST_TIME].ui32Total * gc->fCPUSpeed/ui32Frames)));}
if(gc->asTimes[GLES_TIMER_TRISTRIP_TIME].ui32Count) {DPFMETRIC((" Core Strips %10d/%10d", gc->asTimes[GLES_TIMER_TRISTRIP_TIME].ui32Count/ui32Frames, (int)(10000.0f*gc->asTimes[GLES_TIMER_TRISTRIP_TIME].ui32Total * gc->fCPUSpeed/ui32Frames)));}
if(gc->asTimes[GLES_TIMER_TRIFAN_TIME].ui32Count) {DPFMETRIC((" Core Fans %10d/%10d", gc->asTimes[GLES_TIMER_TRIFAN_TIME].ui32Count/ui32Frames, (int)(10000.0f*gc->asTimes[GLES_TIMER_TRIFAN_TIME].ui32Total * gc->fCPUSpeed/ui32Frames)));}
DPFMETRIC(("\n"));
DPFMETRIC((" State Statistics [ Bytes/Bytes per Frame ]"));
if (gc->asTimes[GLES_TIMER_TOTAL_STATE_COUNT].ui32Count)
{
IMG_FLOAT fB;
fB = (IMG_FLOAT)gc->asTimes[GLES_TIMER_TOTAL_STATE_COUNT].ui32Total;
DPFMETRIC((" Total State %10d/%10d", (int)fB, (int)(fB/ui32Frames) ));
}
#if (defined(SUPPORT_VGP) || defined(SUPPORT_VGP_LITE)) && !defined(PASSTHROUGH_BUILD)
if (gc->asTimes[GLES_TIMER_VGP_CONSTANTS_COUNT].ui32Count)
{
IMG_FLOAT fB;
fB = (IMG_FLOAT)gc->asTimes[GLES_TIMER_VGP_CONSTANTS_COUNT].ui32Total;
DPFMETRIC((" VGP constants %10d/%10d", (int)fB, (int)(fB/ui32Frames) ));
}
if (gc->asTimes[GLES_TIMER_VGP_CODE_COUNT].ui32Count)
{
IMG_FLOAT fB;
fB = (IMG_FLOAT)gc->asTimes[GLES_TIMER_VGP_CODE_COUNT].ui32Total;
DPFMETRIC((" VGP code %10d/%10d", (int)fB, (int)(fB/ui32Frames) ));
}
if (gc->asTimes[GLES_TIMER_VGP_SECTIONS_COUNT].ui32Count)
{
IMG_FLOAT fB;
fB = (IMG_FLOAT)gc->asTimes[GLES_TIMER_VGP_SECTIONS_COUNT].ui32Total;
DPFMETRIC((" VGP sections %10d/%10d", (int)fB, (int)(fB/ui32Frames) ));
}
DPFMETRIC((""));
#endif
if (gc->asTimes[GLES_TIMER_TOTAL_SLAVEPORT_COPY_TIME].ui32Count)
{
fSlavePortSeconds = (IMG_FLOAT)gc->asTimes[GLES_TIMER_TOTAL_SLAVEPORT_COPY_TIME].ui32Total;
fSlavePortSeconds *= (gc->fCPUSpeed/1000.0f);
fSlavePortMB = (IMG_FLOAT)gc->asTimes[GLES_TIMER_TOTAL_SLAVEPORT_COPY_COUNT].ui32Total;
fSlavePortMB /= (1024.0f); /* In kB not not MB - printf %f workaround*/
if(fSlavePortSeconds)
DPFMETRIC((" Slaveport writes - Total kB and kB/s %10d/%10d", (int)fSlavePortMB, (int)(fSlavePortMB/fSlavePortSeconds) ));
}
DPFMETRIC((""));
if(gc->asTimes[GLES_TIMER_TEXIMAGE_TIME].ui32Total)
{
fLoadCall = gc->asTimes[GLES_TIMER_TEXIMAGE_TIME].ui32Total*gc->fCPUSpeed/
gc->asTimes[GLES_TIMER_TEXIMAGE_TIME].ui32Count;
fLoadFrame = gc->asTimes[GLES_TIMER_TEXIMAGE_TIME].ui32Total*gc->fCPUSpeed/ui32Frames;
fLoadRate = gc->asTimes[GLES_TIMER_TEXIMAGE_TIME].fStack/
(gc->asTimes[GLES_TIMER_TEXIMAGE_TIME].ui32Total*gc->fCPUSpeed);
DPFMETRIC((" Average TexImage Load kPixels/s %10d", (int)(1000.0f*fLoadRate)));
}
if(gc->asTimes[GLES_TIMER_TEXSUBIMAGE_TIME].ui32Total)
{
fSubLoadCall = gc->asTimes[GLES_TIMER_TEXSUBIMAGE_TIME].ui32Total*gc->fCPUSpeed/
gc->asTimes[GLES_TIMER_TEXSUBIMAGE_TIME].ui32Count;
fSubLoadFrame = gc->asTimes[GLES_TIMER_TEXSUBIMAGE_TIME].ui32Total*gc->fCPUSpeed/ui32Frames;
fSubLoadRate = gc->asTimes[GLES_TIMER_TEXSUBIMAGE_TIME].fStack/
(gc->asTimes[GLES_TIMER_TEXSUBIMAGE_TIME].ui32Total*gc->fCPUSpeed);
DPFMETRIC((" Average TexSubImage Load kPixels/s %10d", (int)(1000.0f*fSubLoadRate)));
}
if(gc->asTimes[GLES_TIMER_COMPRESSTEXIMAGE_TIME].ui32Total)
{
fCompLoadCall = gc->asTimes[GLES_TIMER_COMPRESSTEXIMAGE_TIME].ui32Total*gc->fCPUSpeed/
gc->asTimes[GLES_TIMER_COMPRESSTEXIMAGE_TIME].ui32Count;
fCompLoadFrame = gc->asTimes[GLES_TIMER_COMPRESSTEXIMAGE_TIME].ui32Total*gc->fCPUSpeed/ui32Frames;
fCompLoadRate = gc->asTimes[GLES_TIMER_COMPRESSTEXIMAGE_TIME].fStack/
(gc->asTimes[GLES_TIMER_COMPRESSTEXIMAGE_TIME].ui32Total*gc->fCPUSpeed);
DPFMETRIC((" Average Compress Load kPixels/s %10d", (int)(1000.0f*fCompLoadRate)));
}
if(gc->asTimes[GLES_TIMER_COMPRESSTEXSUBIMAGE_TIME].ui32Total)
{
fCompSubLoadCall = gc->asTimes[GLES_TIMER_COMPRESSTEXSUBIMAGE_TIME].ui32Total*gc->fCPUSpeed/
gc->asTimes[GLES_TIMER_COMPRESSTEXSUBIMAGE_TIME].ui32Count;
fCompSubLoadFrame = gc->asTimes[GLES_TIMER_COMPRESSTEXSUBIMAGE_TIME].ui32Total*gc->fCPUSpeed/ui32Frames;
fCompSubLoadRate = gc->asTimes[GLES_TIMER_COMPRESSTEXSUBIMAGE_TIME].fStack/
(gc->asTimes[GLES_TIMER_COMPRESSTEXSUBIMAGE_TIME].ui32Total*gc->fCPUSpeed);
DPFMETRIC((" Average Compress Sub Load MPixels/s %10d", (int)(1000.0f*fCompSubLoadRate)));
}
if(gc->asTimes[GLES_TIMER_COPYTEXIMAGE_TIME].ui32Total)
{
fCopyImgCall = gc->asTimes[GLES_TIMER_COPYTEXIMAGE_TIME].ui32Total*gc->fCPUSpeed/
gc->asTimes[GLES_TIMER_COPYTEXIMAGE_TIME].ui32Count;
fCopyImgFrame = gc->asTimes[GLES_TIMER_COPYTEXIMAGE_TIME].ui32Total*gc->fCPUSpeed/ui32Frames;
}
if(gc->asTimes[GLES_TIMER_TEXTURE_ALLOCATE_TIME].ui32Total)
{
fTexAllocateCall = gc->asTimes[GLES_TIMER_TEXTURE_ALLOCATE_TIME].ui32Total*gc->fCPUSpeed/
gc->asTimes[GLES_TIMER_TEXTURE_ALLOCATE_TIME].ui32Count;
fTexAllocateFrame = gc->asTimes[GLES_TIMER_TEXTURE_ALLOCATE_TIME].ui32Total*gc->fCPUSpeed/ui32Frames;
}
if(gc->asTimes[GLES_TIMER_TEXTURE_TRANSLATE_LOAD_TIME].ui32Total)
{
fTexTranslateCall = gc->asTimes[GLES_TIMER_TEXTURE_TRANSLATE_LOAD_TIME].ui32Total*gc->fCPUSpeed/
gc->asTimes[GLES_TIMER_TEXTURE_TRANSLATE_LOAD_TIME].ui32Count;
fTexTranslateFrame = gc->asTimes[GLES_TIMER_TEXTURE_TRANSLATE_LOAD_TIME].ui32Total*gc->fCPUSpeed/ui32Frames;
fTexTranslateRate = gc->asTimes[GLES_TIMER_TEXTURE_TRANSLATE_LOAD_TIME].fStack/
(gc->asTimes[GLES_TIMER_TEXTURE_TRANSLATE_LOAD_TIME].ui32Total*gc->fCPUSpeed);
}
if(gc->asTimes[GLES_TIMER_TEXTURE_GHOST_LOAD_TIME].ui32Total)
{
fTexLoadGhostCall = gc->asTimes[GLES_TIMER_TEXTURE_GHOST_LOAD_TIME].ui32Total*gc->fCPUSpeed/
gc->asTimes[GLES_TIMER_TEXTURE_GHOST_LOAD_TIME].ui32Count;
fTexLoadGhostFrame = gc->asTimes[GLES_TIMER_TEXTURE_GHOST_LOAD_TIME].ui32Total*gc->fCPUSpeed/ui32Frames;
}
if(gc->asTimes[GLES_TIMER_TEXTURE_READBACK_TIME].ui32Total)
{
fTexReadbackCall = gc->asTimes[GLES_TIMER_TEXTURE_READBACK_TIME].ui32Total*gc->fCPUSpeed/
gc->asTimes[GLES_TIMER_TEXTURE_READBACK_TIME].ui32Count;
fTexReadbackFrame = gc->asTimes[GLES_TIMER_TEXTURE_READBACK_TIME].ui32Total*gc->fCPUSpeed/ui32Frames;
}
DPFMETRIC((" Texture Statistics [ Calls/perCall-Time|Pixels / perFrame-Time/Pixels ]"));
DPFMETRIC((" TexImage %7d/%12d/%8d/%14d/%8d",
gc->asTimes[GLES_TIMER_TEXIMAGE_TIME].ui32Count,
(int)(10000.0f*fLoadCall), (int)(GLES_PIXELS_PER_CALL(GLES_TIMER_TEXIMAGE_TIME)),
(int)(10000.0f*fLoadFrame), (int)(GLES_PIXELS_PER_FRAME(GLES_TIMER_TEXIMAGE_TIME))));
DPFMETRIC((" TexSubImage %7d/%12d/%8d/%14d/%8d",
gc->asTimes[GLES_TIMER_TEXSUBIMAGE_TIME].ui32Count,
(int)(10000.0f*fSubLoadCall), (int)(GLES_PIXELS_PER_CALL(GLES_TIMER_TEXSUBIMAGE_TIME)),
(int)(10000.0f*fSubLoadFrame), (int)(GLES_PIXELS_PER_FRAME(GLES_TIMER_TEXSUBIMAGE_TIME))));
if(fCompLoadCall)
{
DPFMETRIC((" CompTex %7d/%12d/%8d/%14d/%8d",
gc->asTimes[GLES_TIMER_COMPRESSTEXIMAGE_TIME].ui32Count,
(int)(10000.0f*fCompLoadCall), (int)(GLES_PIXELS_PER_CALL(GLES_TIMER_COMPRESSTEXIMAGE_TIME)),
(int)(10000.0f*fCompLoadFrame), (int)(GLES_PIXELS_PER_FRAME(GLES_TIMER_COMPRESSTEXIMAGE_TIME))));
}
if(fCompSubLoadCall)
{
DPFMETRIC((" CompSubTex %7d/%12d/%8d/%14d/%8d",
gc->asTimes[GLES_TIMER_COMPRESSTEXSUBIMAGE_TIME].ui32Count,
(int)(10000.0f*fCompSubLoadCall), (int)(GLES_PIXELS_PER_CALL(GLES_TIMER_COMPRESSTEXSUBIMAGE_TIME)),
(int)(10000.0f*fCompSubLoadFrame), (int)(GLES_PIXELS_PER_FRAME(GLES_TIMER_COMPRESSTEXSUBIMAGE_TIME))));
}
DPFMETRIC((" Texture Statistics [ Calls/Time per Call/Time per Frame]"));
DPFMETRIC((" CopyImage %7d/%13d/%15d",
gc->asTimes[GLES_TIMER_COPYTEXIMAGE_TIME].ui32Count, (int)(10000.0f*fCopyImgCall), (int)(10000.0f*fCopyImgFrame)));
DPFMETRIC((" AllocateTexture %7d/%13d/%15d",
gc->asTimes[GLES_TIMER_TEXTURE_ALLOCATE_TIME].ui32Count, (int)(10000.0f*fTexAllocateCall), (int)(10000.0f*fTexAllocateFrame)));
DPFMETRIC((" TranslateLoadTexture %7d/%13d/%15d",
gc->asTimes[GLES_TIMER_TEXTURE_TRANSLATE_LOAD_TIME].ui32Count, (int)(10000.0f*fTexTranslateCall), (int)(10000.0f*fTexTranslateFrame)));
DPFMETRIC((" Load Ghost Texture %7d/%13d/%15d",
gc->asTimes[GLES_TIMER_TEXTURE_GHOST_LOAD_TIME].ui32Count, (int)(10000.0f*fTexLoadGhostCall), (int)(10000.0f*fTexLoadGhostFrame)));
DPFMETRIC((" Texture Readback %7d/%13d/%15d",
gc->asTimes[GLES_TIMER_TEXTURE_READBACK_TIME].ui32Count, (int)(10000.0f*fTexReadbackCall), (int)(10000.0f*fTexReadbackFrame)));
/* Output read pixels stats */
if(gc->asTimes[GLES_TIMER_READPIXELS_TIME].ui32Count)
{
DPFMETRIC((" Read Pixel Stats [ Calls/perCall-Time|Pixels / perFrame-Time|Pixels ]"));
DPFMETRIC((" Color %7d/%12d/%8d/%14d/%8d",
GLES_CALLS(GLES_TIMER_READPIXELS_TIME),
(int)(10000.0f*GLES_TIME_PER_CALL(GLES_TIMER_READPIXELS_TIME)), (int)(GLES_PIXELS_PER_CALL(GLES_TIMER_READPIXELS_TIME)),
(int)(10000.0f*GLES_TIME_PER_FRAME(GLES_TIMER_READPIXELS_TIME)), (int)(GLES_PIXELS_PER_FRAME(GLES_TIMER_READPIXELS_TIME))));
}
DPFMETRIC((" Maths Stats [ Calls/perCall-Time ]"));
DPFMETRIC((" %d %d",
gc->asTimes[GLES_TIMES_MATRIXMATHS].ui32Count,
(int)(10000.0f*GLES_TIME_PER_CALL(GLES_TIMES_MATRIXMATHS))));
}
#else
if(ui32Frames)
{
DPFMETRIC((" Total Frames %10d", ui32Frames));
DPFMETRIC((" Average Elapsed Time per Frame (ms) %10.4f", gc->asTimes[GLES_TIMER_TOTAL_FRAME_TIME].fStack / ui32Frames));
DPFMETRIC((" Average Driver Time per Frame (ms) %10.4f", fTotalDriverTime / ui32Frames));
if(gc->asTimes[GLES_TIMER_TOTAL_FRAME_TIME].fStack)
DPFMETRIC((" Estimated FPS %10.4f", 1000.0f*ui32Frames/gc->asTimes[GLES_TIMER_TOTAL_FRAME_TIME].fStack));
DPFMETRIC((" Statistics per frame [Calls/Time(ms)]"));
DPFMETRIC((" Total Prepare to draw %10d/%10.4f", gc->asTimes[GLES_TIMER_PREPARE_TO_DRAW_TIME].ui32Count/ui32Frames, gc->asTimes[GLES_TIMER_PREPARE_TO_DRAW_TIME].ui32Total*gc->fCPUSpeed/ui32Frames));
DPFMETRIC((" inc: Total Wait for HW %10d/%10.4f", gc->asTimes[GLES_TIMES_WAIT_FOR_ACQUIRE].ui32Count/ui32Frames, fWaitForHW/ui32Frames));
DPFMETRIC((" Total Validates %10d/%10.4f", gc->asTimes[GLES_TIMER_VALIDATE_TIME].ui32Count/ui32Frames, gc->asTimes[GLES_TIMER_VALIDATE_TIME].ui32Total*gc->fCPUSpeed/ui32Frames));
DPFMETRIC((" Total State Emission %10d/%10.4f", gc->asTimes[GLES_TIMER_TOTAL_STATE_TIME].ui32Count/ui32Frames, gc->asTimes[GLES_TIMER_TOTAL_STATE_TIME].ui32Total*gc->fCPUSpeed/ui32Frames));
DPFMETRIC((" Total Primitive Draw %10d/%10.4f", ui32TotalDrawCalls/ui32Frames, fTotalDrawTime/ui32Frames));
DPFMETRIC((" inc: Slaveport writes %10d/%10.4f", gc->asTimes[GLES_TIMER_TOTAL_SLAVEPORT_COPY_TIME].ui32Count/ui32Frames, gc->asTimes[GLES_TIMER_TOTAL_SLAVEPORT_COPY_TIME].ui32Total * gc->fCPUSpeed/ui32Frames));
DPFMETRIC((" inc: Slaveport acquire %10d/%10.4f", gc->asTimes[GLES_TIMES_ACQUIRE_SLAVEPORT].ui32Count/ui32Frames, gc->asTimes[GLES_TIMES_ACQUIRE_SLAVEPORT].ui32Total * gc->fCPUSpeed/ui32Frames));
if(gc->asTimes[GLES_TIMER_POINTLIST_TIME].ui32Count) {DPFMETRIC((" Core Points %10d/%10.4f", gc->asTimes[GLES_TIMER_POINTLIST_TIME].ui32Count/ui32Frames, gc->asTimes[GLES_TIMER_POINTLIST_TIME].ui32Total * gc->fCPUSpeed/ui32Frames));}
if(gc->asTimes[GLES_TIMER_LINES_TIME].ui32Count) {DPFMETRIC((" Core Lines %10d/%10.4f", gc->asTimes[GLES_TIMER_LINES_TIME].ui32Count/ui32Frames, gc->asTimes[GLES_TIMER_LINES_TIME].ui32Total * gc->fCPUSpeed/ui32Frames));}
if(gc->asTimes[GLES_TIMER_LINESTRIP_TIME].ui32Count) {DPFMETRIC((" Core Line Strips %10d/%10.4f", gc->asTimes[GLES_TIMER_LINESTRIP_TIME].ui32Count/ui32Frames, gc->asTimes[GLES_TIMER_LINESTRIP_TIME].ui32Total * gc->fCPUSpeed/ui32Frames));}
if(gc->asTimes[GLES_TIMER_LINELOOP_TIME].ui32Count) {DPFMETRIC((" Core Line Loops %10d/%10.4f", gc->asTimes[GLES_TIMER_LINELOOP_TIME].ui32Count/ui32Frames, gc->asTimes[GLES_TIMER_LINELOOP_TIME].ui32Total * gc->fCPUSpeed/ui32Frames));}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -