1. A method for an interruptible graphics processing unit (“GPU”) to process multiple programs, comprising the steps of: receiving a first run list containing a plurality of contexts for execution; initiating processing of a buffer containing commands and data associated with a context in the first run list; retrieving a GPU memory access command from the buffer and a pointer referencing graphics data associated with the buffer; communicating the pointer to one or more architectural processing units in the GPU for accessing register states; switching to a another buffer of the first run list for processing data associated with the another buffer; and switching to another run list when a final buffer in the run list is empty.