Skip to content

Latest commit

 

History

History
133 lines (79 loc) · 3.41 KB

TODO.markdown

File metadata and controls

133 lines (79 loc) · 3.41 KB

Things To Do

(in no particular order)

Tracing

  • Allow clamping to a GL version or a number of extensions.

  • Trace multiple threads:

    • GetCurrentThreadId()

    • pthread_self()

  • Put zlib (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.

Retracing

  • 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.

GUI

  • Timeline view.

  • Visualize meshes in draw commands.

  • Breakpointing and step-by-step debugging.

CLI

  • 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.

Other

  • 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.