(in no particular order)
-
Allow clamping to a GL version or a number of extensions.
-
Trace multiple threads:
-
GetCurrentThreadId()
-
pthread_self()
-
-
Put (de)compression in a separate thread.
-
Trace TSCs
-
Trace window sizes somehow
-
Allow to distinguish between the calls really done by the program, vs the fakes one necessary to retrace correctly.
-
Start tracing on demand (e.g., key-press, or by frame no), emitting calls that recreate all current state.
-
Add option to include call stack frames in the trace.
-
Trace the internal GL calls done by GLU on Mac OS X & Windows.
-
Use visuals that best match those used in the trace; specially auto detect single/double buffer visuals.
-
Respect multiple context sharing of the traces.
-
Support multiple threads
-
Leverage
ARB_debug_output
where available. -
D3D support.
-
Timeline view.
-
Visualize meshes in draw commands.
-
Breakpointing and step-by-step debugging.
-
Add retrace Replay all the calls in a trace
-
Add trim Trim a trace by including only the specified calls/frames
-
Add dump-state Output the OpenGL state in JSON format
-
Add dump-images Create image files for each frame/drawing operation of a trace
-
Add some common command-line options:
Most commands acting on a trace accept the following common options:
--calls=[RANGE] Operate only on calls with index numbers within the specified range.
--frames=[RANGE] Operate only on frames with index numbers within the specified range.
--functions=[REGEXP] Operate only on function calls which have a name that matches the given regular expression.
A [RANGE] can be any of the following:
Example Description
4 A single number specifying a single call or frame.
10-20 Two numbers separated by '-' (FIRST-LAST) specifying a range of consecutive calls/frames from FIRST to LAST. If either of FIRST or LAST is omitted, the first or last call/frame index in the trace will be used.
1-100/5 Either of the above range specifications followed by '/' and a number (INTERVAL). This specifies the inclusion of only each INTERVAL call/frame within the range. For example, 1-100/5 species frame 1, frame 5, frame 10, ... up to frame 100.
4,10-20/2 A comma separated list of any of the above range specifications, specifying the union of the ranges.
-
Add some retrace-specific options (-b, -db, -sb, -v)
-
Add some trime-specific options (--every={draw,framebuffer,frame})
-
Accept a filename for --calls or --functions (to use the same calls or functions as present in a trace dump).
-
Add an "apitrace bisect" for trimming down a trace based on user input at each stage.
-
Add an "apitrace git-bisect-helper" for calling from git-bisect.
-
Side-by-side trace diffing; either as a separate tool on or the GUI.
-
Ability to extract just a single frame from a trace, and all previous calls that contributed to it:
-
via a state tracker (i.e., knowledge of how calls affect the state);
-
or by leveragine retrace, dumping the calls to emit all state at beginning of the frame.
-
See also:
-
open issues on github
-
Known issues section in BUGS.markdown
-
FIXME, TODO, and XXX comments on the source code.