A user-programmable vertex engine

In this paper we describe the design, programming interface, and implementation of a very efficient user-programmable vertex engine. The vertex engine of NVIDIA's GeForce3 GPU evolved from a highly tuned fixed-function pipeline requiring considerable knowledge to program. Programs operate only on a stream of independent vertices traversing the pipe. Embedded in the broader fixed function pipeline, our approach preserves parallelism sacrificed by previous approaches. The programmer is presented with a straightforward programming model, which is supported by transparent multi-threading and bypassing to preserve parallelism and performance. In the remainder of the paper we discuss the motivation behind our design and contrast it with previous work. We present the programming model, the instruction set selection process, and details of the hardware implementation. Finally, we discuss important API design issues encountered when creating an interface to such a device. We close with thoughts about the future of programmable graphics devices.

[1]  David Kirk,et al.  The rendering architecture of the DN10000VS , 1990, SIGGRAPH.

[2]  Douglas Voorhies,et al.  Reflection vector shading hardware , 1994, SIGGRAPH.

[3]  Corporate Intel Corp. i860 microprocessor family programmer's reference manual , 1992 .

[4]  D. Jackél,et al.  Hardware Supported Bump Mapping: A Step towards Ingber Quality Real-Time Rendering , 1995, Workshop on Graphics Hardware.

[5]  Kurt Akeley,et al.  Reality Engine graphics , 1993, SIGGRAPH.

[6]  Brian Apgar,et al.  A display system for the Stellar graphics supercomputer model GS1000 , 1988, SIGGRAPH.

[7]  Pat Hanrahan,et al.  A real-time procedural shading system for programmable graphics hardware , 2001, SIGGRAPH.

[8]  Adam Levinthal,et al.  Chap - a SIMD graphics processor , 1984, SIGGRAPH.

[9]  Hans-Peter Seidel,et al.  Ecien t Rendering of Anisotropic Surfaces Using Computer Graphics Hardware , 1998 .

[10]  John G. Torborg,et al.  A parallel processor architecture for graphics arithmetic operations , 1987, SIGGRAPH.

[11]  Kurt Akeley,et al.  RealityEngine graphics , 2000 .

[12]  Michael Potmesil,et al.  The pixel machine: a parallel image computer , 1989, SIGGRAPH.

[13]  Mark S. Peercy,et al.  Efficient bump mapping hardware , 1997, SIGGRAPH.

[14]  Chandlee B. Harrell,et al.  Graphics rendering architecture for a high performance desktop workstation , 1993, SIGGRAPH.

[15]  John S. Montrym,et al.  InfiniteReality: a real-time graphics system , 1997, SIGGRAPH.

[16]  John G. Eyles,et al.  PixelFlow: high-speed rendering using image composition , 1992, SIGGRAPH.

[17]  Nick England A Graphics System Architecture for Interactive Application-Specific Display Functions , 1986, IEEE Computer Graphics and Applications.

[18]  Henry Fuchs,et al.  Pixel-planes 5: a heterogeneous multiprocessor graphics system using processor-enhanced memories , 1989, SIGGRAPH.

[19]  James H. Clark,et al.  The Geometry Engine , 1982, SIGGRAPH.