]> git.cworth.org Git - apitrace/blob - TODO.markdown
Mention apitrace trim in the documentation.
[apitrace] / TODO.markdown
1 Things To Do
2 ============
3
4 (in no particular order)
5
6
7 Tracing
8 -------
9
10 * Allow clamping to a GL version or a number of extensions.
11
12 * Put (de)compression in a separate thread.
13
14 * Trace TSCs
15
16 * Trace window sizes somehow
17
18 * Allow to distinguish between the calls really done by the program, vs the
19   fakes one necessary to retrace correctly.
20
21 * Start tracing on demand (e.g., key-press, or by frame no), emitting calls
22   that recreate all current state.
23
24 * Add option to include call stack frames in the trace.
25
26 * Trace the internal GL calls done by GLU on Mac OS X & Windows.
27
28
29 Retracing
30 ---------
31
32 * Use visuals that best match those used in the trace; specially auto
33   detect single/double buffer visuals.
34
35 * Respect multiple context sharing of the traces.
36
37 * Support multiple threads
38
39 * Leverage `ARB_debug_output` where available.
40
41 * D3D support.
42
43
44 GUI
45 ---
46
47 * Timeline view.
48
49 * Visualize meshes in draw commands.
50
51 * Breakpointing and step-by-step debugging.
52
53
54 CLI
55 ---
56
57 * Add retrace     Replay all the calls in a trace
58 * Add dump-state  Output the OpenGL state in JSON format
59 * Add dump-images Create image files for each frame/drawing operation of a trace
60
61 * Add some common command-line options:
62
63   Most commands acting on a trace accept the following common options:
64
65    --calls=[RANGE]       Operate only on calls with index numbers within
66                          the specified range.
67
68    --frames=[RANGE]      Operate only on frames with index numbers within
69                          the specified range.
70
71    --functions=[REGEXP]  Operate only on function calls which have a
72                          name that matches the given regular expression.
73
74    A [RANGE] can be any of the following:
75
76      Example    Description        
77      -------    -----------        
78      4          A single number specifying a single call or frame.
79
80      10-20      Two numbers separated by '-' (FIRST-LAST) specifying a
81                 range of consecutive calls/frames from FIRST to LAST. If
82                 either of FIRST or LAST is omitted, the first or last
83                 call/frame index in the trace will be used.
84
85      1-100/5    Either of the above range specifications followed by '/'
86                 and a number (INTERVAL). This specifies the inclusion of
87                 only each INTERVAL call/frame within the range. For
88                 example, 1-100/5 species frame 1, frame 5, frame 10,
89                 ... up to frame 100.
90
91      4,10-20/2  A comma separated list of any of the above range
92                 specifications, specifying the union of the ranges.
93
94 * Add some retrace-specific options (-b, -db, -sb, -v)
95
96 * Add some trime-specific options (--every={draw,framebuffer,frame})
97
98 * Accept a filename for --calls or --functions (to use the same calls
99   or functions as present in a trace dump).
100
101 * Add an "apitrace bisect" for trimming down a trace based on user
102   input at each stage.
103
104 * Add an "apitrace git-bisect-helper" for calling from git-bisect.
105
106
107 Other
108 -----
109
110 * Side-by-side trace diffing; either as a separate tool on or the GUI.
111
112 * Ability to extract just a single frame from a trace, and all previous calls
113   that contributed to it:
114
115   * via a state tracker (i.e., knowledge of how calls affect the state);
116
117   * or by leveragine retrace, dumping the calls to emit all state at beginning
118     of the frame.
119
120
121 See also:
122
123 * open issues on [github](https://github.com/apitrace/apitrace/issues)
124
125 * _Known issues_ section in BUGS.markdown
126
127 * FIXME, TODO, and XXX comments on the source code.