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.