“The Unified Modeling Language (UML) is a general-purpose modeling language in the field of software engineering, which is designed to provide a standard way to visualize the design of a system” from Wikipedia
“ Android SurfaceFlinger drives the composition of surface area and the rendering to the display screen. UI application must obtain a surface to draw graphics from SurfaceFlinger. ”
Tegra Graphics Debugger is a free tool from NVIDIA for debugging and profiling OpenGL ES 2.0/3.0/3.1, OpenGL 4.x and Android Extension Pack. Supported host OS are Windows 7/8, Mac OS X 10.9 and Ubuntu Linux x64 10.10/11.04/12.04. Supported target platform is Tegra K1 Android.
As for PerfHUD ES, it focus on Tegra Android platform before and include Tegra 4.
In GTC 2014, there is a talk “SG4116: Tegra K1 Developer Tools for Android, Sebastien Domine” which gives introudction of Tegra Graphics Debugger. You may watch online video starting from 29:05 and download presentation.
Getting Started
Tegra Graphics Debugger is part of Tegra Android Development Pack which is free for download, but requires NVIDIA GameWorks Registered Developer Program membership. You may check online document here or search below doc after installation.
$adb forward tcp:1234 tcp:1234
$<path>/arm-eabi-gdb <path>/symbols/system/bin/app_process32
(gdb)set solib-search-path <path to out>/symbols/system/lib:<path to out>/symbols/system/vendor/lib/
(gdb)set solib-absolute-prefix <path to out>/symbols/
(gdb) target remote :1234
(gdb) b <symbol> # set break point(gdb) b <address> # set break point(gdb) b <symbol> if <condition> # set conditional break point(gdb) i b # list break points(gdb) d <id> # delete break point with <id>(gdb) bt # print backtrace(gdb) s # step into(gdb) n # step over(gdb) c # continue
diff--gita/kernel/module.cb/kernel/module.cindex3b5a5d6..5b35c69100644---a/kernel/module.c+++b/kernel/module.c@@-2704,7+2704,6@@staticintcheck_modinfo(structmodule*mod,structload_info*info,intflags)}elseif(!same_magic(modmagic,vermagic,info->index.vers)){printk(KERN_ERR"%s: version magic '%s' should be '%s'\n",mod->name,modmagic,vermagic);-return-ENOEXEC;}if(!get_modinfo(info,"intree"))
if[ -n "$BASH_VERSION"];then# include .bashrc if it existsif[ -f "$HOME/.bashrc"];then . "$HOME/.bashrc"fifi
vim
1234567
. # Position of the last change
' or ` # Position before last jump
`. or '. # Go back to last edit top
: # command mode
:set paste # auto indent for code paste
:set number # display line number
:1,$s/<target string>/<replace string>/ # replace strings
$adb shell
#sqlite3 /data/data/com.android.providers.settings/databases/settings.db#.databases#.tables#.dump#select * from <table>;#delete from <table> where <condition>;#update system set value="1800000" where name="screen_off_timeout";#update system set value="3" where name="stay_on_while_plugged_in";#.exit
The first line is the refresh period (here 16.95 ms), it is followed
by 128 lines w/ 3 timestamps in nanosecond each:
A) when the app started to draw
B) the vsync immediately preceding SF submitting the frame to the h/w
C) timestamp immediately after SF submitted that frame to the h/w
The difference between the 1st and 3rd timestamp is the frame-latency.