1. A method for graphics processing comprising: assigning at least one execution unit to each of a plurality of shader units, the plurality of shader units comprising a vertex shader, a geometry shader, and a pixel shader, wherein an execution unit assigned to a given shader unit performs processing tasks for only that shader unit; determining that one of the plurality of shader units is bottlenecked; and reassigning at least one execution unit from a non-bottlenecked shader unit to the shader unit determined to be bottlenecked.