TV UI foundation
This commit is contained in:
24
tools/tv/framestats.py
Normal file
24
tools/tv/framestats.py
Normal file
@@ -0,0 +1,24 @@
|
||||
#!/usr/bin/env python3
|
||||
# Разбивка времени кадра по фазам из `adb shell dumpsys gfxinfo <пакет> framestats` (stdin), см. ui_bench в env.sh.
|
||||
import sys, statistics as st
|
||||
lines=sys.stdin.read().splitlines()
|
||||
hdr=None; rows=[]
|
||||
for l in lines:
|
||||
if l.startswith('Flags,'): hdr=l.strip().strip(',').split(','); continue
|
||||
if hdr and l and l[0].isdigit():
|
||||
v=l.strip().strip(',').split(',')
|
||||
if len(v)>=len(hdr): rows.append(dict(zip(hdr,map(int,v[:len(hdr)]))))
|
||||
if l.startswith('---PROFILEDATA---') and rows: pass
|
||||
rows=[r for r in rows if r['Flags']==0]
|
||||
def ms(a,b): return [(r[b]-r[a])/1e6 for r in rows if r[a]>0 and r[b]>0]
|
||||
def p(x):
|
||||
x=sorted(x); return f"p50 {x[len(x)//2]:.1f} p90 {x[int(len(x)*.9)]:.1f} max {x[-1]:.1f}" if x else "-"
|
||||
print("frames",len(rows))
|
||||
print("total ", p(ms('IntendedVsync','FrameCompleted')))
|
||||
print("input+anim ", p(ms('HandleInputStart','PerformTraversalsStart')))
|
||||
print("traversal ", p(ms('PerformTraversalsStart','DrawStart')))
|
||||
print("record draw", p(ms('DrawStart','SyncQueued')))
|
||||
print("sync ", p(ms('SyncStart','IssueDrawCommandsStart')))
|
||||
print("issue cmds ", p(ms('IssueDrawCommandsStart','SwapBuffers')))
|
||||
print("swap ", p(ms('SwapBuffers','FrameCompleted')))
|
||||
if 'GpuCompleted' in hdr: print("gpu ", p(ms('IssueDrawCommandsStart','GpuCompleted')))
|
||||
Reference in New Issue
Block a user