Current graphics data processing is exemplified by systems and methods developed to perform a specific operation on several graphics data elements, e.g., linear interpolation, tessellation, texture mapping, depth testing. Traditionally graphics processing systems were implemented as fixed function computation units and more recently the computation units are programmable to perform a limited set of operations. Computation units are connected in a “shading pipeline” to perform shading operations. Processed graphics data including pixel color and depth values are output by the shading pipeline and written to output buffers in memory. Conventional graphics systems support three output buffers for writing processed graphics data to: a depth buffer, a front color buffer, and a back color buffer, each with a specific purpose. The output buffer or output buffers are predetermined by an application and communicated to the graphics system using a register write or program instruction. The ability to write processed graphics data to additional user defined output buffers and to directly access each output buffer, including the additional user-defined output buffers, facilitates the development of more advanced shading algorithms.
For the foregoing reasons, it is desirable to support additional output buffers, each output buffer accessible by the shading pipeline.