State shadowing to support a multi-threaded driver environment

التفاصيل البيبلوغرافية
العنوان: State shadowing to support a multi-threaded driver environment
Patent Number: 9,401,004
تاريخ النشر: July 26, 2016
Appl. No: 12/902937
Application Filed: October 12, 2010
مستخلص: One embodiment of the present invention sets forth a technique for tracking and filtering state change methods provided to a graphics pipeline. State shadow circuitry at the start of the graphics pipeline may be configured in different modes. A track mode is used to capture the current state by storing state change methods that are transmitted to the graphics pipeline. A passthrough mode is used to provide different state data to the graphics pipeline without updating the current state stored in the state shadow circuitry. A replay mode is used to restore the current state to the graphics pipeline using the state shadow circuitry. Additionally, the state shadow circuitry may also be configured to filter the state change methods that are transmitted to graphics pipeline by removing redundant state change methods.
Inventors: Duluk, Jr., Jerome Francis (Palo Alto, CA, US); Hall, Jesse David (Santa Clara, CA, US); Brown, Patrick R. (Wake Forest, NC, US); Palmer, Gregory Scott (Cedar Park, TX, US); Werness, Eric S. (San Jose, CA, US)
Assignees: NVIDIA Corporation (Santa Clara, CA, US)
Claim: 1. A method for changing a state of a graphics processing pipeline, comprising: storing first state data associated with a first state change method in a memory included in a front end of a graphics processing unit (GPU); transmitting the first state data to the graphics processing pipeline to change the state of the graphics processing pipeline to a first state; receiving, by the front end, a second state change method that includes second state data; transmitting the second state data to the graphics processing pipeline, while the first state data is maintained in the memory of the front end, to change the state of the graphics processing pipeline from the first state to a second state, wherein the second state data is not written into the memory of the front end; and after transmitting the second state data, transmitting the first state data from the memory of the front end to the graphics processing pipeline to change the state of the graphics processing pipeline from the second state back to the first state.
Claim: 2. The method of claim 1 , further comprising: receiving a third state change method that includes third state data, wherein the first state change method and the third state change method are associated with a first control register in the graphics processing pipeline; reading the first state data from the memory; determining that the first state data matches the third state data; and discarding the third state change method without transmitting the third state data to the graphics processing pipeline.
Claim: 3. The method of claim 2 , wherein the first state change method is associated with a first processing thread and the third state change method is associated with a second processing thread.
Claim: 4. The method of claim 1 , further comprising: receiving a third state change method, wherein the first state change method and the third state change method are associated with a first control register in the graphics processing pipeline; reading the first state data from the memory; and transmitting the first state data to the graphics processing pipeline to change the graphics processing pipeline from the second state to the first state.
Claim: 5. The method of claim 1 , further comprising: processing data in the graphics processing pipeline using the second state data, wherein the processing comprises clearing a non-bound surface.
Claim: 6. The method of claim 1 , wherein the memory stores sets of state data and each set of the state data is a copy of a different state used by the graphics processing pipeline.
Claim: 7. The method of claim 6 , wherein each one of the sets of state data represents a different graphics context and the front end is configured to switch between the different graphics contexts that are used by the graphics processing pipeline.
Claim: 8. The method of claim 1 , further comprising: receiving a third state change method including third state data, wherein the first state change method and the second state change method are associated with a first control register in the graphics processing pipeline; reading the first state data from the memory; determining that the first state data does not match the third state data; writing the third state data to the memory; and transmitting the third state data to the graphics processing pipeline to change the state of the graphics processing pipeline from the second state to the third state.
Claim: 9. The method of claim 1 , further comprising determining that space has been allocated in the memory for the first state change method; and storing the first state data in the memory.
Claim: 10. The method of claim 1 , storing the second state data in a control register within the graphics processing pipeline.
Claim: 11. The method of claim 1 , further comprising: receiving a third state change method to invoke a macro program in a method macro expander; executing a method macro expander program instruction to read the first state data from the memory; and generating and transmitting one or more commands to the graphics processing pipeline based on the first state data.
Claim: 12. The method of claim 1 , wherein the first state change method specifies wildcard data that are stored in the memory and are not transmitted to the graphics processing pipeline.
Claim: 13. The method of claim 1 , wherein transmitting the first state data from the memory to the graphics processing pipeline further comprises: receiving an incoming method; replacing third state data included in the incoming method with the first state data stored in the memory; and converting the incoming method to a control register write including control register data that is based on the first state data.
Claim: 14. A non-transitory computer-readable storage medium storing instructions that, when executed by a processor, change the state of a graphics processing pipeline, by performing the steps of: storing first state data associated with a first state change method in a memory included in a front end of a graphics processing unit (GPU); transmitting the first state data to the graphics processing pipeline to change the state of the graphics processing pipeline to a first state; receiving, by the front end, a second state change method that includes second state data; transmitting the second state data to the graphics processing pipeline, while the first state data is maintained in the memory of the front end, to change the state of the graphics processing pipeline from the first state to a second state, wherein the second state data is not written into the memory of the front end; and after transmitting the second state data, transmitting the first state data from the memory of the front end to the graphics processing pipeline to change the state of the graphics processing pipeline from the second state back to the first state.
Claim: 15. A graphics processing unit (GPU) comprising: a graphics processing pipeline; and a front end configured to be switched between different modes of operation including a first mode, a second mode, and a third mode, wherein the front end operating in the first mode causes first state data for the graphics processing pipeline to be transmitted to the graphics processing pipeline to change the state thereof after storing the first state data in a memory of the front end, wherein the front end operating in the second mode causes second state data for the graphics processing pipeline to be transmitted to the graphics processing pipeline, while the first state data is maintained in the memory of the front end, to change the state of the graphics processing pipeline without storing the second state data in the memory of the front end, and wherein the front end operating in the third mode causes state data for the graphics processing pipeline to be changed based on data stored in the memory of the front end.
Claim: 16. The system of claim 15 , wherein the front end is further configured to: operate in a fourth mode, wherein the front end operating in the fourth mode determines that received state data for the graphics processing pipeline matches state data stored in the memory and, in response to the determination, maintains the state data stored in the memory without transmitting the received state data.
Claim: 17. The system of claim 15 , wherein the memory stores sets of state data and each set of the state data is a copy of a different state used by the graphics processing pipeline.
Claim: 18. The system of claim 15 , wherein the front end is further configured to: operate in a fourth mode wherein the front end operating in the fourth mode determines that received state data for the graphics processing pipeline does not match state data stored in the memory and, in response to the determination, writes the received state data to the memory and transmits the received state data to the graphics processing pipeline.
Claim: 19. The system of claim 15 , wherein the front end is further configured to, when the front end is operating in the first mode, determine that space has been allocated in the memory for the first state data before storing the first state data in the memory.
Patent References Cited: 4355389 October 1982 Sato et al.
5155822 October 1992 Doyle et al.
6104415 August 2000 Gossett
6115054 September 2000 Giles
6208361 March 2001 Gossett
6462743 October 2002 Battle
6934832 August 2005 Van Dyke et al.
2006/0152509 July 2006 Heirich
2007/0230369 October 2007 McAlpine
2008/0007563 January 2008 Aronson et al.
2008/0252647 October 2008 Rai et al.
2008/0256455 October 2008 Della Ripa et al.
Assistant Examiner: Mazumder, Tapas
Primary Examiner: Thompson, James A
Attorney, Agent or Firm: Artegis Law Group, LLP
رقم الانضمام: edspgr.09401004
قاعدة البيانات: USPTO Patent Grants