1. A method for operating a graphics processing unit (GPU), the method comprising: allocating resources of a shader processor of the GPU for a first thread of a first shader based on a first resource footprint of the first shader; receiving information from a driver identifying a second shader; receiving an indication that a second resource footprint of the second shader is smaller than the first resource footprint of the first shader; determining whether one or more processing elements of the shader processor is available based on the resources allocated for the first thread; and based on the determination that one or more processing elements are available and the indication that the second resource footprint is smaller than the first resource footprint, executing a second thread of the second shader while using the resources allocated for the first thread of the first shader on the shader processor without reconfiguring the resources allocated for the first thread of the first shader.