FruGL Parallel API Extensions
The Problem
Although graphics subsystems are on the same technology curve as
microprocessors, graphics subsystems have been increasing in performance
at a faster rate, and it has become increasingly difficult to drive a
modern high-performance graphics accelerator at full speed with a serial
immediate-mode graphics interface such as
OpenGL.
To resolve this problem, retained-mode
constructs such as display lists and packed primitive arrays have been
integrated into the API, and research has been done on compressing the
data sent by the API. While these constructs provide a good solution in
many cases, at times they pose an undesirable paradigm shift for the
applications programmer, and in many cases they do not solve the
performance problem. In order to resolve some of these cases, we seek a
parallel graphics interface that may be used in conjunction with an
existing serial, ordered, immediate-mode API such as FruGL.
The Approach
Existing graphics interfaces like
OpenGL and
FruGL do not pose a constraint to multiple application
threads issuing graphics commands to draw into the same image memory. By
using multiple contexts, multiple application threads may each issue their
portion of the scene. In the aforementioned serial graphics interfaces,
the effects of commands are implicitly ordered by the order in which the
commands are issued. When multiple application threads issue graphics
commands, their is no serial order, and the application programmer must
explicitly constrain the order in which the commands are executed. If the
application threads synchronize amongst themselves to explicitly constrain
ordering, the result can be arbitrarily serial. However, if the
application threads issue synchronization commands which are resolved
within the graphics system, multiple application threads can issue an
explicitly ordered scene without ever synchronizing amongst themselves.
The Development
These parallel extensions have made their way into FruGL
and are currently implemented in two different ways on Argus. The primary developers of the parallel API are
Homan Igehy,
Gordon Stoll, and
Pat Hanrahan.
The details of this work can be found in the SIGGRAPH '98 paper entitled
The Design of a Parallel Graphics Interface.
homan@graphics.stanford.edu