XXX this could be converted/formatted for Sphinx someday.
XXX do not use tabs in this file.



            position                     ]
            primary/secondary colors     ]
            generics (normals,           ]
               texcoords, fog)           ] User vertices / arrays
            point size                   ]
            edge flag                    ]
            primitive ID                 } System-generated values
            vertex ID                    }
              | | |
              V V V
      +-------------------+
      |  Vertex shader    |
      +-------------------+
              | | |
              V V V
            position
            clip distance
            generics
            front/back & primary/secondary colors
            point size
            edge flag
            primitive ID
              | | |
              V V V
      +------------------------+
      |     Geometry shader    |
      | (consume vertex ID)    |
      | (may change prim type) |
      +------------------------+
              | | |
              V V V
            [...]
            fb layer
              | | |
              V V V
      +--------------------------+
      |         Clipper          |
      | (consume clip distances) |
      +--------------------------+
              | | |
              V V V
      +-------------------+
      |  Polygon Culling  |
      +-------------------+
              | | |
              V V V
      +-----------------------+
      |    Choose front or    |
      |    back face color    |
      | (consume other color) |
      +-----------------------+
              | | |
              V V V
            [...]
            primary/secondary colors only
              | | |
              V V V
      +-------------------+
      |   Polygon Offset  |
      +-------------------+
              | | |
              V V V
      +----------------------+
      | Unfilled polygons    |
      | (consume edge flags) |
      | (change prim type)   |
      +----------------------+
              | | |
              V V V
            position
            generics
            primary/secondary colors
            point size
            primitive ID
            fb layer
              | | |
              V V V
  +---------------------------------+ 
  | Optional Draw module helpers    |
  | * Polygon Stipple               |
  | * Line Stipple                  |
  | * Line AA/smooth (as tris)      |
  | * Wide lines (as tris)          |
  | * Wide points/sprites (as tris) |
  | * Point AA/smooth (as tris)     |
  | (NOTE: these stages may emit    |
  |  new/extra generic attributes   |
  |  such as texcoords)             |
  +---------------------------------+
              | | |
              V V V
            position                     ]
            generics (+ new/extra ones)  ]
            primary/secondary colors     ] Software rast vertices
            point size                   ]
            primitive ID                 ]
            fb layer                     ]
              | | |
              V V V
      +---------------------+
      | Triangle/Line/Point |
      |    Rasterization    |
      +---------------------+
              | | |
              V V V
            generic attribs
            primary/secondary colors
            primitive ID
            fragment win coord pos   } System-generated values
            front/back face flag     }
              | | |
              V V V
      +-------------------+
      |  Fragment shader  |
      +-------------------+
              | | |
              V V V
            zero or more colors
            zero or one Z value


NOTE: The instance ID is not shown.  It can be imagined to be a global variable
accessible to all shader stages.
