glretrace application.trace
-Pass the `-sb` option to use a single buffered visual. Pass `--help` to
-glretrace for more options.
+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`.
Basic GUI usage
* `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
But beware of wrapper shell scripts -- what matters is the architecture of the
main process.
-Run the application you want to trace as
+Run the GLX application you want to trace as
- LD_PRELOAD=/path/to/apitrace/wrappers/glxtrace.so /path/to/application
+ LD_PRELOAD=/path/to/apitrace/wrappers/glxtrace.so /path/to/application
and it will generate a trace named `application.trace` in the current
directory. You can specify the written trace filename by setting the
`TRACE_FILE` environment variable before running.
+For EGL applications you will need to use `egltrace.so` instead of
+`glxtrace.so`.
+
The `LD_PRELOAD` mechanism should work with the majority applications. There
are some applications (e.g., Unigine Heaven, Android GPU emulator, etc.), that
have global function pointers with the same name as GL entrypoints, living in a
extension.
-For Direct3D applications you can follow the same procedure used for
-[instrumenting an application for PIX](http://technet.microsoft.com/en-us/query/ee417250)
+For Direct3D applications you can follow the standard procedure for
+[adding user defined events to Visual Studio Graphics Debugger / PIX](http://msdn.microsoft.com/en-us/library/vstudio/hh873200.aspx):
+
+- `D3DPERF_BeginEvent`, `D3DPERF_EndEvent`, and `D3DPERF_SetMarker` for D3D9 applications.
+
+- `ID3DUserDefinedAnnotation::BeginEvent`,
+ `ID3DUserDefinedAnnotation::EndEvent`, and
+ `ID3DUserDefinedAnnotation::SetMarker` for D3D11.1 applications.
Dump GL state at a particular call
You can perform gpu and cpu profiling with the command line options:
- * `-pgpu` record gpu times for frames and draw calls.
+ * `--pgpu` record gpu times for frames and draw calls.
- * `-pcpu` record cpu times for frames and draw calls.
+ * `--pcpu` record cpu times for frames and draw calls.
- * `-ppd` record pixels drawn for each draw call.
+ * `--ppd` record pixels drawn for each draw call.
The results from this can then be read by hand or analysed with a script.
For example, to record all profiling data and utilise the per shader script:
- ./glretrace -pgpu -pcpu -ppd foo.trace | ./scripts/profileshader.py
+ ./glretrace --pgpu --pcpu --ppd foo.trace | ./scripts/profileshader.py
Advanced usage for OpenGL implementors
python scripts\retracediff.py --retrace \path\to\glretrace.exe --ref-env TRACE_LIBGL=\path\to\reference\opengl32.dll application.trace
+[![githalytics.com alpha](https://cruel-carlota.pagodabox.com/c1062ad633aa7a458e9d7520021307e4 "githalytics.com")](http://githalytics.com/apitrace/apitrace)