msm: kgsl: Add a command dispatcher to manage the ringbuffer

Implements a centralized dispatcher for sending user commands
to the ringbuffer. Incoming commands are queued by context and
sent to the hardware on a round robin basis ensuring each context
a small burst of commands at a time.  Each command is tracked
throughout the pipeline giving the dispatcher better knowledge
of how the hardware is being used.  This will be the basis for
future per-context and cross context enhancements as priority
queuing and server-side syncronization.

Change-Id: Ic0dedbad49a43e8e6096d1362829c800266c2de3
Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
27 files changed