Multithreaded kernel for graphics processing unit
First Claim
1. An apparatus for supporting scheduling of tasks for processing by a coprocessor, comprising:
- a graphics coprocessor;
one or more applications that generate rendering tasks for processing by the coprocessor, wherein the rendering tasks are first stored in a user mode command buffer, and wherein the rendering tasks are stored in a per-application context in the user mode command buffer; and
a scheduler process that;
determines an order in which the rendering tasks are processed,wherein the order accounts for any relative priority among a first application context relating to a first set of rendering tasks and one or more other application contexts relating to additional rendering tasks,wherein the order accounts for a corresponding amount of processing time to which the first application and the one or more other applications are entitled, andwherein the order is determined solely by the scheduler process; and
determines that there is insufficient supplemental memory to process a first rendering task from among the rendering tasks, and,in response splits a buffer comprising rendering commands associated with the first rendering task by storing a first subset of a plurality of memory resources associated with the first rendering task in a first buffer and storing a second subset of the plurality of memory resources associated with the first rendering task in a second buffer.
1 Assignment
0 Petitions
Accused Products
Abstract
Systems and methods are provided for scheduling the processing of a coprocessor whereby applications can submit tasks to a scheduler, and the scheduler can determine how much processing each application is entitled to as well as an order for processing. In connection with this process, tasks that require processing can be stored in physical memory or in virtual memory that is managed by a memory manager. The invention also provides various techniques of determining whether a particular task is ready for processing. A “run list” may be employed to ensure that the coprocessor does not waste time between tasks or after an interruption. The invention also provides techniques for ensuring the security of a computer system, by not allowing applications to modify portions of memory that are integral to maintaining the proper functioning of system operations.
82 Citations
34 Claims
-
1. An apparatus for supporting scheduling of tasks for processing by a coprocessor, comprising:
-
a graphics coprocessor; one or more applications that generate rendering tasks for processing by the coprocessor, wherein the rendering tasks are first stored in a user mode command buffer, and wherein the rendering tasks are stored in a per-application context in the user mode command buffer; and a scheduler process that; determines an order in which the rendering tasks are processed, wherein the order accounts for any relative priority among a first application context relating to a first set of rendering tasks and one or more other application contexts relating to additional rendering tasks, wherein the order accounts for a corresponding amount of processing time to which the first application and the one or more other applications are entitled, and wherein the order is determined solely by the scheduler process; and determines that there is insufficient supplemental memory to process a first rendering task from among the rendering tasks, and, in response splits a buffer comprising rendering commands associated with the first rendering task by storing a first subset of a plurality of memory resources associated with the first rendering task in a first buffer and storing a second subset of the plurality of memory resources associated with the first rendering task in a second buffer. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A method of scheduling of tasks for processing by a graphics coprocessor, comprising:
-
generating, by one or more applications, rendering tasks for processing by the graphics coprocessor; storing, in a per-application context, the one or more rendering tasks in a user mode command buffer; determining, solely by a scheduler process, an order in which the rendering tasks are processed, wherein the order accounts for any relative priority among a first application context relating to a first set of rendering tasks and one or more other application contexts relating to additional rendering tasks, and wherein the order accounts for a corresponding amount of processing time to which the first application and the one or more other applications are entitled; determining that there is insufficient supplemental memory to process a first rendering task from among the rendering tasks; and in response to determining that there is insufficient supplemental memory to process the first rendering task, splitting a buffer comprising rendering commands associated with the first rendering task by storing a first subset of a plurality of memory resources associated with the first rendering task in a first buffer and storing a second subset of the plurality of memory resources associated with the first rendering task in a second buffer. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19, 20, 21, 22)
-
-
23. A computer memory comprising computer-executable instructions for scheduling tasks for processing by a graphics coprocessor, the computer-executable instructions comprising instructions for:
-
generating, by one or more applications, rendering tasks for processing by the graphics coprocessor; storing, in a per-application context, the one or more rendering tasks in a user mode command buffer; determining, solely by a scheduler process, an order in which the rendering tasks are processed, wherein the order accounts for any relative priority among a first application context relating to a first set of rendering tasks and one or more other application contexts relating to additional rendering tasks, and wherein the order accounts for a corresponding amount of processing time to which the first application and the one or more other applications are entitled; determining that there is insufficient supplemental memory to process a first rendering task from among the rendering tasks; and in response to determining that there is insufficient supplemental memory to process the first rendering task, splitting a buffer commands associated with the first rendering task by storing a first subset of a plurality of memory resources associated with the first rendering task into a first buffer and storing a second subset of the plurality of memory resources associated with the first rendering task into a second buffer. - View Dependent Claims (24, 25, 26, 27, 28, 29, 30, 31, 32, 33)
-
-
34. A computing device comprising computer-executable instructions for scheduling tasks for processing by a graphics coprocessor, the computer-executable instructions comprising instructions for:
-
generating, by one or more applications, rendering tasks for processing by the graphics coprocessor; storing, in a per-application context, the one or more rendering tasks in a user mode command buffer; determining, solely by a scheduler process, an order in which the rendering tasks are processed, wherein the order accounts for any relative priority among a first application context relating to a first set of rendering tasks and one or more other application contexts relating to additional rendering tasks, and wherein the order accounts for a corresponding amount of processing time to which the first application and the one or more other applications are entitled; determining that there is insufficient supplemental memory to process a first rendering task from among the rendering tasks; and in response to determining that there is insufficient supplemental memory to process the first rendering task, splitting a buffer commands associated with the first rendering task by storing a first subset of a plurality of memory resources associated with the first rendering task into a first buffer and storing a second subset of the plurality of memory resources associated with the first rendering task into a second buffer.
-
Specification