======================
To obtain apitrace either [download the latest
-binaries](https://github.com/apitrace/apitrace/downloads) for your platform if
+binaries](http://apitrace.github.com/#download) for your platform if
available, or follow the instructions in INSTALL.markdown to build it yourself.
On 64bits Linux and Windows platforms you'll need apitrace binaries that match
the architecture (32bits or 64bits) of the application being traced.
### Android ###
The following instructions should work at least for Android Ice Scream
-Sandwitch:
+Sandwitch.
-For standalone applications the instructions above for Linux should
-work. To trace applications started from within the Android VM process
+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.
Launch the application for example from the application menu.
+To trace standalone applications do:
+
+ adb push /path/to/apitrace/build/wrappers/egltrace.so /data
+ adb shell
+ # cd /data/local/tmp
+ # LD_PRELOAD=/data/egltrace.so test-opengl-gl2_basic
+ adb pull /data/local/tmp/test-opengl-gl2_basic.trace
+ eglretrace test-opengl-gl2_basic.trace
+
### Mac OS X ###
Run the application you want to trace as
You can specify the written trace filename by setting the `TRACE_FILE`
environment variable before running.
+For D3D10 and higher you really must use `apitrace trace -a DXGI ...`. This is
+because D3D10-11 API span many DLLs which depend on each other, and once a DLL
+with a given name is loaded Windows will reuse it for LoadLibrary calls of the
+same name, causing internal calls to be traced erroneously. `apitrace trace`
+solves this issue by injecting a DLL `dxgitrace.dll` and patching all modules
+to hook only the APIs of interest.
+
Emitting annotations to the trace
---------------------------------