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