1. A method for processing at least one stream of graphics data by a graphics processing unit (GPU) on behalf of a host processor, comprising: receiving at least one input stream of graphics data by at least one input of a programmable subunit of the GPU; based on programmatic instructions downloaded to the programmable subunit, performing computation on the at least one input stream of graphics data to generate at least one output stream of graphics data; and based on at least one instruction of said programmatic instructions, outputting said at least one output stream of graphics data to a stream output portion of video memory via a stream output of said programmable subunit such that said at least one output stream of graphics data is accessible by host processor read operations, wherein said stream output portion of video memory is different than a frame buffer portion of video memory used for rasterization, and said programmable subunit generates a new geometry for said stream output portion of video memory, and wherein said programmable subunit is initially configured as either a vertex shader, a pixel shader or a geometry shader, and wherein said programmable subunit is capable of being dynamically reconfigured from a vertex shader to function as a pixel shader or a geometry shader, and is capable of being dynamically reconfigured from a pixel shader to function as a vertex shader or a geometry shader, and is capable of being dynamically reconfigured from a geometry shader to function as a vertex shader or a pixel shader; and dynamically reconfiguring the programmable subunit from the initial configuration of shader type to function as another shader type for load balancing among a plurality of other programmable subunits.