**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;
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 <pid of app>
+
+ Launch the application for example from the application menu.
+
### Mac OS X ###
Run the application you want to trace as
| 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:
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
======================================