US2011063304A1PendingUtilityA1

Co-processing synchronizing techniques on heterogeneous graphics processing units

Assignee: NVIDIA CORPPriority: Sep 16, 2009Filed: Dec 29, 2009Published: Mar 17, 2011
Est. expirySep 16, 2029(~3.1 yrs left)· nominal 20-yr term from priority
G06F 9/455
55
PatentIndex Score
0
Cited by
0
References
0
Claims

Abstract

The graphics co-processing technique includes receiving display operation for execution by a graphics processing unit on an unattached adapter. The display operation is split into a copy from a frame buffer of the graphics processing unit on the unattached adapter to a buffer in system memory, a copy from the buffer in system memory to a frame buffer of graphics processing unit on a primary adapter, and a present from the frame buffer of the graphics processing unit on the primary adapter to a display. Execution of the copy from the frame buffer of the graphics processing unit on the unattached adapter to the buffer in system memory and the copy from the buffer in system memory to the frame buffer of the graphics processing unit on the primary adapter are synchronized.

Claims

exact text as granted — not AI-modified
What is claimed is: 
     
         1 . A method comprising:
 injecting an application initialization routine, when an application starts, that includes an entry point that changes a search path for a display device interface to a search path of a shim layer library, and that includes an entry point that identifies the application;   loading the shim layer library, at the changed search path, that initializes a display device interface for a first graphics processing unit on a primary adapter and a display device interface for a second graphics processing unit on an unattached adapter, wherein the display device interface on the unattached adapter is initialized without calling back to a runtime application programming interface, and that determines if the application has an affinity for execution of graphics commands on the second graphics processing unit;   splitting a display command, by the shim layer library, into a copy from a frame buffer of the second graphics processing unit to a buffer in system memory, a copy from the buffer in system memory to a frame buffer of the first graphics processing unit, and a present from the frame buffer of the first graphics processing unit on a display if there is an affinity.   
     
     
         2 . The method according to  claim 1 , wherein the display device driver interface on the primary adapter comprises a user mode driver dynamic linked library (UMD.dll) for the first graphic processing unit. 
     
     
         3 . The method according to  claim 1 , wherein the display device driver interface on the unattached adapter comprises a user mode driver dynamic linked library (UMD.dll) for the second graphic processing unit. 
     
     
         4 . The method according to  claim 1 , wherein the application initialization routine comprises a dynamic linked library. 
     
     
         5 . The method according to  claim 1 , wherein the runtime application programming interface comprises a DirectX application programming interface (D3Dx.dll). 
     
     
         6 . The method according to  claim 1 , wherein the first graphics processing unit comprises an integrated graphics processing unit. 
     
     
         7 . The method according to  claim 1 , wherein the second graphics processing unit comprises a discrete graphics processing unit. 
     
     
         8 . The method according to  claim 1 , wherein the first graphics processing unit and the second graphics processing unit are heterogeneous graphics processing units. 
     
     
         9 . The method according to  claim 1 , wherein the shim layer library determines if the application has an affinity if the application is on a white list. 
     
     
         10 . The method according to  claim 9 , wherein the white list includes the identifier of one or more applications that perform better on the second graphics processing unit than the first graphics processing unit. 
     
     
         11 . One or more computing device readable media having computing device executable instructions which when executed perform a method comprising:
 receiving a display operation for execution by a graphics processing unit on an unattached adapter;   splitting the display operation into a copy from a frame buffer of the graphics processing unit on the unattached adapter to a buffer in system memory, a copy from the buffer in system memory to a frame buffer of graphics processing unit on a primary adapter, and a present from the frame buffer of the graphics processing unit on the primary adapter to a display; and   synchronizing execution of the copy from the frame buffer of the graphics processing unit on the unattached adapter to the buffer in system memory and the copy from the buffer in system memory to the frame buffer of the graphics processing unit on the primary adapter.   
     
     
         12 . The one or more computing device readable media having computing device executable instructions which when executed perform the method of  claim 11 , wherein the frame buffer of the graphics processing unit on the unattached adapter is double buffered. 
     
     
         13 . The one or more computing device readable media having computing device executable instructions which when executed perform the method of  claim 11 , wherein the frame buffer of the graphics processing unit on the primary adapter is double buffered. 
     
     
         14 . The one or more computing device readable media having computing device executable instructions which when executed perform the method of  claim 11 , wherein the system memory is double buffered. 
     
     
         15 . The one or more computing device readable media having computing device executable instructions which when executed perform the method of  claim 11 , wherein the system memory is ring buffered. 
     
     
         16 . The one or more computing device readable media having computing device executable instructions which when executed perform the method of  claim 11 , wherein the graphics processing unit on the primary adapter and the graphics processing unit on the unattached adapter are heterogeneous graphics processing units. 
     
     
         17 . One or more computing device readable media having computing device executable instructions which when executed perform a method comprising:
 loading a device specific kernel mode driver of a second graphics processing unit tagged as a non-graphics device;   loading and initializing a device driver interface and a device specific kernel mode driver for a first graphics processing unit on a primary adapter; and   loading and initializing a device driver interface for the second graphics processing unit on a non-graphics device tagged adapter without the device driver interface talking back to a runtime application programming interface when a particular version of an operating system will not allow the device specific kernel mode driver for the second graphics processing unit to be loaded;   splitting a display command into a copy from a frame buffer of the second graphics processing unit to a buffer in system memory, a copy from the buffer in system memory to a frame buffer of the first graphics processing unit, and a present from the frame buffer of the first graphics processing unit on a display on the primary adapter;   calling the display device interface on the unattached adapter to configure command buffers to copy from the frame buffer of the second graphics processing unit to the buffer in the system memory, when the graphics command comprises a display command;   calling the operating system kernel mode driver to schedule execution of the command buffers for the copy from the frame buffer of the second graphics processing unit to the buffer in system memory, when the graphics command comprises a display command;   calling the device specific kernel mode driver to set command registers of the second graphics processing unit to copy from the frame buffer of the second graphics processing unit to the buffer in system memory, when the graphics command comprises a display command;   calling the display device interface on the primary adapter to configure command buffers to copy from the buffer in system memory to a frame buffer of the first graphics processing unit, when the graphics command comprises a display command;   calling the operating system kernel mode driver to schedule execution of the copy from the buffer in system memory to the frame buffer of the first graphics processing unit, when the graphics command comprises a display command;   calling the device specific kernel mode driver to set command registers of the first graphics processing unit for the copy from the buffer in system memory to the frame buffer of the first graphics processing unit, when the graphics command comprises a display command;   calling the display device interface on the unattached adapter to configure command buffers to present from the frame buffer of the first graphics processing unit, when the graphics command comprises a display command;   calling the operating system kernel mode driver to schedule execution of the present command, when the graphics command comprises a display command; and   calling to set command registers of the first graphics processing unit to present, when the graphics command comprises a display command.   
     
     
         18 . The one or more computing device readable media having computing device executable instructions which when executed perform the method of  claim 17 , wherein the copy from the frame buffer of the second graphics processing unit to the system memory and the copy from the system memory to a frame buffer of the first graphics processing unit are direct memory accesses. 
     
     
         19 . The one or more computing device readable media having computing device executable instructions which when executed perform the method of  claim 17 , further comprising synchronizing sequential execution of the copy from the frame buffer of the second graphics processing unit to the system memory and the copy from the system memory to a frame buffer of the first graphics processing unit. 
     
     
         20 . The one or more computing device readable media having computing device executable instructions which when executed perform the method of  claim 19 , wherein synchronizing sequential execution of the copy from the frame buffer of the second graphics processing unit to the system memory and the copy from the system memory to a frame buffer of the first graphics processing unit comprises:
 receiving notification when the copy from the frame buffer of the second graphics processing unit to the system memory is done, in a separate thread from a thread for the render and display commands; and   queuing calling the display device interface on the primary adapter to configure command buffers to copy from the system memory to the frame buffer of the first graphics processing unit and calling the display device interface on the unattached adapter to configure command buffers to present after receiving notification when the copy from the frame buffer of the second graphics processing unit to the system memory is done.

Join the waitlist — get patent alerts

Track US2011063304A1 — get alerts on status changes and closely related new filings.

We store only your email — no account needed. See our privacy policy.