Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Review: Apitrace and Vogl
1. Apitrace and Vogl
• Open-source tracer and replayer
• Neither requires (or takes advantage of) specialized hardware
debugging facilities
oProvides trace collection at the API level
oUses DLL injection to intercept API calls
oVery portable: should work on both Windows and Linux, over a wide
spectrum of GPU cards
oDoes not use emulation or shader-rewriting techniques
2. Apitrace
• An open-source OpenGL/DirectX graphics tracer and replayer
o It can be downloaded from github.com/apitrace/
• Follow the instructions to build, you will get two applications.
1) A CLI application in build/Debug/apitrace.exe, whose entry function is main() inside
apitrace/cli/cli_main.cpp
Usage syntax: $ apitrace <input command>
The main() has the following code flow:
for each command in command list:
if (input command == command.name)
call command.function()
// e.g., if command.name is "diff", run command() in cli_diff.cpp
"retrace" and "replay" are aliases as input commands, so running "apitrace retrace" and
"apitrace replay" are equivalent.
2) A Qt-GUI application in build/Debug/qapitrace.exe, whose entry function is main()
inside apitrace/gui/main.cpp
Qt Signals and Slots mechanism is used to assign handlers to corresponding user events.
3. Apitrace
Advantage:
• apitrace has a straight-forward work flow:
o It intercepts and records all the API calls and arguments as the original application
runs.
o And later, it can replay the API calls.
• Since it is straight-forward, it is also fairly easy to understand and to
integrate into other debugger applications or workflows.
Disadvantage:
• It always has to replay the trace from the beginning, and therefore can be
slow for large applications.
4. Vogl
• An open-source Steam/PC OpenGL graphics tracer and replayer
oIt can be downloaded from github.com/ValveSoftware/vogl
• Follow the instructions to build, you will get binaries in
vogl/vogl_build
oNote that if you configured a different build directory during configure, the
executable binaries will still be moved into the vogl_build directory.
1) A CLI application in vogl/vogl_build/vogl64.exe. The entry function is main()
inside vogl/src/voglreplay/vogl_replay_tool.cpp
2) A Qt-GUI application in vogl/vogl_build/vogleditor64.exe
Qt Signals and Slots mechanism is used to assign handlers to corresponding user events.
5. Vogl
• vogl intercepts and records OpenGL API calls and arguments in a similar but somewhat more
systematic manner as compared to apitrace
o e.g., the list of API calls and arguments are actually auto-generated from spec doc.
• The nice innovation in vogl is the feature to save and restore OpenGL states at various
checkpoints
o This means vogl does not necessarily have to replay a trace from a beginning; it is able to restore state as
a particular frame and then replay only from there.
o It makes use of the SDL open-source library to save and restore OpenGL context.
• vogl makes a number of state queries to save
o the general state
o the texenv state
o the material state
o the light state
o the matrix state
o and the arb program environment state in addition to the general context.
• My understanding is that this list of additional states is empirically obtained. That is, upon
experiment, these states seem sufficient to capture the essence of the OpenGL state, but it is
not guaranteed that nothing is lost. OpenGL driver internally manages its states, and the spec
does not describe what states are actually needed.