IP Library Granted Patent US 10,424,043
Granted Patent B1
US 10,424,043 · App. 16/025,718 · Granted Sep 24, 2019

Efficiently enqueuing workloads from user mode to hardware across privilege domains

Inventors: Joseph Koston (Folsom, CA); Ankur Shah (Folsom, CA); Murali Ramadoss (Folsom, CA); Jeffery Boles (Folsom, CA); Balaji Vembu (Folsom, CA)
Assignee: Intel Corporation
G06T1/20G06F9/505G06F21/74G06T1/60G06T15/005G09G5/363
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 10,424,043
App. No.
16/025,718
Granted
Sep 24, 2019
Kind
B1
Abstract

Graphics processing systems and methods are described. A graphics processing apparatus may comprise one or more graphics processing cores, a shared buffer accessible to a user mode driver (UMD) associated with an application in an unprivileged domain, the UMD to write one or more commands to the shared buffer, and a controller parse a workload in the shared buffer to identify one or more commands in the workload, the workload added by the application executing in the unprivileged domain, associate a trigger with a command in the workload, transfer the workload to one or more components of the graphics processing apparatus for execution, and upon execution of the command associated with the trigger, sample the shared buffer to identify a new workload added to the shared buffer. The one or more components of the graphics processing apparatus automatically execute the new workload added to the shared buffer.

Claims (47)

1. A system comprising:

a processing device to execute an application in an unprivileged domain;

a graphics processing apparatus comprising:

one or more graphics processing cores;

a shared buffer accessible to a user mode driver (UMD) associated with the application, the UMD to write one or more commands to the shared buffer;

a controller to:

parse a workload in the shared buffer to identify one or more commands in the workload, the workload added by the application executing in the unprivileged domain;

associate a trigger with a command in the workload;

transfer the workload, including a head value and a tail value associated with the workload, to one or more components of the graphics processing apparatus for execution;

upon execution of the command associated with the trigger, sample the shared buffer to identify a new workload added to the shared buffer, including to identify a new tail value corresponding to a last command of the new workload; and

associate a new trigger with a new command in the new workload, the new command selected using a trigger heuristic based on sampling latency.

2. The system of claim 1 , wherein the one or more components of the graphics processing apparatus automatically execute the new workload added to the shared buffer.

3. The system of claim 1 , the controller is further to:

receive a notification that a workload has been added to the shared buffer in the graphics processing apparatus, the notification received when a context of the graphics processing apparatus is idle.

4. The system of claim 1 , wherein to parse a workload in a shared buffer of a graphics processing apparatus to identify one or more commands in the workload, the workload added by an application executing in an unprivileged domain, the controller is further to:

remove one or more privileged commands from shared buffer prior to transferring the workload to one or more components of the graphics processing apparatus.

5. The system of claim 1 , wherein the controller is further to:

upon executing the last command of the new workload, sample the shared buffer to determine whether any additional workloads have been added.

6. A method comprising:

parsing a workload in a shared buffer of a graphics processing apparatus to identify one or more commands in the workload, the workload added by an application executing in an unprivileged domain;

associating a trigger with a command in the workload;

transferring the workload, including a head value and a tail value associated with the workload, to one or more components of the graphics processing apparatus for execution;

upon execution of the command associated with the trigger, sampling the shared buffer to identify a new workload added to the shared buffer, including to identify a new tail value corresponding to a last command of the new workload; and

associating a new trigger with a new command in the new workload, the new command selected using a trigger heuristic based on sampling latency.

7. The method of claim 6 , wherein the one or more components of the graphics processing apparatus automatically execute the new workload added to the shared buffer.

8. The method of claim 6 , further comprising:

receiving a notification that a workload has been added to the shared buffer in the graphics processing apparatus, the notification received when a context of the graphics processing apparatus is idle.

9. The method of claim 6 , wherein parsing a workload in a shared buffer of a graphics processing apparatus to identify one or more commands in the workload, the workload added by an application executing in an unprivileged domain, further comprises:

removing one or more privileged commands from shared buffer prior to transferring the workload to one or more components of the graphics processing apparatus.

10. The method of claim 6 , further comprising:

upon executing the last command of the new workload, sampling the shared buffer to determine whether any additional workloads have been added.

11. A graphics processing apparatus, comprising:

one or more graphics processing cores;

a shared buffer accessible to a user mode driver (UMD) associated with an application executing in an unprivileged domain, the UMD to write one or more commands to the shared buffer;

a controller to:

parse a workload in the shared buffer to identify one or more commands in the workload, the workload added by the application executing in the unprivileged domain;

associate a trigger with a command in the workload;

transfer the workload, including a head value and a tail value associated with the workload, to one or more components of the graphics processing apparatus for execution;

upon execution of the command associated with the trigger, sample the shared buffer to identify a new workload added to the shared buffer, including to identify a new tail value corresponding to a last command of the new workload; and

associate a new trigger with a new command in the new workload, the new command selected using a trigger heuristic based on sampling latency.

12. The graphics processing apparatus of claim 11 , wherein the one or more components of the graphics processing apparatus automatically execute the new workload added to the shared buffer.

13. The graphics processing apparatus of claim 11 , the controller is further to:

receive a notification that a workload has been added to the shared buffer in the graphics processing apparatus, the notification received when a context of the graphics processing apparatus is idle.

14. The graphics processing apparatus of claim 11 , wherein to parse a workload in a shared buffer of a graphics processing apparatus to identify one or more commands in the workload, the workload added by an application executing in an unprivileged domain, the controller is further to:

remove one or more privileged commands from shared buffer prior to transferring the workload to one or more components of the graphics processing apparatus.

15. The graphics processing apparatus of claim 11 , wherein the controller is further to:

upon executing the last command of the new workload, sample the shared buffer to determine whether any additional workloads have been added.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 31, 2018
From: KOSTON, JOSEPH; SHAH, ANKUR; RAMADOSS, MURALI; BOLES, JEFFERY; VEMBU, BALAJI
To: INTEL CORPORATION
Reel/Frame 046771/0181 →
Cited By (7)
US 12,242,575 US 12,248,564 US 12,253,944 US 12,373,314 US 12,393,677 US 12,524,394 US 12,530,220