X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=README.markdown;h=b59ee3bef506501b69d0ce4dc6e976345f3c8a43;hb=fe7a377fa5ace19a7448a91134fd55eabfd12a83;hp=536729e81fcac8bbc121db5ca71b87d2b82210b5;hpb=e4a4f15f5b92e0abbd24d7d053da25f8278c9f64;p=apitrace diff --git a/README.markdown b/README.markdown index 536729e..b59ee3b 100644 --- a/README.markdown +++ b/README.markdown @@ -3,7 +3,7 @@ About **apitrace** **apitrace** consists of a set of tools to: -* trace OpenGL, OpenGL ES, D3D9, D3D8, D3D7, and DDRAW APIs calls to a file; +* trace OpenGL, OpenGL ES, Direct3D, and DirectDraw APIs calls to a file; * retrace OpenGL and OpenGL ES calls from a file; @@ -141,6 +141,63 @@ To trace the application inside gdb, invoke gdb as: gdb --ex 'set exec-wrapper env LD_PRELOAD=/path/to/glxtrace.so' --args /path/to/application +### Android ### + +The following instructions should work at least for Android Ice Scream +Sandwitch: + +For standalone applications the instructions above for Linux should +work. To trace applications started from within the Android VM process +(`app_process` aka zygote) you'll have to wrap this process and enable +tracing dynamically for the application to be traced. + +- Wrapping the android main VM process: + + In the Android root /init.rc add the `LD_PRELOAD` setting to zygote's + environment in the 'service zygote' section: + + service zygote ... + setenv LD_PRELOAD /data/egltrace.so + ... + + Note that ICS will overwrite the /init.rc during each boot with the + version in the recovery image. So you'll have to change the file in + your ICS source tree, rebuild and reflash the device. + Rebuilding/reflashing only the recovery image should be sufficient. + +- Copy egltrace.so to /data + + On the host: + + adb push /path/to/apitrace/build/wrappers/egltrace.so /data + +- Adjust file permissions to store the trace file: + + By default egltrace.so will store the trace in + `/data/app_process.trace`. For this to work for applications running + with a uid other than 0, you have to allow writes to the `/data` + directory on the device: + + chmod 0777 /data + +- Enable tracing for a specific process name: + + To trace for example the Settings application: + + setprop debug.apitrace.procname com.android.settings + + In general this name will match what `ps` reports. + +- Start the application: + + If the application was already running, for example due to ICS's way + of pre-starting the apps, you might have to kill the application + first: + + kill + + Launch the application for example from the application menu. + ### Mac OS X ### Run the application you want to trace as @@ -251,8 +308,8 @@ You can make a video of the output by doing | ffmpeg -r 30 -f image2pipe -vcodec ppm -i pipe: -vcodec mpeg4 -y output.mp4 -Triming a trace ---------------- +Trimming a trace +---------------- You can make a smaller trace by doing: @@ -263,6 +320,27 @@ individual call numbers a plaintext file, as described in the 'Call sets' section above. +Profiling a trace +----------------- + +You can perform gpu and cpu profiling with the command line options: + + * `-pgpu` record gpu times for frames and draw calls. + + * `-pcpu` record cpu times for frames and draw calls. + + * `-ppd` record pixels drawn for each draw call. + +The results from this can then be read by hand or analysed with a script. + +`scripts/profileshader.py` will read the profile results and format them into a +table which displays profiling results per shader. + +For example, to record all profiling data and utilise the per shader script: + + ./glretrace -pgpu -pcpu -ppd foo.trace | ./scripts/profileshader.py + + Advanced usage for OpenGL implementors ======================================