IP Library Granted Patent US 11,449,963
Granted Patent B1
US 11,449,963 · App. 17/184,417 · Granted Sep 20, 2022

Virtual graphics processing with remote execution

Inventors: Dean J. Beeler (Dana Point, CA); David A. McCloskey (Sacramento, CA)
Assignee: Juice Technologies, Inc.
G06T1/20G06F9/5083G06F9/541G06T1/60H04L67/01H04L67/568
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 11,449,963
App. No.
17/184,417
Granted
Sep 20, 2022
Kind
B1
Abstract

A method is described for processing commands for a client computing device using a remote graphics processing unit server. The method includes receiving, by a display driver of the client computing device, a command from an application operating on the client computing device and compressing, by the display driver, the command to generate a compressed command. Compressing the command includes determining whether a resource associated with the command is available in a cache of the remote graphics processing unit server and replacing the resource with a reference to the resource, when the resource is available. The display driver transmits the compressed command to the remote graphics processing unit server for processing by a remote graphics processing unit (GPU) and receives data generated by the remote GPU based on processing the compressed command.

Claims (65)

1. A method for processing commands for a client computing device using a remote graphics processing unit server, the method comprising:

receiving, by a display driver of the client computing device, a command from an application operating on the client computing device;

compressing, by the display driver, the command to generate a compressed command, wherein compressing the command includes:

determining whether a resource associated with the command is available in a cache of the remote graphics processing unit server, and

replacing the resource with a reference to the resource, when the resource is available;

transmitting, by the display driver, the compressed command to the remote graphics processing unit server for processing by a remote graphics processing unit (GPU); and

receiving, by the display driver, data generated by the remote GPU based on processing the compressed command.

2. The method of claim 1 , wherein the client computing device maintains a list of resources available in the cache of the remote graphics processing unit server; and

wherein the method further comprises:

setting the command, which includes the resource, as the compressed command, in response to determining that the resource of the command is unavailable in the cache of the remote GPU server, and

updating the list of resources available in the cache of the remote GPU server in response to transmitting the resource to the remote GPU server in the compressed command.

3. The method of claim 1 , further comprising:

converting, by the display driver, the command from a first language to a second language,

wherein the command in the second language is compressed to generate the compressed command, and

wherein the second language is a derivative of the Vulkan application programming interface, including synchronization elements to enable remote execution.

4. The method of claim 1 , further comprising:

generating, by the display driver, a cache request that includes one or more of (1) an application identifier of the application, (2) a user identifier of a user of the application, (3) a list of resource identifiers, and (4) a minimal save time of resources in a memory of the remote GPU server; and

transmitting, by the display driver, the cache request to the remote GPU server, such that the remote GPU server is to maintain a resource cache based on the cache request.

5. The method of claim 4 , further comprising:

receiving, by the client computing device, one or more of (1) a list of resources that were not identified by the cache request but were included in the resource cache of the remote GPU server, (2) a list of resources that were identified by the cache request but were not included in the resource cache of the remote GPU server, and (3) a list of resources that are included in the resources cache of the remote GPU server; and

receiving, by the client computing device, an actual minimal save time of resources in the memory of the remote GPU server.

6. The method of claim 5 , wherein one or more resources included in the resource cache of the remote GPU server are included in a cache pack, which includes a plurality of resources.

7. The method of claim 6 , wherein the cache pack represents one or more of (1) resources that are commonly used by multiple applications, including the application, (2) resources that are commonly used by the application, and (3) resources that are commonly used by the application when the user is operating the application.

8. A client computing device that utilizes a remote graphics processing unit server to process commands, the client computing device comprises:

one or more memories; and

a processor coupled to the one or more memories, wherein the one or more memories include instructions that, when executed by the processor, cause the client computing device to:

receive, by a display driver of the client computing device, a command from an application operating on the client computing device,

compress, by the display driver, the command to generate a compressed command, wherein compressing the command includes:

determining whether a resource associated with the command is available in a cache of the remote graphics processing unit server, and

replacing the resource with a reference to the resource, when the resource is available,

transmit, by the display driver, the compressed command to the remote graphics processing unit server for processing by a remote graphics processing unit (GPU), and

receive, by the display driver, data generated by the remote GPU based on processing the compressed command.

9. The client computing device of claim 8 , wherein the client computing device maintains a list of resources available in the cache of the remote graphics processing unit server; and

wherein the instructions, when executed by the processor, further cause the client computing device to:

set the command, which includes the resource, as the compressed command, in response to determining that the resource of the command is unavailable in the cache of the remote GPU server, and

update the list of resources available in the cache of the remote GPU server in response to transmitting the resource to the remote GPU server in the compressed command.

10. The client computing device of claim 8 , wherein the instructions, when executed by the processor, further cause the client computing device to:

convert, by the display driver, the command from a first language to a second language,

wherein the command in the second language is compressed to generate the compressed command, and

wherein the second language is a derivative of the Vulkan application programming interface, including synchronization elements to enable remote execution.

11. The client computing device of claim 8 , wherein the instructions, when executed by the processor, further cause the client computing device to:

generate, by the display driver, a cache request that includes one or more of (1) an application identifier of the application, (2) a user identifier of a user of the application, (3) a list of resource identifiers, and (4) a minimal save time of resources in a memory of the remote GPU server; and

transmit, by the display driver, the cache request to the remote GPU server, such that the remote GPU server is to maintain a resource cache based on the cache request.

12. The client computing device of claim 11 , wherein the instructions, when executed by the processor, further cause the client computing device to:

receive one or more of (1) a list of resources that were not identified by the cache request but were included in the resource cache of the remote GPU server, (2) a list of resources that were identified by the cache request but were not included in the resource cache of the remote GPU server, and (3) a list of resources that are included in the resources cache of the remote GPU server; and

receive an actual minimal save time of resources in the memory of the remote GPU server.

13. The client computing device of claim 12 , wherein one or more resources included in the resource cache of the remote GPU server are included in a cache pack, which includes a plurality of resources.

14. The client computing device of claim 13 , wherein the cache pack represents one or more of (1) resources that are commonly used by multiple applications, including the application, (2) resources that are commonly used by the application, and (3) resources that are commonly used by the application when the user is operating the application.

15. A method for a remote graphics processing unit (GPU) server to execute commands for a client computing device, the method comprising:

receiving, by the remote GPU server, a command from the client computing device, wherein the command is generated by an application running on the client computing device;

receiving, by the remote GPU server from the client computing device, one of a resource and a reference to the resource, in response to receiving the resource, the resource is processed by a remote GPU of the remote GPU server according to the command;

in response to receiving the reference to the resource, fetching, by the remote GPU server, the resource from a server resource cache of the remote GPU server;

executing, by the remote GPU of the remote GPU server, the command using the resource to generate data; and

transmitting, by the remote GPU server, the data to the client computing device.

16. The method of claim 15 , further comprising:

in response to receiving the resource, storing, by the remote GPU server, the resource in the server resource cache for use in executing later commands.

17. The method of claim 15 , further comprising:

compressing, by the remote GPU server, the data before transmission to the client computing device.

18. The method of claim 15 , further comprising:

receiving, by the remote GPU server from the client computing device, a cache request that includes one or more of (1) an application identifier of the application, (2) a user identifier of a user of the application, (3) a list of resource identifiers, and (4) a minimal save time of resources in a memory of the remote GPU server,

fetching, by the remote GPU server, a set of resources from a cache server based on the cache request; and

storing, by the remote GPU server, the set of resources in the server resource cache.

19. The method of claim 18 , wherein the set of resources are included in a cache pack, which includes a plurality of resources, and

wherein the cache pack represents one or more of (1) resources that are commonly used by multiple applications, including the application, (2) resources that are commonly used by the application, and (3) resources that are commonly used by the application when the user is operating the application.

20. The method of claim 15 , wherein the reference to the resource is a hash computed on one or more blocks of the resource.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 25, 2021
From: BEELER, DEAN J.; MCCLOSKEY, DAVID A.
To: JUICE TECHNOLOGIES, INC.
Reel/Frame 055417/0330 →
Continuity (1)
Provisional Application 62980542 · Feb 24, 2020
Cited By (7)
US 12,229,605 US 12,260,263 US 12,265,480 US 12,287,872 US 12,405,838 US 12,596,657 US 12,608,227