]> git.cworth.org Git - apitrace/blobdiff - README.markdown
common: Add more comments.
[apitrace] / README.markdown
index af54b7f959a86da9ae3483f1611473f54b54b8a4..5fa3ab96089b002e13a11e0cb07a35a2c8a9eea0 100644 (file)
@@ -5,7 +5,7 @@ About **apitrace**
 
 * trace OpenGL, OpenGL ES, Direct3D, and DirectDraw APIs calls to a file;
 
-* retrace OpenGL and OpenGL ES calls from a file;
+* replay OpenGL and OpenGL ES calls from a file;
 
 * inspect OpenGL state at any call while retracing;
 
@@ -18,7 +18,7 @@ Obtaining **apitrace**
 ======================
 
 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.
@@ -49,12 +49,10 @@ View the trace with
 
 Replay an OpenGL trace with
 
-    glretrace application.trace
+    apitrace replay application.trace
 
 Pass the `--sb` option to use a single buffered visual.  Pass `--help` to
-`glretrace` for more options.
-
-EGL traces must be replayed with `eglretrace` instead of `glretrace`.
+`apitrace replay` for more options.
 
 
 Basic GUI usage
@@ -78,22 +76,22 @@ Call sets
 
 Several tools take `CALLSET` arguments, e.g:
 
-    apitrace dump --calls CALLSET foo.trace
-    glretrace -S CALLSET foo.trace
+    apitrace dump --calls=CALLSET foo.trace
+    apitrace dump-images --calls=CALLSET foo.trace
 
 The call syntax is very flexible. Here are a few examples:
 
  * `4`             one call
 
- * `1,2,4,5`       set of calls
+ * `0,2,4,5`       set of calls
 
- * `"1 2 4 5"`     set of calls (commas are optional and can be replaced with whitespace)
+ * `"0 2 4 5"`     set of calls (commas are optional and can be replaced with whitespace)
 
- * `1-100/2`       calls 1, 3, 5, ...,  99
+ * `0-100/2`       calls 1, 3, 5, ...,  99
 
- * `1-1000/draw`   all draw calls between 1 and 1000
+ * `0-1000/draw`   all draw calls between 0 and 1000
 
- * `1-1000/fbo`    all fbo changes between calls 1 and 1000
+ * `0-1000/fbo`    all fbo changes between calls 0 and 1000
 
  * `frame`         all calls at end of frames
 
@@ -154,10 +152,9 @@ To trace the application inside gdb, invoke gdb as:
 ### 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.
 
@@ -208,6 +205,15 @@ 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
+    apitrace replay test-opengl-gl2_basic.trace
+
 ### Mac OS X ###
 
 Run the application you want to trace as
@@ -243,6 +249,13 @@ Then run the application as usual.
 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
 ---------------------------------
@@ -297,7 +310,7 @@ Dump GL state at a particular call
 
 You can get a dump of the bound GL state at call 12345 by doing:
 
-    glretrace -D 12345 application.trace > 12345.json
+    apitrace replay -D 12345 application.trace > 12345.json
 
 This is precisely the mechanism the GUI obtains its own state.
 
@@ -320,7 +333,7 @@ Recording a video with FFmpeg
 
 You can make a video of the output by doing
 
-    glretrace -s - application.trace \
+    apitrace dump-images -o - application.trace \
     | ffmpeg -r 30 -f image2pipe -vcodec ppm -i pipe: -vcodec mpeg4 -y output.mp4
 
 
@@ -354,7 +367,7 @@ 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
+    apitrace replay --pgpu --pcpu --ppd foo.trace | ./scripts/profileshader.py
 
 
 Advanced usage for OpenGL implementors
@@ -373,17 +386,13 @@ These are the steps to create a regression test-suite around **apitrace**:
 * obtain reference snapshots, by doing on a reference system:
 
         mkdir /path/to/reference/snapshots/
-        glretrace -s /path/to/reference/snapshots/ application.trace
+        apitrace dump-images -o /path/to/reference/snapshots/ application.trace
 
 * prune the snapshots which are not interesting
 
-* to do a regression test, do:
-
-        glretrace -c /path/to/reference/snapshots/ application.trace
-
-  Alternatively, for a HTML summary, use `apitrace diff-images`:
+* to do a regression test, use `apitrace diff-images`:
 
-        glretrace -s /path/to/test/snapshots/ application.trace
+        apitrace dump-images -o /path/to/test/snapshots/ application.trace
         apitrace diff-images --output summary.html /path/to/reference/snapshots/ /path/to/test/snapshots/