Some or all of the operations defined by the OpenGL state machine may be implemented by hard- ware GPUs (graphics processing units). Owing to the high degree of parallelism that can be applied to the task of drawing graphics, the past decade has seen affordable GPUs increase in speed dramatically faster than CPU speeds. This has prompted software devel- opers to move more and more drawing tasks to the GPU, and even some non-drawing tasks such as audio processing.