A method of executing wavefronts within a processing device including compute pipelines, and a shader core configured to execute: a first set of wavefronts specified by a first pipeline queue assigned to a first compute pipeline that shares a dispatch controller with a second compute pipeline, the first pipeline queue being included in a first set of pipeline queues, and a second set of wavefronts specified by a second pipeline queue assigned to the second compute pipeline, the second pipeline queue being included in a second set of pipeline queues, the method comprising: determining, by an arbiter, a first ready pipeline queue from the pipeline queues of the first set of pipeline queues from which to schedule wavefronts for execution for the first compute pipeline, wherein the determination of the first ready pipeline queue is based on predetermined criteria; determining, by the arbiter, a second ready pipeline queue from the pipeline queues of the second set of pipeline queues from which to schedule wavefronts for execution for the second compute pipeline, wherein the determination of the second ready pipeline queue is based on priority criteria; arbitrating, by the dispatch controller, between the first compute pipeline and the second compute pipeline to choose an arbitrated compute pipeline for processing on the shader core, wherein the arbitrating is based on priority criteria; and scheduling, by the dispatch controller, a wavefront from the arbitrated compute pipeline for execution on the shader core, wherein the wavefront is scheduled from either the first ready pipeline queue or the second ready pipeline queue for execution on the shader core. a first set of wavefronts specified by a first pipeline queue assigned to a first compute pipeline that shares a dispatch controller with a second compute pipeline, the first pipeline queue being included in a first set of pipeline queues, and a second set of wavefronts specified by a second pipeline queue assigned to the second compute pipeline, the second pipeline queue being included in a second set of pipeline queues, the method comprising: determining, by an arbiter, a first ready pipeline queue from the pipeline queues of the first set of pipeline queues from which to schedule wavefronts for execution for the first compute pipeline, wherein the determination of the first ready pipeline queue is based on predetermined criteria; determining, by the arbiter, a second ready pipeline queue from the pipeline queues of the second set of pipeline queues from which to schedule wavefronts for execution for the second compute pipeline, wherein the determination of the second ready pipeline queue is based on priority criteria; arbitrating, by the dispatch controller, between the first compute pipeline and the second compute pipeline to choose an arbitrated compute pipeline for processing on the shader core, wherein the arbitrating is based on priority criteria; and scheduling, by the dispatch controller, a wavefront from the arbitrated compute pipeline for execution on the shader core, wherein the wavefront is scheduled from either the first ready pipeline queue or the second ready pipeline queue for execution on the shader core. determining, by an arbiter, a first ready pipeline queue from the pipeline queues of the first set of pipeline queues from which to schedule wavefronts for execution for the first compute pipeline, wherein the determination of the first ready pipeline queue is based on predetermined criteria; determining, by the arbiter, a second ready pipeline queue from the pipeline queues of the second set of pipeline queues from which to schedule wavefronts for execution for the second compute pipeline, wherein the determination of the second ready pipeline queue is based on priority criteria; arbitrating, by the dispatch controller, between the first compute pipeline and the second compute pipeline to choose an arbitrated compute pipeline for processing on the shader core, wherein the arbitrating is based on priority criteria; and scheduling, by the dispatch controller, a wavefront from the arbitrated compute pipeline for execution on the shader core, wherein the wavefront is scheduled from either the first ready pipeline queue or the second ready pipeline queue for execution on the shader core.