FruGL Tracing

In order to facilitate the storage and analysis of graphics scene data, we have implemented an API which allows us to trace and replay FruGL calls. Our tracing API, FGLS, defines both a stream format for encoding FruGL calls and a number of functions for manipulating FruGL streams, including functions for creating, capturing, reading, writing, and replaying FruGL streams.

FGLS is heavily based on GLS, the OpenGL Stream Codec. This makes it fairly straightforward to convert a GLS stream into an FGLS stream, opening up the possibility of obtaining FGLS streams from OpenGL applications through the use of GLS tracing tools.

FGLS streams based on OpenGL applications can be used to provide realistic input to the Argus rendering library. In addition, such streams can also be used in quantitative studies of various aspects of the graphics pipeline.

The core of the FGLS API is contained in the following functions:

fglsBeginCapture Create an FGLS stream and start capturing FruGL commands into it
fglsEndCapture Stop capturing FruGL commands
fglsRead Read an FGLS stream from a file
fglsWrite Write an FGLS stream to a file
fglsDestroy Destroy an FGLS stream
fglsCallStream Execute the commands stored in an FGLS stream
fglsCommandFunc Establish a callback for a FruGL command to be called when that command is executed during an fglsCallStream

These functions are sufficient for most stream manipulation needs.

The primary developers of the FruGL stream library are Ziyad Hakura and Kekoa Proudfoot with Professor Pat Hanrahan.

[Update: our FruGL tracing tools have been replaced by a set of OpenGL tracing tools, described briefly here.]