IP Library › Granted Patent US 9,230,518
Granted Patent B2
US 9,230,518 · App. 14/023,170 · Granted Jan 5, 2016

Fault-tolerant preemption mechanism at arbitrary control points for graphics processing

Inventors: Christopher Paul Frascati (Oviedo, FL); Murat Balci (Orlando, FL); Avinash Seetharamaiah (Chuluota, FL); Andrew Evan Gruber (Arlington, MA); Alexei Vladimirovich Bourd (San Diego, CA)
Assignee: QUALCOMM Incorporated
G09G5/399G06F9/46G06T1/20G06T1/60
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,230,518
App. No.
14/023,170
Granted
Jan 5, 2016
Kind
B2
Abstract

This disclosure presents techniques and structures for preemption at arbitrary control points in graphics processing. A method of graphics processing may comprise executing commands in a command buffer, the commands operating on data in a read-modify-write memory resource, double buffering the data in the read-modify-write memory resource, such that a first buffer stores original data of the read-modify-write memory resource and a second buffer stores any modified data produced by executing the commands in the command buffer, receiving a request to preempt execution of the commands in the command buffer before completing all commands in the command buffer, and restarting execution of the commands at the start of the command buffer using the original data in the first buffer.

Claims (91)

1. A method of graphics processing, the method comprising:

executing commands in a command buffer for a graphics processing unit, the commands operating on data in a read-modify-write memory resource;

storing, in a first buffer, original data of the read-modify-write memory resource;

storing, in a second buffer, any modified data produced by executing the commands in the command buffer;

preempting execution of the commands in the command buffer before completing all commands in the command buffer; and

after preempting execution, restarting execution of the commands at the start of the command buffer using the original data in the first buffer.

2. The method of claim 1 , further comprising:

tracking completion of the commands in the command buffer.

3. The method of claim 1 , further comprising:

storing the command buffer in a memory; and

executing commands in a secondary command buffer in response preempting execution of the commands in the command buffer.

4. The method of claim 1 , further comprising preempting the execution of the commands in response to a request to preempt execution that is received from software executing on a central processing unit.

5. The method of claim 4 , wherein the software includes a graphics driver.

6. The method of claim 1 , wherein the read-modify-write memory resource is a frame buffer, and wherein the first buffer is a copy of the frame buffer for a previous frame and the second buffer is a current frame buffer.

7. The method of claim 1 , further comprising:

tracking a number of times the command buffer is preempted;

refusing preemption in the case that the number of times the command buffer is preempted exceeds a threshold; and

allowing preemption in the case that the number of times the command buffer is preempted is below the threshold.

8. An apparatus configured for graphics processing, the apparatus comprising:

one or more processors configured to:

execute commands in a command buffer for a graphics processing unit, the commands operating on data in a read-modify-write memory resource;

store, in a first buffer, original data of the read-modify-write memory resource;

store, in a second buffer, any modified data produced by executing the commands in the command buffer;

preempt execution of the commands in the command buffer before completing all commands in the command buffer; and

after preempting execution, restart execution of the commands at the start of the command buffer using the original data in the first buffer.

9. The apparatus of claim 8 , wherein the one or more processors are further configured to:

track completion of the commands in the command buffer.

10. The apparatus of claim 8 , wherein the one or more processors are further configured to:

store the command buffer in a memory; and

execute commands in a secondary command buffer in response preempting execution of the commands in the command buffer.

11. The apparatus of claim 8 , wherein the one or more processors are further configured to preempt the execution of the commands in response to a request to preempt execution that is received from software executing on a central processing unit.

12. The apparatus of claim 11 , wherein the software includes a graphics driver.

13. The apparatus of claim 8 , wherein the read-modify-write memory resource is a frame buffer, and wherein the first buffer is a copy of the frame buffer for a previous frame and the second buffer is a current frame buffer.

14. The apparatus of claim 8 , wherein the one or more processors are further configured to:

track a number of times the command buffer is preempted;

refuse preemption in the case that the number of times the command buffer is preempted exceeds a threshold; and

allow preemption in the case that the number of times the command buffer is preempted is below the threshold.

15. An apparatus configured for graphics processing, the apparatus comprising:

means for executing commands in a command buffer for a graphics processing unit, the commands operating on data in a read-modify-write memory resource;

means for storing, in a first buffer, original data of the read-modify-write memory resource;

means for storing, in a second buffer, any modified data produced by executing the commands in the command buffer;

means for preempting execution of the commands in the command buffer before completing all commands in the command buffer; and

after preempting execution, means for restarting execution of the commands at the start of the command buffer using the original data in the first buffer.

16. The apparatus of claim 15 , further comprising:

means for tracking completion of the commands in the command buffer.

17. The apparatus of claim 15 , further comprising:

means for storing the command buffer in a memory; and

means for executing commands in a secondary command buffer in response preempting execution of the commands in the command buffer.

18. The apparatus of claim 15 , further comprising means for preempting the execution of the commands in response to a request to preempt execution that is received from software executing on a central processing unit.

19. The apparatus of claim 18 , wherein the software includes a graphics driver.

20. The apparatus of claim 15 , wherein the read-modify-write memory resource is a frame buffer, and wherein the first buffer is a copy of the frame buffer for a previous frame and the second buffer is a current frame buffer.

21. The apparatus of claim 15 , further comprising:

means for tracking a number of times the command buffer is preempted;

means for refusing preemption in the case that the number of times the command buffer is preempted exceeds a threshold; and

means for allowing preemption in the case that the number of times the command buffer is preempted is below the threshold.

22. A non-transitory computer-readable storage medium storing instructions that, when executed, cause one or more processors of a device for graphics processing to:

execute commands in a command buffer for a graphics processing unit, the commands operating on data in a read-modify-write memory resource;

store, in a first buffer, original data of the read-modify-write memory resource;

store, in a second buffer, any modified data produced by executing the commands in the command buffer;

preempt execution of the commands in the command buffer before completing all commands in the command buffer; and

after preempting execution, restart execution of the commands at the start of the command buffer using the original data in the first buffer.

23. The non-transitory computer-readable storage medium of claim 22 , wherein the instructions further cause the one or more processors to:

track completion of the commands in the command buffer.

24. The non-transitory computer-readable storage medium of claim 22 , wherein the instructions further cause the one or more processors to:

store the command buffer in a memory; and

execute commands in a secondary command buffer in response preempting execution of the commands in the command buffer.

25. The non-transitory computer-readable storage medium of claim 22 , wherein the instructions further cause the one or more processors to preempt the execution of the commands in response to a request to preempt execution that is received from software executing on a central processing unit.

26. The non-transitory computer-readable storage medium of claim 25 , wherein the software includes a graphics driver.

27. The non-transitory computer-readable storage medium of claim 22 , wherein the read-modify-write memory resource is a frame buffer, and wherein the first buffer is a copy of the frame buffer for a previous frame and the second buffer is a current frame buffer.

28. The non-transitory computer-readable storage medium of claim 22 , wherein the instructions further cause the one or more processors to:

track a number of times the command buffer is preempted;

refuse preemption in the case that the number of times the command buffer is preempted exceeds a threshold; and

allow preemption in the case that the number of times the command buffer is preempted is below the threshold.

29. A graphics processing unit configured to:

execute commands in a command buffer for a graphics processing unit, the commands operating on data in a read-modify-write memory resource;

store, in a first buffer, original data of the read-modify-write memory resource;

store, in a second buffer, any modified data produced by executing the commands in the command buffer;

preempt execution of the commands in the command buffer before completing all commands in the command buffer; and

after preempting execution, restart execution of the commands at the start of the command buffer using the original data in the first buffer.

30. The graphics processing unit of claim 29 , further configured to:

track completion of the commands in the command buffer.

31. The graphics processing unit of claim 29 , further configured to:

store the command buffer in a memory; and

execute commands in a secondary command buffer in response preempting execution of the commands in the command buffer.

32. The graphics processing unit of claim 29 , further configured to preempt the execution of the commands in response to a request to preempt execution that is received from software executing on a central processing unit.

33. The graphics processing unit of claim 32 , wherein the software includes a graphics driver.

34. The graphics processing unit of claim 29 , wherein the read-modify-write memory resource is a frame buffer, and wherein the first buffer is a copy of the frame buffer for a previous frame and the second buffer is a current frame buffer.

35. The graphics processing unit of claim 29 , further configured to:

track a number of times the command buffer is preempted;

refuse preemption in the case that the number of times the command buffer is preempted exceeds a threshold; and

allow preemption in the case that the number of times the command buffer is preempted is below the threshold.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 10, 2013
From: FRASCATI, CHRISTOPHER PAUL; BALCI, MURAT; SEETHARAMAIAH, AVINASH; GRUBER, ANDREW EVAN; BOURD, ALEXEI VLADIMIROVICH
To: QUALCOMM INCORPORATED
Reel/Frame 031177/0827 →
Continuity (1)
Related Publication 20150070369A1 · Mar 12, 2015