While the modern graphics processing unit (GPU) offers massive parallel compute power, the ability to influence the schedulingof these immense resources is severely limited. Therefore, the GPU is widely considered to be only suitable as an externallycontrolled co-processor for homogeneous workloads which greatly restricts the potential applications of GPU computing.To address this issue, we present a new method to achieve fine-grained priority scheduling on the GPU: hierarchical bucketqueuing. By carefully distributing the workload among multiple queues and efficiently deciding which queue to draw work fromnext, we enable a variety of scheduling strategies. These strategies include fair-scheduling, earliest-deadline-first scheduling,and user-defined dynamic priority scheduling. In a comparison with a sorting-based approach, we reveal the advantages ofhierarchical bucket queuing over previous work. Finally, we demonstrate the benefits of using priority scheduling in real-worldapplications by example of path tracing and foveated micropolygon rendering.