A method for controlling a graphics processing unit coupled to a self-refreshing display device, the graphics processing unit included in a parallel processing subsystem, the method comprising: detecting a trigger event that indicates that the display device is set to enter a self-refresh mode; in response to detecting the trigger event, determining whether any mutual exclusion mechanisms in a set of mutual exclusion mechanisms is bound to a data object stored in a memory associated with the graphics processing unit, wherein the mutual exclusion mechanism operates to provide mutual exclusive access to the data object, and wherein the data object is generated by the graphics processing unit; determining that at least one mutual exclusion mechanism is bound to a data object; and delaying transition of the graphics processing unit into a deep sleep state, comprising: for each mutual exclusion mechanism in the at least one mutual exclusion mechanism: causing a copy of the data object bound to the mutual exclusion mechanism to be cached in a system memory, causing a pointer to the data object bound to the mutual exclusion mechanism to be updated to point to a location in the system memory associated with the copy; and once the at least one mutual exclusion mechanism has been cached in the system memory and any corresponding pointers updated, entering the deep sleep state. detecting a trigger event that indicates that the display device is set to enter a self-refresh mode; in response to detecting the trigger event, determining whether any mutual exclusion mechanisms in a set of mutual exclusion mechanisms is bound to a data object stored in a memory associated with the graphics processing unit, wherein the mutual exclusion mechanism operates to provide mutual exclusive access to the data object, and wherein the data object is generated by the graphics processing unit; determining that at least one mutual exclusion mechanism is bound to a data object; and delaying transition of the graphics processing unit into a deep sleep state, comprising: for each mutual exclusion mechanism in the at least one mutual exclusion mechanism: causing a copy of the data object bound to the mutual exclusion mechanism to be cached in a system memory, causing a pointer to the data object bound to the mutual exclusion mechanism to be updated to point to a location in the system memory associated with the copy; and once the at least one mutual exclusion mechanism has been cached in the system memory and any corresponding pointers updated, entering the deep sleep state. for each mutual exclusion mechanism in the at least one mutual exclusion mechanism: causing a copy of the data object bound to the mutual exclusion mechanism to be cached in a system memory, causing a pointer to the data object bound to the mutual exclusion mechanism to be updated to point to a location in the system memory associated with the copy; and once the at least one mutual exclusion mechanism has been cached in the system memory and any corresponding pointers updated, entering the deep sleep state. causing a copy of the data object bound to the mutual exclusion mechanism to be cached in a system memory, causing a pointer to the data object bound to the mutual exclusion mechanism to be updated to point to a location in the system memory associated with the copy; and once the at least one mutual exclusion mechanism has been cached in the system memory and any corresponding pointers updated, entering the deep sleep state.